PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formular wird nicht geschickt...


timeless
10.09.2006, 02:36:11
sende ein paar variablen an senden.php, leider bekomme ich immer ne fehlermeldung:
Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/web198/html/senden.php on line 10

so sieht die senden.php aus:
<?php

if (isset($_POST["senden"])) {

$webmaster="buero@###.de";

$mailinhalt = "
Anmeldung\n
__________________\n
E-mail: $_POST["$email"]\n
__________________\n
$_POST["vorname"] $_POST["nachname"]
__________________\n
\n
__________________\n";

@mail($webmaster, "Anmeldung", $mailinhalt, "From: $_POST["email"]");

// Autoresponder
$datei = "/automail.txt";
$fp = fopen($datei, "r");
$inhalt = fread($fp,filesize($datei));
fclose($fp);

@mail("$_POST["email"]", "### - Danke für Ihre Anfrage", "$inhalt","From:$webmaster");

}

?>
natürlich sind die ### sonst anders^^

weiß jmnd. was falsch ist??

xlb
10.09.2006, 03:31:18
Zunächst mal ... E-mail: $_POST["$email"]...?!

Ansonsten: (richtiges) Quoting (http://de.php.net/types.string)

timeless
10.09.2006, 03:42:33
ok also muss ich da dann einfache hochkommata verwenden...

<?php

if (isset($_POST["senden"])) {

$webmaster="buero@###.de";

$mailinhalt = "
Anmeldung\n
__________________\n
E-mail: $_POST['$email']\n
__________________\n
$_POST['vorname'] $_POST['nachname']
__________________\n
\n
__________________\n";

@mail($webmaster, "Anmeldung", $mailinhalt, "From: $_POST['email']");

// Autoresponder
$datei = "/automail.txt";
$fp = fopen($datei, "r");
$inhalt = fread($fp,filesize($datei));
fclose($fp);

@mail("$_POST['email']", "### - Danke für Ihre Anfrage", "$inhalt","From:$webmaster");

}

?>

funkzt auch nicht...
gleiche fehlermeldung:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/web198/html/senden.php on line 10

xlb
10.09.2006, 03:53:55
Äh ... -> "$" vor "email" ...?
also muss ich da dann einfache hochkommata verwenden
-> siehe Link zum Quoting ...

timeless
10.09.2006, 04:02:22
so hab das $-zeichen weggemacht, aber es funkzt immernoch nicht :( gleiche fehlermeldung...

xlb
10.09.2006, 04:10:34
Joo - war ja auch nur so ein Fehler am Rande. Dein eigentliches Problem ist eben das "richtige Integrieren" von Variablen in einen String/Text, eben das "Quoting".

Pack z.B. mal sämtliche $_POST-Variablen, die in den String $mailinhalt gebastelt werden sollen in geschweifte Klammern: z.B. {$_POST['email']} ...

timeless
10.09.2006, 04:27:44
<?php

if (isset($_POST['senden'])) {

$webmaster="###@##l.com";

$mailinhalt = "
Anmeldung\n
__________________\n
E-mail: {$_POST['email']}\n
__________________\n
{$_POST["vorname"]} {$_POST['nachname']}
__________________\n
\n
__________________\n";

@mail($webmaster, "Anmeldung", $mailinhalt, "From: {$_POST['email']}");

// Autoresponder
$datei = "/automail.txt";
$fp = fopen($datei, "r");
$inhalt = fread($fp,filesize($datei));
fclose($fp);

@mail("{$_POST['email']}", "Rabattaclub.de - Danke für Ihre Anfrage", "$inhalt","From:$webmaster");

}

?>

ok soweit keine fehlermeldung, aber ich bekomme keine mail geschickt...

xlb
10.09.2006, 04:38:12
aber ich bekomme keine mail geschickt
Na, da wär's ja vielleicht sinnvoll, die "@" vor mail() zu entfernen, um ggf. entsprechende Fehlermedlungen zu erhalten ...?

timeless
10.09.2006, 10:28:50
hab ich schon gemacht...., keine fehlermeldung!

xlb
10.09.2006, 11:59:34
Was gibt dir mail() zurück (true oder false) ?

timeless
10.09.2006, 14:35:08
sry jetzt wirst du sagen was für ein noob, aber ich sitze noch wirklich nicht lange an php. ich habe echo mail() eingeben, aber da sagt er wieder fehler. was muss ich eingeben damit true oder false rauskommt.....

xabbuh
10.09.2006, 14:50:54
Dafür gibt es var_dump() (http://www.php.net/var_dump).

xlb
10.09.2006, 16:17:33
Sinnvoll wäre es auch, im Code "direkt" auf Fehler zu reagieren, anstatt sie zu unterdrücken und vom "reibungslosen Ablauf" auszugehen. Im Beispiel von mail() könnte das so aussehen:

if (!@mail(xyz)) //sollte die Funktion nicht "true" zurückgeben, dann ...
{
...
echo ('... nicht akzeptiert!');
...
}

Wobei hier eine "akzeptierte" Mail nicht unbedingt erfolgreich zugestellt wird ! (siehe Manual (http://de2.php.net/manual/de/function.mail.php))

timeless
10.09.2006, 17:30:19
also im allgemeinen funktioniert die mail funktion ja, d.h. wenn ich eingebe mail("###@###.de","betreff","nachricht","From:###@###.de")

aber irgendwie werden die variablen nicht genommen. ich deklariere ja webmaster als [$webmaster="###@###.de] dennoch wird keine mail hingeschickt! also muss irgendwas an den variablen falsch sein...
hier noch mal mein jetziger code:

<?php

if (isset($_POST['senden'])) {

$webmaster="###@###.com";

$mailinhalt = "
Anmeldung\n
__________________\n
E-mail: {$_POST['email']}\n
__________________\n
{$_POST["vorname"]} {$_POST['nachname']}
__________________\n
\n
__________________\n";

mail($webmaster, "Anmeldung", $mailinhalt, "From: {$_POST['email']}");

// Autoresponder
$datei = "/automail.txt";
$fp = fopen($datei, "r");
$inhalt = fread($fp,filesize($datei));
fclose($fp);

mail("{$_POST['email']}", "### - Danke für Ihre Anfrage", "$inhalt","From:$webmaster");

}

?>


auch wenn ich die variablen, egal welche, also $webmaster oder {$_POST['email']} mit eecho ausgeben will, passiert nüscht... bin am verzweifeln...

daFloh
17.10.2006, 12:40:29
Damit Deine Mail abgeschickt wird muss ja in $_POST['senden'] etwas drinstehen.
Wie wäre es mal den Wert von $_POST['senden'] auszugeben, oder generell das was über das Formular gesendet wird, vielleicht hast Du die Eingabefelder ja auch falsch benannt.

Sollte ja auch ein Feld in Deinem Formular sein. Wenn dieses nicht gesetzt ist, dann lässt er eh den ganzen Spass aus. Zusätzlich würde ich noch jeden Wert mit einem strip_tags() bearbeiten, da Dir sonst jemand ganz leicht jede Menge Code unterschieben kann.

Den Bereich Mailinhalt hast Du so aufgebaut :
$mailinhalt = "
Anmeldung\n
__________________\n
E-mail: $_POST["$email"]\n
__________________\n
$_POST["vorname"] $_POST["nachname"]
__________________\n
\n
__________________\n";

Sollte aber so sein, damit keine Fehlermeldung in Line 10 kommt:

$mailinhalt = "
Anmeldung\n
__________________\n
E-mail: ".$_POST['email']."\n
__________________\n
".$_POST['vorname']." ".$_POST['nachname']."
__________________\n
\n
__________________\n";


PS: Hab mir das Formular auf rabattaclub.de mal angesehen da ist ja garkein Feld, dass "senden" heißt, also wird Dir auch nichts geschickt. Wenn Du ein Feld abfragst muss es auch schon mitgeschickt werden ;-)