Eingabe über SMTP sicher versenden | Formular | PHP
lima-city → Forum → Die eigene Homepage → Sicherheit im Internet
absender
adresse
anforderung
angeben
code
datum
einstieg
eintragen
fehler
feld
form
http
log
nachricht
regeln
sicherheit
sperre
stattfinden
url
zweite sache
-
Moin zusammen,
da ich derzeit an einer Webseite baue, für die ich ein Formular benötige, welches Daten an eine E-Mail Adresse sendet, wollte ich mal hier nachfragen.
Ich habe wenig Ahnung von PHP, nur das Vorweg.
Für mich hat die Sicherheit absolute Priorität!
Also ich habe folgendes Script gefunden, was zumindest nach der Erklärung hin sicher sein soll.
<?php define ('MAILTO', "mail@example.org"); // Empfänger hier eintragen define ('MAILFROM', "Kontaktformular"); // ggfls. Absender hier eintragen define ('CHARSET', "ISO-8859-15"); // Zeichenkodierung ggfls. anpassen $Pflichtfelder = array('Nachricht'); // ggfls. weitere Pflichtfelder angeben $AddHeader = 'Content-Type: text/plain; charset='.CHARSET; if(MAILFROM) $AddHeader .= chr(13).chr(10).'From: '.MAILFROM; if($Formular_abgeschickt = !empty($_POST)) { $Formular_leer = true; set_magic_quotes_runtime(0); $_POST = array_map('Formular_Daten', $_POST); } function Formular_Daten($val) { global $Formular_leer; if(is_array($val)) return array_map('Formular_Daten', $val); if(get_magic_quotes_gpc()) $val = stripslashes($val); if($val = trim($val)) $Formular_leer = false; return $val; } function Formular_Pflichtfelder() { global $Pflichtfelder; $Fehler = ''; foreach ($Pflichtfelder as $Feld) { $key = str_replace(' ','_',$Feld); if(!(isset($_POST[$key]) && trim($_POST[$key])!=='')) { if($Fehler) $Fehler .= '<br />'; $Fehler .= 'Pflichtfeld "' . $Feld . '" nicht ausgefüllt.'; } } return $Fehler; } function Formular_neu($log='.htPOSTdata.txt') { if(file_exists($log) && is_readable($log) && file_get_contents($log) == print_r($_POST,true)) return false; if($handle=@fopen($log, 'w')) { fwrite($handle, print_r($_POST,true)); fclose($handle); } return true; } function Formular_Check() { global $Formular_leer; if($Formular_leer) $Fehler = 'Keine Daten eingetragen.'; elseif(!$Fehler = Formular_Pflichtfelder()) { if(!Formular_neu()) $Fehler = 'Nachricht war bereits verschickt.'; } return $Fehler; } function Formular_Eingabe($Feldname, $def='') { if(isset($_POST[$Feldname]) && $_POST[$Feldname]!=='') echo htmlspecialchars($_POST[$Feldname]); else echo $def; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <title>Kontaktformular</title> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>" /> </head> <body> <h1>Kontakt</h1> <?php if($Formular_abgeschickt) { if($Formular_Fehler = Formular_Check()) echo '<p class="Meldung" id="Fehler">',$Formular_Fehler,'</p>'; elseif(@mail(MAILTO, "Nachricht", print_r($_POST,true), $AddHeader)) echo '<p class="Meldung" id="OK">Nachricht verschickt.</p>'; else echo '<p class="Meldung" id="Fehler">Server-Fehler !</p>'; } ?> <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post" enctype="multipart/form-data" accept-charset="<?php echo CHARSET; ?>"> <fieldset><legend>Kontaktformular</legend> <p> <label for="Name">Ihr Name:</label> <input name="Name" id="Name" size="66" value="<?php Formular_Eingabe('Name'); ?>" /> </p> <p> <label for="Nachricht">Nachricht:</label> <textarea name="Nachricht" id="Nachricht" rows="5" cols="50"><?php Formular_Eingabe('Nachricht'); ?></textarea> </p> <p><input type="submit" value="abschicken" /></p> </fieldset> </form> </body> </html>
Jetzt möchte ich aber das die Daten nicht über den PHP Mailer gehen sondern von einer echten E-Mailadresse hier bei Lima. Es könnten dann nämlich auch über 50 Mails seien.
Zweite Sache die ich gerne verändern würde, wäre eine Sperre. Die sollte eine bestimmte festgelegte Zeit sein, vielleicht über ein Cookie? (1 Woche Sperre)
Checkboxen würde ich gerne auch einbauen, kann ich aber selber machen.
Wenn ihr eine gute Lösung habt, oder auch eine Seite wo dies relativ gut erklärt wird bin ich sehr dankbar darüber.
DANKE für die Unterstützung.
mfg Stephan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich kann dir zwar auch keine Lösung vorschlagen, aber der Weg über Cookies ist nicht sicher, da diese einfach gelöscht werden können.
Wenn überhaupt solltest du einen Cookie anlegen, wenn man berechtigt ist, Mails zu verschicken.
Meiner Meinung nach die sicherste Methode ist es, das Ganze über Benutzer zu regeln und mit MySQL zu überprüfen, wann die letzte Mail versendet wurde. -
Eine Prüfung könnte auch über die IP Adresse stattfinden. Falls die Anforderungen nicht zu hoch sind wären auch kostenlose Homepagetools aus dem Nretz denkbar. Ansonsten gibt es die Datei "selfphp" im Internet als Einstieg in die Programmiersprache.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage