marc: problem: formularauswertung mit phpscript

hi zusammen ich brauche eure hilfe ... unter
http://www.idotter.ch/blumenforum/htmldocs/kontakt.html
findet ihr mein kontaktformular. welches durch ein phpscript namens planetmail.php ausgewertet wird. das script liegt im ordner formular welcher auf der gleichen hierarchiestufe befindet wie der ordner htmldocs, welcher seinerseits das htmldokument mit dem formular enthält. im ordner formular ist auch die seite danke.html gespeichert, welche nach absenden angezeigt werden sollte. und hier ist mein problem:

das script wertet zwar diedaten aus, verschickt sie an die emailadresse aber es zeigt keine bestätigung (danke.html ) an!

kann mir jemand helfen ?

das phpscript:

<?php

###########################################################

CONFIGURATION

###########################################################
###########################################################
// Zu Testzwecken
// 1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen)
// 0 => Die eMail wird verschickt
$offline = 0;// Geben Sie hier ein gültige eMail-Adresse von sich an
// (Dies ist bei manchen Providern voraussetzung, um Spamming zu verhindern)
$email_from = "marc@idotter.ch";// eMail-Adresse des Versenders als Absenderadresse nutzen (um direkt anworten zu können)
// 1 => Ja
// 0 => Nein
$senders_email = 1;
// Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
// eMail-Adresse einträgt (Voreinstellung ist: eMail || BEACHTEN SIE GROSS- & KLEINSCHREIBUNG!!!!).
// Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option auf "1" setzen!
$name_of_email = "eMail";// DEFAULT-EINSTELLUNGEN
// Diese gelten dann, wenn Sie in dem Formular keine entsprechenden hidden-fields
// verwenden (name=mailto | name=subject | name=redirect).
// Hidden-fields haben Vorrang vor den Default-Einstellungen!!!
// Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die "Dummy"-eMail-Adresse
// kopie@ihre_domain.de, so daß nur noch die beiden Hochstriche stehen bleiben ("").
// Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein.
// Genauere Informationen finden Sie in der README.txt
$send_dat = array
("dat1" => array("marc@idotter.ch", "BlumenForum Kontaktformular","danke.html"),
#"dat2" => array("", "", "", ""),
#"dat3" => array("", "", "", ""),
);// Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
// TIPP: Verwenden Sie grafische Buttons als "Absendeknopf", so werden die Koordinaten
// der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen,
// geben sie für den grafischen Button name="senden" ein.
$ignore_fields = array('send_index','Submit','senden_y');
###########################################################

Ende der Configuration (AB HIER SOLLTE NICHTS MEHR GEÄNDERT WERDEN!!!!!!!!!!!)

