|
|||
Frage zu einem PHP-Formular
Guten Morgen
ich habe eine Frage bezüglich der Erweiterung eines PHP-Formulares. Damit der Inhalt eines Feldes übermittelt wird, muss der nachfolgende Teil in der Skript-Zeile der einzelnen Felder angegeben werden: Code:
value="<?php echo $_POST['email']; ?>"/> Code:
<dl> <dt>E-Mail-Adresse:</dt> <dt><input type="text" name="email" id="email" value="<?php echo $_POST['email']; ?>"/></dt> </dl> Code:
Code:
<dl> <dt>Artikel:</dt> <dt><select name="Artikel"> <option value="Batterien">Batterien</option> <option value="Schokolade">Schokolade</option> <option value="Tageszeitung">Tageszeitung</option> <option value="Aspirin">Aspirin</option> <option value="Notebook">Notebook</option> <option value="Chips">Chips</option> </select></dt> </dl> Code:
<dl> <dt>Welche Hobbys haben Sie?</dt> <dt> <input type="checkbox" name="Hobbys[]" value="Essen" />Essen <input type="checkbox" name="Hobbys[]" value="Trinken" />Trinken <input type="checkbox" name="Hobbys[]" value="Rechnen" />Rechnen <input type="checkbox" name="Hobbys[]" value="Radfahren" />Radfahren <input type="checkbox" name="Hobbys[]" value="Lesen" />Lese <input type="checkbox" name="Hobbys[]" value="Fußball" />Fußball </dt> </dl> Code:
<dl> <dt>Sie sind:</dt> <dt> <input type="radio" name="Geschlecht" value="Mann" />Mann <input type="radio" name="Geschlecht" value="Frau" />Frau </dt> </dl> Code:
<dl> <dt>Sie mögen:</dt> <dt><select name="Lieblingsmusik"><option value="Schlager">Schlager</option><option value="Rock">Rock</option></select></dt> </dl> |
Sponsored Links |
Sponsored Links |
|
|||
Danke für eure Antworten!
Einige Sachen habe ich geändert, aber ein paar Sachen verstehe ich nicht. Vor allem ist das Problem, dass meine ergänzten Felder beziehungsweise das darin eingegeben wurde nicht in die E-Mail ermittelt werden Hier ist das komplette Skript Code:
<?php // Wenn alle Felder ausgefuellt wurden und der Captcha stimmt, wird ein Cookie gesetzt if($_GET['action'] != "" && !empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']) && ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email'])) { setcookie("spam_protection", "spam_protection", time()+500); } // Erstellen einer Rechenaufgabe $Zahl_1 = intval(rand(1, 5)); $Zahl_2 = intval(rand(1, 5)); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-de" lang="de-de" dir="ltr"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <title>Cerberus 101</title> </head> <body> <?php // Wenn das Formular gesendet werden soll... if($_GET['action'] == "send") { // ...der Cookie gegen Spam nicht gesetzt ist... if($_COOKIE["spam_protection"] != "spam_protection") { // ... und die Rechenaufgabe FALSCH geloest wurde... if($_POST['number'] != md5($_POST['arithmetic'])) { // ...dann eine Fehlermeldung ausgeben! echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /><strong>Die Rechenaufgabe wurde falsch gelöst!</strong></p>"; } // Ansonsten, wenn die Rechenaufgabe RICHTIG geloest wurde stimmt... if($_POST['number'] == md5($_POST['arithmetic'])) { // ...und die eingegeben E-Mail Adresse in Wahrheit keine ist... if(!ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email'])) { // ...dann eine Fehlermeldung ausgeben! echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /><strong>Die eingegebene E-Mail-Adresse ist ungültig!</strong></p>"; } // Ansonsten, wenn die eingegebene E-Mail Adresse auch wirklich eine ist... if(ereg ("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $_POST['email'])) { // ...und kein Feld leer ist... if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message'])) { // dann den ganzen Muell von Spambots oder auch menschlichen Spammern entfernen... $name = nl2br(stripslashes(htmlspecialchars($_POST['name']))); $IP = getenv("REMOTE_ADDR"); $absender = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "", $_POST['email'] ); $absender = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $absender ); $nachricht = nl2br(stripslashes(htmlspecialchars($_POST['message']))); // ...die Nachricht, die Sie erhalten moechten, wenn eine neue Nachricht an Sie versandt wurde, definieren... $mailnachricht = "Hallo!\n\nEs ist eine neue Nachricht für Sie eingetroffen:\n\n---------------------------------------------\n\nName:\n$name\n\nIP:\n$IP\n\nE-Mail:\n$absender\n\nProdukt:\n$product\n\nHobbys:\n$Hobbys\n\nGeschlecht:\n$geschlecht\n\nLieblingsmusik:\n$music\n\nNachricht:\n$nachricht\n\n---------------------------------------------\n\nSie koennen dem Absender der Nachricht direkt antworten, indem Sie einfach auf diese E-Mail antworten.\n\nMfG\nBotty ;)"; // ...an Sie verschicken... mail("email@gmx.de", "Neue Nachricht über das Kontaktformular!", $mailnachricht, "From: $name <$absender>"); // ...und dem Benutzer sagen, dass alles glatt lief! echo "<p><img src=\"ok.gif\" width=\"20\" height=\"20\" alt=\"Okay\" /><strong>Vielen Dank für Ihre Nachricht!</strong> Wir lassen Ihnen umgehend eine Antwort zukommen.</p>"; } // Wenn nicht alle Felder ausgefuellt wurden, dann... else { // eine Fehlermeldung ausgeben! echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /><strong>Bitte füllen Sie alle Felder aus!</strong></p>"; } } } } } ?> <form id="form" name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?action=send"> <dl> <dt>Ihr Name:</dt> <dt><input type="text"name="name" id="name" value="<?php echo $_POST['name']; ?>"/></dt> </dl> <dl> <dt>E-Mail-Adresse:</dt> <dt><input type="text" name="email" id="email" value="<?php echo $_POST['email']; ?>"/></dt> </dl> <dl> <dt>Artikel:</dt> <dt><select name="product" id="product"> <option value="Batterien">Batterien</option> <option value="Schokolade">Schokolade</option> <option value="Tageszeitung">Tageszeitung</option> <option value="Aspirin">Aspirin</option> <option value="Notebook">Notebook</option> <option value="Chips">Chips</option> </select></dt> </dl> <dl> <dt>Welche Hobbys haben Sie?</dt> <dt> <input type="checkbox" id="essen" name="Hobbys[]" value="essen" /><label for="essen">Essen</label> <input type="checkbox" id="trinken" name="Hobbys[]" value="trinken" /><label for="trinken">Trinken</label> <input type="checkbox" id="rechnen" name="Hobbys[]" value="rechnen" /><label for="rechnen">Rechnen</label> <input type="checkbox" id="Radfahren" name="Hobbys[]" value="Radfahren" /><label for="Radfahren">Radfahren</label> <input type="checkbox" id="Lesen" name="Hobbys[]" value="Lesen" /><label for="Lesen">Lesen</label> <input type="checkbox" id="sport" name="Hobbys[]" value="sport" /><label for="Johannes">Sport</label> </dt> </dl> <dl> <dt>Sie sind:</dt> <dt> <input type="radio" id="Mann" name="geschlecht" value="Mann"/><label for="Mann">Mann</label> <input type="radio" id="Frau" name="geschlecht" value"Frau"/><label for="Frau">Frau</label> </dt> </dl> <dl> <dt>Sie mögen:</dt> <dt><select name="music" id="music"><option value="Rock">Rock</option><option value="Schlager">Schlager</option></select></dt> </dl> <dl> <dt><strong>Ihre Nachricht</strong></dt> <dt><textarea name="message" id="message" rows="7" cols="64"><?php echo $_POST['message']; ?></textarea></dt> </dl> <dl> <dt><strong>Wieviel ist <?php echo $Zahl_1; ?> plus <?php echo $Zahl_2; ?>?</strong></dt> <dt><input name="number" type="hidden" id="number" value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/></dt> <dt><input name="arithmetic" type="text" id="arithmetic" style="width:186px" onfocus="if(this.value=='Das Ergebnis bitte hier hinein...')this.value=''" onblur="if(this.value=='')this.value='Das Ergebnis bitte hier hinein...'" value="Das Ergebnis bitte hier hinein..."/></dt> </dl> <?php // Wenn KEIN Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button anklickbar sein if($_COOKIE["spam_protection"] != "spam_protection") { ?> <br /> <input name="submit" type="submit" id="submit" value="Senden" /> <input name="reset" type="reset" id="reset" value="Zurücksetzen" /> <?php } // Wenn aber ein Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button blockiert werden if($_COOKIE["spam_protection"] == "spam_protection") { ?> <br /> <input name="submit" type="submit" id="submit" value="Senden" disabled="true" /> <input name="reset" type="reset" id="reset" value="Zurücksetzen" /> <?php } ?> </form> </body> </html> |
|
||||
Du gibts immer Text aus Usereingaben wieder aus, ohne ihn zu prüfen.
Sowas solltest du lieber unterlassen. Dein Stichwort ist "Code-Injection", google mal danach. Ganz böse Sache
__________________
Rettet die Erde.... sie ist der einzige Planet mit Schokolade! |
|
|||
Das ist wirklich eine böse Sache. Damit kann ich irgendwie gar nichts anfangen.
Dieses Formular funktioniert bis auf meine Ergänzungen einwandfrei. Man muss nur die E-Mail-Adresse ändern und schon passt alles. Eigentlich sollte es doch relativ einfach sein, dass der Inhalt meiner ergänzten Felder übermittelt wird, oder nicht? Nur kenne ich mich leider kein bisschen damit aus. |
|
||||
Was genau funktioniert denn nicht? Ich würde dir empfehlen, mit Einrückung des Codes zu arbeiten, um die Übersichtlichkeit zu wahren:
Code:
if (Bedingung 1) { //Anweisungen im If-Block werden eingerückt if (Bedingung 2) { //Anweisungen im IF-Block werden eingerückt } } |
|
|||
Folgendes funktioniert nicht:
nach dem Ausfüllen aller Felder und dem abschicken des Formulares erhalte ich in der E-Mail keinen Inhalt bei denen von mir Hinzugefügten Feldern der Teil des Skriptes sieht folgendermaßen aus: Code:
<dl> <dt>Artikel:</dt> <dt><select name="product" id="product"> <option value="Batterien">Batterien</option> <option value="Schokolade">Schokolade</option> <option value="Tageszeitung">Tageszeitung</option> <option value="Aspirin">Aspirin</option> <option value="Notebook">Notebook</option> <option value="Chips">Chips</option> </select></dt> </dl> <dl> <dt>Welche Hobbys haben Sie?</dt> <dt> <input type="checkbox" id="essen" name="Hobbys[]" value="essen" /><label for="essen">Essen</label> <input type="checkbox" id="trinken" name="Hobbys[]" value="trinken" /><label for="trinken">Trinken</label> <input type="checkbox" id="rechnen" name="Hobbys[]" value="rechnen" /><label for="rechnen">Rechnen</label> <input type="checkbox" id="Radfahren" name="Hobbys[]" value="Radfahren" /><label for="Radfahren">Radfahren</label> <input type="checkbox" id="Lesen" name="Hobbys[]" value="Lesen" /><label for="Lesen">Lesen</label> <input type="checkbox" id="sport" name="Hobbys[]" value="sport" /><label for="Johannes">Sport</label> </dt> </dl> <dl> <dt>Sie sind:</dt> <dt> <input type="radio" id="Mann" name="geschlecht" value="Mann"/><label for="Mann">Mann</label> <input type="radio" id="Frau" name="geschlecht" value"Frau"/><label for="Frau">Frau</label> </dt> </dl> <dl> <dt>Sie mögen:</dt> <dt><select name="music" id="music"><option value="Rock">Rock</option><option value="Schlager">Schlager</option></select></dt> </dl> Erweitert habe ich auch noch die folgende Zeile Code:
$mailnachricht = "Hallo!\n\nEs ist eine neue Nachricht für Sie eingetroffen:\n\n---------------------------------------------\n\nName:\n$name\n\nIP:\n$IP\n\nE-Mail:\n$absender\n\nProdukt:\n$product\n\nHobbys:\n$Hobbys\n\nGeschlecht:\n$geschlecht\n\nLieblingsmusik:\n$music\n\nNachricht:\n$nachricht\n\n---------------------------------------------\n\nSie koennen dem Absender der Nachricht direkt antworten, indem Sie einfach auf diese E-Mail antworten.\n\nMfG\nBotty ;)"; |
|
||||
So hier mein 2. Versuch:
was steht denn in der mail? steht da beispielsweise $name selber drinn also steht da "$name" oder hast du an den Feldern nichts? Gruß Geändert von Thielo (06.11.2009 um 11:23 Uhr) |
Sponsored Links |
|
|||
Die E-Mail, die ich erhalte, sieht folgendermaßen aus:
Code:
Hallo! Es ist eine neue Nachricht für Sie eingetroffen: --------------------------------------------- Name: Dorothea IP: 92.48.72.249 E-Mail: kathrin@web.de Produkt: Hobbys: Geschlecht: Lieblingsmusik: Nachricht: Heute ist ein schöner Tag --------------------------------------------- Ich habe auch schon versucht, den folgenden Skript-Teil bei den Feldern einzufügen, die ich ergänzt habe, aber das hat auch gar nicht funktioniert Code:
value="<?php echo $_POST['email']; ?>"/> |
Sponsored Links |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
PHP Regex Frage | markuskoehler | Serveradministration und serverseitige Scripte | 0 | 27.02.2011 10:51 |
PHP Datei Frage ./index.php?action=news | rofl.kartoffel | Serveradministration und serverseitige Scripte | 23 | 20.10.2010 17:00 |
Frage zu Zeilenumbruch in php | |SONY| | Serveradministration und serverseitige Scripte | 1 | 09.06.2009 20:02 |
Frage zu PHP Archivierung bzw. Historie | |SONY| | Serveradministration und serverseitige Scripte | 5 | 28.05.2009 20:26 |
Sicherheit von eigenem PHP Kontaktformular | Lloyd Larkin | Serveradministration und serverseitige Scripte | 13 | 01.10.2006 13:02 |