zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Frage zu einem PHP-Formular

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 04.11.2009, 10:24
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.08.2009
Beiträge: 141
Erdbeertorte befindet sich auf einem aufstrebenden Ast
Standard 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']; ?>"/>
wie zum Beispiel in diesem Abschnitt:
Code:
 
<dl>
<dt>E-Mail-Adresse:</dt>
<dt><input type="text" name="email" id="email" value="<?php echo $_POST['email']; ?>"/></dt>
</dl>
Oder wie hier:
Code:

wo aber muss ich den oben genannten Teil bei den folgenden Abschnitten einfügen?

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&ouml;gen:</dt>
<dt><select name="Lieblingsmusik"><option value="Schlager">Schlager</option><option value="Rock">Rock</option></select></dt>
</dl>
vielen Dank schon mal
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 04.11.2009, 11:25
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Nun, so ganz stimmt das ja nicht, was du schreibst. Das hier:
Code:
value="<?php echo $_POST['email']; ?>"/>
bewirkt nur, dass in dem Feld schon etwas drin steht, wenn die Seite geladen wird, nämlich das, was auch in der Variablen gespeichert ist.

Du möchtest sicherlich, dass der vom Benutzer zuvor gewählte Eintrag nach dem Absenden (ich nehme an, die Auswertung geschieht im gleichen Script?) auch in der Select-Box ausgewählt bleibt?

Das realisiert man über das HTML-Attribut selected.
Je nach verwendetem Doctype musst du in die angewählte Option "selected"(HTML) oder "selected="selected"(XHTML und HTML) einfügen.

Beispiel
Code:
<dt><select name="Artikel">
	<option value="Batterien">Batterien</option>
	<option value="Schokolade">Schokolade</option>
	<option value="Tageszeitung" selected="selected">Tageszeitung</option>
	<option value="Aspirin">Aspirin</option>
	<option value="Notebook">Notebook</option>
	<option value="Chips">Chips</option>
</select></dt>
Und noch etwas: tu deinem Besucher was gutes und verwende das Label-Element für die Beschreibung aller Formularelemente:

Also so:
Code:
<input type="checkbox" id="essen" name="Hobbys[]" value="Essen" /><label for="essen">Essen</label>
(ID im Input nicht vergessen)

anstatt nur so:
Code:
<input type="checkbox" name="Hobbys[]" value="Essen" />Essen
So reicht ein einfacher Klick auf das Wort, als erst mit dem Cursor in das kleine Kästchen fahren zu müssen.
__________________
github | http://dnaber.de
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 04.11.2009, 11:37
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 29.07.2005
Beiträge: 1.073
xm22 befindet sich auf einem aufstrebenden Ast
Standard

Code:
value="<?php echo $_POST['email']; ?>"/>
Nicht niemals! Übergebene Werte immer mit htmlspecialchars o. ä. parsen!
__________________
... Meine Meinung
Mit Zitat antworten
  #4 (permalink)  
Alt 04.11.2009, 12:47
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.08.2009
Beiträge: 141
Erdbeertorte befindet sich auf einem aufstrebenden Ast
Standard

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&ouml;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&uuml;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&uuml;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&uuml;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&ouml;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&uuml;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&uuml;cksetzen" />

<?php

}

?>

</form>

</body>

</html>
Mit Zitat antworten
  #5 (permalink)  
Alt 04.11.2009, 14:16
Benutzerbild von Praktikant
Semantikbremse.
XHTMLforum-Kenner
 
Registriert seit: 22.04.2008
Beiträge: 4.985
Praktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz seinPraktikant kann auf vieles stolz sein
Standard

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!
Mit Zitat antworten
  #6 (permalink)  
Alt 04.11.2009, 21:04
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.08.2009
Beiträge: 141
Erdbeertorte befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Praktikant Beitrag anzeigen

Dein Stichwort ist "Code-Injection", google mal danach. Ganz böse Sache
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.
Mit Zitat antworten
  #7 (permalink)  
Alt 05.11.2009, 12:00
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

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
   }

}
So lässt sich das ganze einfacher lesen und Syntaxfehler werden viel schneller gefunden.
__________________
github | http://dnaber.de
Mit Zitat antworten
  #8 (permalink)  
Alt 06.11.2009, 11:05
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.08.2009
Beiträge: 141
Erdbeertorte befindet sich auf einem aufstrebenden Ast
Standard

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&ouml;gen:</dt>
<dt><select name="music" id="music"><option value="Rock">Rock</option><option value="Schlager">Schlager</option></select></dt>
</dl>
mir ist zwar schon klar, dass da noch etwas fehlt, aber ich weiß nicht was.


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 ;)";
ich würde mich wirklich freuen, wenn mir jemand helfen könnte
Mit Zitat antworten
  #9 (permalink)  
Alt 06.11.2009, 11:16
Benutzerbild von Thielo
Web Ninja
XHTMLforum-Kenner
 
Registriert seit: 17.09.2009
Ort: Stuttgart oder so
Beiträge: 3.372
Thielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein Lichtblick
Standard

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)
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 06.11.2009, 11:58
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 05.08.2009
Beiträge: 141
Erdbeertorte befindet sich auf einem aufstrebenden Ast
Standard

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']; ?>"/>
natürlich mit der entsprechenden Variable (oder wie das heißt)
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ä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


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:40 Uhr.