PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mail-Funktion


Pixelmaster
01.05.2003, 19:01:38
Hallo
Ich wollte ein ganz einfaches Formular als Test mit der Mail()-Funktion in PHP erstellen,
aber leider funktionniert es nicht. Wenn ich nur den PHP-Teil mit $an,$betreff,$nachricht
ohne <form>-Tags mache, dann kann ich mir selber dieses "Testmail" schicken, aber
sobald ich es mit dem Rest, sprich <form>-Tags etc. ausstaffieren möchte, dann ist
Feierabend...Manchmal erschien auch die Fehlermeldung "undefinierte Variable"!?!
Dank für alle Hinweise.
Pixelmaster


<body>
<?php
if(isset($submit)){
$an = "info@yahoo.de";
$betreff = "Kontaktformular";
$nachricht = "Dies ist ein Test der Mailfunktion";
$mail_body ="$vorname";
mail($an,$betreff,$nachricht,$mail_body);
echo "Vielen Dank";
}else{

?>
<form action="<?php echo $PHP_SELF ?>" method="post">

Vorname: <input name="vorname" type="text" id="vorname" size="50"><br>

<input type="submit" name="submit" value="Abschicken">

</form>
<?php
}
?>
</body>

c4
01.05.2003, 20:02:17
Vermutlich das:
Da seit PHP Version 4.1 ein neues Sicherheitskonzept aktiviert ist, musst Du alle übergebenen Variablen mit
$_GET - für Urlparameter
$_POST - für mit method=post versendete Parameter
$_REQUEST - $_POST & $_GET zusammen
$_COOKIE - für Cookies
$_FILES - für hochgeladene Files
$_SERVER - für Servervars (z.B. PHP_SELF)
$_ENV - für Umgebungsvars
ansprechen. Also ehemals $username mit $_POST['username']
Oder Du setzt in der php.ini register_globals (o.ä.) auf on. Davon rate ich aber ab.

Pixelmaster
01.05.2003, 20:40:40
...Danke für Deinen Hinweis, aber ich habe es mit $_POST beim Vornamen versucht, doch es klappte nicht. Das Formular ruft sich selber auf, ob dies einen Einfluss hat, weiss ich nicht. Oder ich habe es mit den "$_..." falsch angepackt. Könntest Du mir eventuell konkreter zeigen? Wäre super, Danke!
Gruss Pixelmaster

c4
02.05.2003, 08:04:23
<body>
<?php
if(isset($_POST['submit'])){
$an = "info@yahoo.de";
$betreff = "Kontaktformular";
$nachricht = "Dies ist ein Test der Mailfunktion";
$mail_body ="$vorname";
mail($an,$betreff,$nachricht,$mail_body);
echo "Vielen Dank";
}else{

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

Vorname: <input name="vorname" type="text" id="vorname" size="50"><br>

<input type="submit" name="submit" value="Abschicken">

</form>
<?php
}
?>
</body>


Klappt das?

spiegelei
02.05.2003, 12:15:28
existiert $submit denn eigentlich, wenn man

<input type="submit" name="submit" value="Abschicken">

schreibt?
hab ich dann als inhalt den string "Abschicken" ?

hab damit noch nix zu tun gehabt... muss ich mal testen

übrigens würde ich checken ob die variable $vorname existiert.


mfg

c4
02.05.2003, 13:26:56
existiert $submit denn eigentlich, wenn man

<input type="submit" name="submit" value="Abschicken">

schreibt?
hab ich dann als inhalt den string "Abschicken" ? Ja.

spiegelei
02.05.2003, 13:30:57
hm ok thx,
dann hat sich für mich alles geklärt :)

Pixelmaster
02.05.2003, 15:19:20
Hallo C4! Ich habe Dein Beispiel übernommen, doch es hat auch nicht funktionniert...Als Mail()-Funktion-Test habe ich folgenden Codeschnipsel erstellt und dieser lief tadellos, aber wie erwähnt, ohne <form>-Tags etc.!
<?PHP
$an = "info@yahoo.de";
$betreff = "Dies ist ein Test";
$nachricht = "Dies ist ein Test der Mailfunktion";
mail($an,$betreff,$nachricht);
?>

Aber sobald ich es mit einem Formular kombinieren möchte, läuft gar nichts mehr....
Gruss Pixelmaster

c4
02.05.2003, 15:26:16
Na dann sieh bitte erstmal nach, auf welchen Wert register_globals in der php.ini gesetzt ist.

|Coding
02.05.2003, 16:02:34
wenn register_globals = off, dann du musst deine variablen so ansprechen:

gesendet mit post => $_POST['variable']
gesendet mit get => $_GET['variable']
bei cookies => $_COOKIE ['variable']
bei hochgeladenen Dateien => $_FILES['variable']
für Servervariablen => $_SERVER['variable'] (z.B. $_SERVER['PHP_SELF'])
bei umgebungsvariablen => $_ENV['variable']