###########################################################
$send_index = $HTTP_POST_VARS['send_index'];
// Prüfung, welches array zu senden verwendet werden soll
if ($send_index!="") {
$st="$send_index";
} else {
$st="dat1";
}
$mailto = $send_dat[$st][0];
$mail_cc = $send_dat[$st][1];
$subject = $send_dat[$st][2];
$redirect = $send_dat[$st][3];
// Weiterleitung auf eine neues Seite nach Absenden
Header("Location: ".$redirect);
// Datum (+deutsche Tage)
$name_tag[0] = "Sonntag";
$name_tag[1] = "Montag";
$name_tag[2] = "Dienstag";
$name_tag[3] = "Mittwoch";
$name_tag[4] = "Donnerstag";
$name_tag[5] = "Freitag";
$name_tag[6] = "Samstag";
$num_tag = date( "w");
$day =$name_tag[$num_tag];
$year = date( "Y");
$n = date( "d");
$month = date( "m");
$time = (date("H:i"));
// Datum einfügen
$mts = ":: Gesendet am $day, den $n.$month.$year - $time Uhr ::<br><br>";
// Formularfelder auslesen und in die eMail "einsetzen"
// Zu ignorierende Felder werden NICHT eingesetzt
while (list($nam,$val) = each($HTTP_POST_VARS)) {
if (in_array($nam, $ignore_fields)) continue;
$mts .= ":: $nam ::<br>$val<br><br>";
}
$mts = str_replace("<br>", "\n", $mts);
$mts = strip_tags($mts);
$mts = stripslashes($mts);
// Absender-eMail-Adresse
if ($senders_email==1) {
$email_from = $HTTP_POST_VARS["$name_of_email"];
}
$header="From: $email_from";
// Kopie schicken
if (!empty($mail_cc)) {
$header .= "\n";
$header .= "Cc: $mail_cc";
}
// email zum testen in ein Textfile schreiben...
if ($offline==1) {
$testmail=fopen("email.txt","w+");
fwrite($testmail,$mts);
fclose($testmail);
}
if ($offline==0) {
// ...eMail verschicken
mail ($mailto,$subject,$mts,$header);
} else {
// Fehlermeldung, wenn die eMail nicht geschickt werden konnte
echo "Es ist ein Fehler aufgetreten!\n";
echo "Bitte versuchen Sie es erneut...";
}
?>
<html>
<head></head>
<body> </body></html>

  1. Hi!

    das script wertet zwar diedaten aus, verschickt sie an die emailadresse aber es zeigt keine bestätigung (danke.html ) an!

    Das kommt davon wenn man Scripte aus Script-Sammlungen einsetzt, die man nicht versteht. So ein Script selbst zu basteln ist nicht wirklich schwer.

    kann mir jemand helfen ?

    Das Problem ist, dass per Header("Location: ".$redirect); weitergeleitet werden soll, aber die Variable $redirect anscheinend nicht den korrekten Wert enthält. Du musst also nachgucken elcher Wert da tatsächlich drin steht (stichwort echo)und dann sehen warum das so ist. Außerdem ist per Header eien relative umleitung, also nur nach "danke.html" nicht erlaubt, Du brauchst eine vollständige URL, aber das nur nebenbei, das hat erstmal nichts mit Deinem Problem zu tun.

    Grüße
    Andreas

  2. aja als mal das ganze script reingebatscht, ich hab zwar keine ahnung von php, aber ihr macht das schon oder?
    Fehlerbeschreibung braucht Ihr ja auch nicht, ihr macht das schon es geht halt net, also so viel zeit hab ich jetzt auch wieder net...

    1. und außerdem liegt der fehler eher am html formular, da das phpscript meiner meinung nicht gefunden wurde. Das solltest vielleicht mal auf den server laden, mister meistaprogrammierer

  3. Hallo,

    in dem Script habe ich unten eine Zeile eingefügt mit der es klappt!

    Das Script ruft die danke.html so wie er geschrieben ist gar nicht auf.

    wenn sie am ende die Zeile
    include("danke.html");
    vor "?>" !!! einfügen, wird die Danke.html aufgerufen!!!

    ich habe ebenfalls 2 Z4eilen höher vor der klammer "}" ein "exit();" engefügt!

    Dieses bewirkt das die Danke.html NUR aufgerufen wird, falls das Senden erfolgreich war!!!

    mfg

    Sebastian
    mail@flehe.com

    für weitere frage schreibe an die o.g. adresse

    <?php

    ###########################################################

    CONFIGURATION

    ###########################################################
    ###########################################################
    // Zu Testzwecken
    // 1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen)
    // 0 => Die eMail wird verschickt
    $offline = 0;// Geben Sie hier ein gültige eMail-Adresse von sich an
    // (Dies ist bei manchen Providern voraussetzung, um Spamming zu verhindern)
    $email_from = "marc@idotter.ch";// eMail-Adresse des Versenders als Absenderadresse nutzen (um direkt anworten zu können)
    // 1 => Ja
    // 0 => Nein
    $senders_email = 1;
    // Geben Sie nachfolgend den Namen des Formularfeldes an, in das der Absender seine
    // eMail-Adresse einträgt (Voreinstellung ist: eMail || BEACHTEN SIE GROSS- & KLEINSCHREIBUNG!!!!).
    // Die Eingabe ist nur dann notwendig, wenn Sie die vorangehende Option auf "1" setzen!
    $name_of_email = "eMail";// DEFAULT-EINSTELLUNGEN
    // Diese gelten dann, wenn Sie in dem Formular keine entsprechenden hidden-fields
    // verwenden (name=mailto | name=subject | name=redirect).
    // Hidden-fields haben Vorrang vor den Default-Einstellungen!!!
    // Soll KEINE Kopie der eMail an eine zweite Adresse geschickt werden, so löschen Sie die "Dummy"-eMail-Adresse
    // kopie@ihre_domain.de, so daß nur noch die beiden Hochstriche stehen bleiben ("").
    // Ansonsten geben Sie dort bitte eine gültige eMail-Adresse ein.
    // Genauere Informationen finden Sie in der README.txt
    $send_dat = array
    ("dat1" => array("marc@idotter.ch", "BlumenForum Kontaktformular","danke.html"),
    #"dat2" => array("", "", "", ""),
    #"dat3" => array("", "", "", ""),
    );// Felder aus dem Formular, die NICHT mit der eMail übertragen werden sollen.
    // TIPP: Verwenden Sie grafische Buttons als "Absendeknopf", so werden die Koordinaten
    // der Klickstelle mit der eMail verschickt. Um diesen (unschönen) Effekt zu umgehen,
    // geben sie für den grafischen Button name="senden" ein.
    $ignore_fields = array('send_index','Submit','senden_y');
    ###########################################################

    Ende der Configuration (AB HIER SOLLTE NICHTS MEHR GEÄNDERT WERDEN!!!!!!!!!!!)

    ###########################################################
    $send_index = $HTTP_POST_VARS['send_index'];
    // Prüfung, welches array zu senden verwendet werden soll
    if ($send_index!="") {
    $st="$send_index";
    } else {
    $st="dat1";
    }
    $mailto = $send_dat[$st][0];
    $mail_cc = $send_dat[$st][1];
    $subject = $send_dat[$st][2];
    $redirect = $send_dat[$st][3];
    // Weiterleitung auf eine neues Seite nach Absenden
    Header("Location: ".$redirect);
    // Datum (+deutsche Tage)
    $name_tag[0] = "Sonntag";
    $name_tag[1] = "Montag";
    $name_tag[2] = "Dienstag";
    $name_tag[3] = "Mittwoch";
    $name_tag[4] = "Donnerstag";
    $name_tag[5] = "Freitag";
    $name_tag[6] = "Samstag";
    $num_tag = date( "w");
    $day =$name_tag[$num_tag];
    $year = date( "Y");
    $n = date( "d");
    $month = date( "m");
    $time = (date("H:i"));
    // Datum einfügen
    $mts = ":: Gesendet am $day, den $n.$month.$year - $time Uhr ::<br><br>";
    // Formularfelder auslesen und in die eMail "einsetzen"
    // Zu ignorierende Felder werden NICHT eingesetzt
    while (list($nam,$val) = each($HTTP_POST_VARS)) {
    if (in_array($nam, $ignore_fields)) continue;
    $mts .= ":: $nam ::<br>$val<br><br>";
    }
    $mts = str_replace("<br>", "\n", $mts);
    $mts = strip_tags($mts);
    $mts = stripslashes($mts);
    // Absender-eMail-Adresse
    if ($senders_email==1) {
    $email_from = $HTTP_POST_VARS["$name_of_email"];
    }
    $header="From: $email_from";
    // Kopie schicken
    if (!empty($mail_cc)) {
    $header .= "\n";
    $header .= "Cc: $mail_cc";
    }
    // email zum testen in ein Textfile schreiben...
    if ($offline==1) {
    $testmail=fopen("email.txt","w+");
    fwrite($testmail,$mts);
    fclose($testmail);
    }
    if ($offline==0) {
    // ...eMail verschicken
    mail ($mailto,$subject,$mts,$header);
    } else {
    // Fehlermeldung, wenn die eMail nicht geschickt werden konnte
    echo "Es ist ein Fehler aufgetreten!\n";
    echo "Bitte versuchen Sie es erneut...";

    exit();

    }

    include("danke.html");

    ?>