Formular erst an php senden, dann weiter

Hallo Gemeinschaft,

ich möchte ein Formular erstellen. Momentan steht oben:

Nun soll ein Spamschutz vorgeschaltet werden. Der Code dafür lautet:

Dieses Feld bitte nicht ausfüllen! Es dient als Spam-Schutz.

<?php if($_POST['youremail'] != ""){
// Bot! die("Bitte gehen Sie zurück und kontrollieren Sie Ihre Angaben!"); } else { // normale Anweisungen, kein Bot! } ?\> Irgendwie wird die php-Anweisung aber ignoriert, d.h. der Spamschutz funktioniert nicht. Muss ich den Code in eine .php-Datei auslagern, an die dann das Formular erst übergeben wird? Und wie leite ich dann weiter an send\_form\_mail.php.cgi? Danke für Eure Hilfe.

Hallo Gemeinschaft,

ich möchte ein Formular erstellen. Momentan steht oben:

deine seite wird aufgerufen
und gibt aus

Nun soll ein Spamschutz vorgeschaltet werden. Der Code dafür
lautet:

Dieses Feld bitte nicht ausfüllen! Es
dient als Spam-Schutz.

jetzt prüft es ob daten gesendet wurden (was beim ersten aufruf bestimmt nie der fall ist.

<?php : if($_POST['youremail'] != ""){

das ergenis wird kein WAHR sein beim ersten aufruf.

// Bot!
die(„Bitte gehen Sie zurück und kontrollieren Sie Ihre
Angaben!“);
}
else {

also gehts heir weiter , ohne eingabe , keine wahren ergebnisse also auch keine kontrolle.

// normale Anweisungen, kein Bot!
}
?>

somit wird an den browser das formular ausgeliefert.
der user füllt aus oder auch nicht … und klickt auf senden.

damit wird nun die eingabe nach /cgi-bin/send_form_mail.php.cgi geschickt und die form gesendet.

die logik ist , ein php kann dann erst auf eingabe daten reagieren, wenn es ziel der daten ist und diese auch vorhanden sind.

wenn also dein formular.php heisst, und du aber bei senden zu
/cgi-bin/send_form_mail.php.cgi sendest, dann ist das
$_POST[‚youremail‘] != „“ unsinnig, weil du schickst ja nie daten an formular.php

Irgendwie wird die php-Anweisung aber ignoriert, d.h. der
Spamschutz funktioniert nicht. Muss ich den Code in eine
.php-Datei auslagern, an die dann das Formular erst übergeben
wird? Und wie leite ich dann weiter an send_form_mail.php.cgi?

Danke für Eure Hilfe.

ne nicht wirklich, aber du kannst daten nur an ein ziel senden.
ergo müsse wenn die prüfung in send_form_mail.php.cgi ablaufen.

Oder du mast ne preprüfung , dann muss der sendende aber nochmal bestöätigen, schön wenn man das mit einer vorschau der gemachten eingabe verbindet.

<?php // formular eingabe, botcheck mit preview und senden and email<br />if (!isset($\_POST['youremail'])) {
// erster aufruf ohne daten
?\>
<?php } else {
// weiter mit daten if ($\_POST['youremail'] != "") { // botfach ist nicht leer ?\> Bitte überprüfen Sie ihre Eingaben. <?php } else {
// kein spam also vorschau erstellen, felder unsichtbar empfänger ist mailer php :smile: ?\> name : <?php echo $_POST['yourname'] ; ?> <?php }
} ?\> das problem bleibt aber immernoch, wenn man send\_form\_mail.php.cgi von aussen aufrufen kann, kann sich jeder einfach sein eigenes formular machen und senden. Also es wäre fast pflicht es innerhalb des email scriptes zu prüfen, oder midestens einen token mitgeben damit der mailer wirklich nur sendet was vorher verifiziert wurde. also ohne wissen kannst du dir richtig probleme einhandeln, weil so wie es jetzt ist, kann jeder dein mailer script direkt ansprechen, egal was du da für einen spam schutzt vorsetzt. lass dich also beraten wie man es macht, bzw ob das ne gute idee ist mit dem cgi etc .

ah sorry, ich habs nicht formular.php genannt sondern iss.php :smile:
deswegen auch untern bei action iss.php.

// erster aufruf ohne daten
?>

alo

nur um beim beispiel zu bleiben für formular.php

Danke, das war sehr ausführlich und für einen php-Laien wie mich einigermaßen verständlich :smile:
Nun, das php.cgi stammt von Strato. Das riecht sehr danach, dass ich auf diese Strato-action verzichten und gleich eine eigene php-Datei verwenden sollte, in der dann auch die Prüfung drinsteht.