Frage zu php Kontaktformular

IrocStan

Lt. Junior Grade
Registriert
März 2007
Beiträge
490
Hi Leutz!
Ich habe hier ein php Kontaktformular, welches ich für meine Homepage verwenden möchte. Klappt auch super, aber ich hätte gern,
das sich der "Absenden" Button nach dem ersten Ausfüllen und Absenden des Formulars nicht deaktiviert (ich denke Spamschutz ...) da
dann ein 2tes Absendes des Formulars nicht mehr möglich wird ... Welcher Teil des Quelltextes muss geändert werden, sodass
man auch 2 (oder mehr) Formulare nacheinander abschicken kann?

PHP:
<?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">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />

<title>Kontaktformular</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\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Die Rechenaufgabe wurde falsch gel&ouml;st!</b></font></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\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Die eingegebene E-Mail-Adresse ist ung&uuml;ltig!</b></font></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 fuer Sie eingetroffen:\n\n---------------------------------------------\n\nName:\n$name\n\nIP:\n$IP\n\nE-Mail:\n$absender\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("Ihre@E-Mail.de", "Neue Nachricht fuer Sie!", $mailnachricht, "From: $name <$absender>");

// ...und dem Benutzer sagen, dass alles glatt lief!
echo "<p><img src=\"ok.gif\" width=\"20\" height=\"20\" alt=\"Okay\" /> <font style=\"color:darkgreen; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Vielen Dank f&uuml;r Ihre Nachricht!</b> Wir lassen Ihnen umgehend eine Antwort zukommen.</font></p>";

}

// Wenn nicht alle Felder ausgefuellt wurden, dann...
else

{

// eine Fehlermeldung ausgeben!
echo "<p><img src=\"stop.gif\" width=\"20\" height=\"20\" alt=\"Fehler\" /> <font style=\"color:darkred; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:16px\"><b>Bitte f&uuml;llen Sie alle Felder aus!</b></font></p>";

}

}

}

}

}

?>

<form id="form" name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?action=send">

<table width="400" cellpadding="2" cellspacing="2" style="background-color:#E6E6E6; font-family:Geneva, Arial, Helvetica, sans-serif; font-size:12px">

<tr>

<td width="162" style="background-image: url(hintergrund.jpg)">
<strong>Ihr Name</strong></td>

<td width="188">

<input name="name" type="text" id="name" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" value="<?php echo $_POST['name']; ?>"/></td>
<td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte geben Sie Ihren Namen an, damit wir Sie pers&ouml;nlich ansprechen k&ouml;nnen!" /></td>
</tr>

<tr>

<td width="162" style="background-image: url(hintergrund.jpg)">
<strong>Ihre g&uuml;ltige E-Mail Adresse</strong></td>

<td width="188">

<input name="email" type="text" id="email" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px" value="<?php echo $_POST['email']; ?>"/></td>
<td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Ihre aktuelle, g&uuml;ltige E-Mail Adresse, an der wir Ihnen antworten!" /></td>
</tr>

<tr>

<td width="162" style="background-image: url(hintergrund.jpg)">
<strong>Ihre Nachricht</strong></td>

<td width="188">

<textarea name="message" id="message" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; width:186px; height:100px" rows="4" cols="15"><?php echo $_POST['message']; ?></textarea></td>
<td width="28" align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Bitte formulieren Sie Ihr Anliegen m&ouml;glichst detailliert!" />

</td>

</tr>

<tr>

<td width="162" style="background-image: url(hintergrund.jpg)">

<strong>Wieviel ist <?php echo $Zahl_1; ?> plus <?php echo $Zahl_2; ?>?</strong>

</td>

<td>

<input name="number" type="hidden" id="number"  value="<?php echo md5(( $Zahl_1 + $Zahl_2 )); ?>"/>
<input name="arithmetic" type="text" id="arithmetic" style="background-color:#CCCCCC; font-size:12px; font-family:Geneva, Arial, Helvetica, sans-serif; border : 1px solid #000000; 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..."/>

</td>

<td align="center" valign="middle">

<img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Spamschutz: Addieren Sie bitte <?php echo $Zahl_1; ?> und <?php echo $Zahl_2; ?> und schreiben Sie deren Summe in das Textfeld." />

</td>

</tr>

<tr>

<td style="background-image: url(hintergrund.jpg)">
<strong>M&ouml;gliche Aktionen</strong>
</td>

<td>

<?php

// Wenn KEIN Cookie gegen Spam gesetzt wurde, dann soll der "Senden"-Button anklickbar sein
if($_COOKIE["spam_protection"] != "spam_protection")
{

?>

<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")
{

?>

<input name="submit" type="submit" id="submit" value="Senden" disabled="true" /> <input name="reset" type="reset" id="reset" value="Zur&uuml;cksetzen" />

<?php

}

?>

</td>

<td align="center" valign="middle"><img src="hilfeicon.gif" alt="Hilfe" width="15" height="15" title="Sie k&ouml;nnen das Formular absenden oder zur&uuml;cksetzen!" /></td>

</tr>

<tr>

<td style="background-image: url(hintergrund.jpg)"><strong>Sie ben&ouml;tigen Hilfe? </strong></td>
<td colspan="2">Mit dem Mauszeiger auf das Fragezeichen zeigen und Hilfe naht :-)</td>

</tr>
  
</table>

</form>

</body>

</html>

mfg hoppiq
 
Hab's hinbekommen! :D Zeile 5 die Zeit von 500 auf 1 genommen! :D

Aber jetzt hab ich ein Problem nach dem Abschicken mit folgender Fehlermeldung:

Kontakt

Warning: Cannot modify header information - headers already sent by (output started at /mnt/web1/30/79/52006279/htdocs/pageID_7309029.php:2) in /mnt/web1/30/79/52006279/htdocs/pageID_7309029.php on line 44

Was bedeutet das?

mfg hoppiq
 
Zuletzt bearbeitet:
Zurück
Oben