PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formmailer - Wo ist der Fehler ?


Natheedo
2008-04-05, 05:04:27
Hallo,

ich hab mir eben ein Formular gebastelt. Nach dem Abschicken rufe ich eine submit.php auf, die auch geladen wird, allerdings sollte diese mittels header location auf eine ok.html weiterleiten und ich eine email mit den Einträgen bekommen.

Die submit.php wird nach dem Abschicken zwar geladen (bleibt aber weiß und wird nicht weitergeleitet) - Ebenso bekomme ich auch die besagte Email mit den Daten nicht.

Das Formular sieht so aus (abgekürzt) :


<form name="form1" method="post" action="submit.php">
<INPUT TYPE="HIDDEN" name="id" value="email@gmx.de">
<font size="2">imie:<br>
</font>
<input name="blabla1" type="text" class="textbox" id="blabla1">
<input type="submit" name="Submit" class="textbox" value=" TEST ">


Die submit.php sieht so aus (ebenfalls abgekürzt):


<?php

$emailinhalt = "Formularergebnisse";
$emailinhalt .= "\r\nBlubb: ". $_POST["blabla1"];

mail("email@gmx.de","blabla Daten", $emailinhalt);

header("Location: http://seite.de/ok.html");

?>


Das ganze lasse ich auf einem kostenlosen Webspace laufen - Weiß nicht obs daran liegt, sollte aber doch im normalfall gehen!?!

Oder findet jemand den Fehler ? Ich bin echt ratlos.

*edit*
Ich hab festgestellt, das wenn ich die Mail Zeile in der submit rausmache, wird wenigstens weitergeleitet. Das wichtigste ist aber das ich die Email bekomme!!!
*edit*

Danke!

Sephiroth
2008-04-05, 13:43:00
hiermit kannst du erstmal schauen, ob und wo fehler auftreten. ich tippe auf einen fatal error, weil sonst nicht abgebrochen würde.
normalerweise müsste mail() auch mit den 3 parametern schon gehen. es kann aber sein, dass dein webspace anbieter den parameter -f verlangt, damit die mails rausgehen.
<?php
// Alle Fehlermeldungen anzeigen
error_reporting(E_ALL);
ini_set('display_errors', 'On');

$emailinhalt = "Formularergebnisse";
$emailinhalt .= "\r\nBlubb: ". $_POST["blabla1"];

$rv = mail("email@gmx.de","blabla Daten", $emailinhalt);
// Rückgabewert von mail Anzeigen; true ist gut, false nicht ;-)
var_dump($rv);

// variante mit -f parameter
// $rv = mail("email@gmx.de","blabla Daten", $emailinhalt, null, "-fwebmaster@bla.bla");

//header("Location: http://seite.de/ok.html");
?>

Doku zu mail (http://de3.php.net/manual/de/function.mail.php)

Natheedo
2008-04-05, 15:09:59
Hallo,

also ich hab jetzt deinen Code übernommen und angepasst - Doch leider bringt Error_reporting(E_ALL) erstmal gar nix. Also die Seite bleibt immernoch weiß. Fehler werden gar nicht angezeigt.

Emails gehen auch wieder nicht, auch nicht mit dem -f Befehl.

Und ansonsten auch das gleiche, nehme ich den Mail Befehl raus funktioniert wenigstens die Weiterleitung.

Ich hab einfach das Gefühl, mein Anbieter hat die Mail Funktion komplett gesperrt - Was mich auch nicht wundern würde, ist ja wie gesagt ein kostenloser.

Gibts denn alternative Wege ? Das die Daten zumindest in einer kleinen Txt Datei oder so gespeichert werden - Das Formular ist auch nicht für den Dauereinsatz gedacht.

Ist sowas schnell und einfach realisierbar?

Natheedo

The_Invisible
2008-04-05, 16:47:06
txt dateien sind mit den datei funktionen von php kein problem.

einfach nen ordner anlegen wo php schreiben darf und dort rein das ganze.

mfg

Sephiroth
2008-04-05, 17:44:23
Hallo,

also ich hab jetzt deinen Code übernommen und angepasst - Doch leider bringt Error_reporting(E_ALL) erstmal gar nix. Also die Seite bleibt immernoch weiß. Fehler werden gar nicht angezeigt.

Emails gehen auch wieder nicht, auch nicht mit dem -f Befehl.

Und ansonsten auch das gleiche, nehme ich den Mail Befehl raus funktioniert wenigstens die Weiterleitung.

Ich hab einfach das Gefühl, mein Anbieter hat die Mail Funktion komplett gesperrt - Was mich auch nicht wundern würde, ist ja wie gesagt ein kostenloser.
Ruf mal die Funktion phpinfo() und schau nach, was bei disable_functions steht.

Gibts denn alternative Wege ? Das die Daten zumindest in einer kleinen Txt Datei oder so gespeichert werden - Das Formular ist auch nicht für den Dauereinsatz gedacht.

Ist sowas schnell und einfach realisierbar?

Natheedo
mit PHP 5 brauchst du nur die Funktion file_put_contents (http://de2.php.net/manual/de/function.file-put-contents.php), sonst erst fopen, dann fwrite und zum Schluss fclose. Wie auch schon gesagt wurde, muss der Web-Server in dem Verzeichnis Schreibrechte haben (am einfachsten mit chmod 777).