-
15.03.07 10:05 #1Alex363 Tutorials.de Gastzugang
Hallo, ich möchte gerne die Option haben über eine Webseite ein Mail via einem Kontaktformular zu versenden. Dazu habe ich dieses PHP-Script im Netz gefunden:
PHP-Code:<?php
if(isset($_POST["message"])) {
if(isset($_POST["email"])) {
$mail = mail($_POST["email"],$_POST["betreff"],$_POST["message"],"From: ".$_POST["from"]);
}
else {
echo "Keine e-Mail Adresse angegeben. Die Mail wurde nicht gesendet.<br/>";
}
}
else {
echo "Es wurde keine Nachricht eingegeben. Die Mail wurde nicht gesendet.<br/>";
}
?>
<html>
<body>
<form action="sendmail.php" method="POST">
eMail: <input type="text" name="email"><br/>
Betreff: <input type="text" name="betreff"><br/>
Message: <textarea name="message"></textarea><br/>
<input type="hidden" name="from" value="none@testserver.com">
<input type="submit" value="abschicken">
</form>
</body>
</html>
Allerdings ist mir das Textfeld in das man die Nachricht schreibt zu klein, wie macht man das größer?
Und dann möchte ich dass das versenden auch möglich ist, wenn man kein POP3 Mail auf dem Rechner installiert hat. Wo gebe ich dann die Adresse an, um die Nachrichten aus dem Web zu erhalten?
-
Hi!
Das Textarea-Element bekommst du mit der Angabe rows und cols breiter und höher, z.B.:
Code :1
Message: <textarea name="message" rows="10" cols="50"></textarea><br/>
kein POP3 Mail auf dem Rechner installiert hat
Auf dem Rechner? Du meinst ganz ohne Mailserver? Geht nicht..
Viele Grüße,
JackaBiologie ist das was lebt, Chemie das was kracht und Physik das, wo nichts funktioniert!
- - - - - - - - - - - - - - - -
Open Source JS-Framework für Business Web-Applications: ExtJS
-
15.03.07 11:38 #3Alex363 Tutorials.de Gastzugang
Nur beim abschicken, so das die Nachricht nicht über Outlook Express verschickt wird.
Viele benutzen nämlich GMX oder Hotmail.
Ich weiß nicht wie ich das erklären soll, aber die Nachricht soll über den Explorer versendet werden, eine kleine Anzeige an den Benutzer wäre dann nicht schlecht das die Mail verschickt ist. Und wo gibt man in dem Script die Empfängeradresse an, dort wo die Nachricht ankommen soll?
-
Wenn du dieses Script benutzt, braucht der Anwender keinen POP3-Client installiert haben. Das einzig nötige ist ein SMTP-Dienst auf der Serverseite und dieser wird wohl vorhanden sein (egal, bei welchem Anbieter du bist).
Im Moment ist es so, dass das Script die Email an die im Textfeld "Email" angegebene Mailadresse sendet und als Absender den Wert des versteckten Felds "from" benutzt. Wenn du einen festen Empfänger definieren willst und die im Textfeld "Email" angegebene Mailadresse als Absender fungieren soll, dann schreib dein Script etwas um:
Das Script als solches ist allerdings nicht wirklich sicher. Du solltest dich diesbezüglich noch dringend informieren, bevor du es einsetzt!PHP-Code:<?php
$empf = "dein@empfaenger.com";
if(isset($_POST["message"])) {
if(isset($_POST["email"])) {
$mail = mail($empf, $_POST["betreff"], $_POST["message"], "From: ".$_POST["email"]);
} else {
echo "Keine e-Mail Adresse angegeben. Die Mail wurde nicht gesendet.<br/>";
}
} else {
echo "Es wurde keine Nachricht eingegeben. Die Mail wurde nicht gesendet.<br/>";
}
?>
<html>
<body>
<form action="sendmail.php" method="POST">
eMail: <input type="text" name="email"><br/>
Betreff: <input type="text" name="betreff"><br/>
Message: <textarea name="message"></textarea><br/>
<input type="submit" value="abschicken">
</form>
</body>
</html>Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut
-
15.03.07 13:07 #5Alex363 Tutorials.de Gastzugang
-
Hallo!
Zu 1)
Ja, das ist der feste Empfänger.
Zu 2)
Problem 1: Das Script wird auch dann abgeschickt, wenn man die Eingabefelder leer lässt.
Problem 2: Ein böser Mensch könnte die Header der Mail modifizieren!
Ich hab mir dein Script nochmal kurz angesehen und beide Probleme behoben:
Ich hoffe, ich konnte dir helfen!PHP-Code:<?php
/**
* Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
* ansonsten wird 0 zurückgegeben.
*/
function checkmail($mail) {
return preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]+\.[a-z]+$#i', $mail);
}
// Empfänger
$empf = "dein@empfaenger.com";
// Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
die("Bitte einen Betreff eingeben!");
// Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
die("Bitte eine Nachricht eingeben!");
// Wenn Email ungültig ist, Fehler!
if(!isset($_POST["email"]) ||!checkmail($_POST["email"]))
die("Bitte eine gültige Emailadresse angeben!");
// mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
mail($empf, str_replace("\n", "", $_POST["betreff"]), str_replace("\n.", "\n..", $_POST["message"]), $_POST["email"]);
?>
<html>
<body>
<form action="sendmail.php" method="POST">
E-Mail: <input type="text" name="email"><br/>
Betreff: <input type="text" name="betreff"><br/>
Message: <textarea name="message"></textarea><br/>
<input type="submit" value="abschicken">
</form>
</body>
</html>Geändert von split (23.03.07 um 15:26 Uhr) Grund: Ein kleiner Fehler im Script!
Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut
-
15.03.07 18:53 #7Alex363 Tutorials.de Gastzugang
Ja, vielen Dank
Geändert von alexderennes (15.03.07 um 21:58 Uhr)
-
22.03.07 13:59 #8Alex363 Tutorials.de Gastzugang
Tut mir leid aber das abschicken funktioniert noch nicht, ich habe das auf dem Webserver getestet, folgende Meldung kommt wenn man den Text abschickt:
Parse error: syntax error, unexpected T_STRING in /var/www/users/krizz/sendmail.php on line 1
-
Ich hab den Fehler im oberen Script ausgebessert!
Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut
-
22.03.07 16:23 #10Alex363 Tutorials.de Gastzugang
Aber der Fehler ist immer noch da:
Parse error: syntax error, unexpected T_STRING in /var/www/users/krizz/sendmail.php on line 1
Was heißt das überhaupt?
-
Also bei mir gibt es keinen Fehler! Aber vielleicht hast du ja noch andere Dateien eingebunden?
Das bedeutet, dass in der Zeile 1 der Datei /var/www/users/krizz/sendmail.php ein Syntaxfehler (= Parse error) aufgetreten ist. "unexpected T_STRING" bedeutet, dass der Fehler ein unerwarteter String ist (warscheinlich hast du irgendein Zeichen vergessen, z.B. bei einem Funktionsaufruf ein Komma vor dem zweiten Parameter).Parse error: syntax error, unexpected T_STRING in /var/www/users/krizz/sendmail.php on line 1
Das würde einen solchen Fehler geben, weil die Parameter "foo" und "bar" nicht durch ein Komma voneinander getrennt sind. "bar" wäre dann der "unerwartete String"!PHP-Code:function1("test", "foo" "bar");
Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut
-
23.03.07 12:18 #12Alex363 Tutorials.de Gastzugang
Mhm, der Fehler bleibt
Meine sendmail.php schaut so aus:
PHP-Code:<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<?php
/**
* Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
* ansonsten wird 0 zurückgegeben.
*/
function checkmail($mail) {
return preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]\.[a-z]++$#i', $mail);
}
// Empfänger
$empf = "alex1110@aol.com";
// Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
die("Bitte einen Betreff eingeben!");
// Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
die("Bitte eine Nachricht eingeben!");
// Wenn Email ungültig ist, Fehler!
if(!checkmail($_POST["email"]))
die("Bitte eine gültige Emailadresse angeben!");
// mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
mail($empf, str_replace("\n", "", $_POST["betreff"]), str_replace("\n.", "\n..", $_POST["message"]), $_POST["email"]);
?>
<html>
<body>
<form action="sendmail.php" method="POST"><p></p><center>
E-Mail: <input type="text" name="email"><br/><p></p>
Betreff: <input type="text" name="betreff"><br/><p></p>
<center>Nachricht:</center><p></p><center> <textarea name="message" rows="10" cols="50"></textarea><br/><p></p>
<input type="submit" value="abschicken"></form>
</body>
</html>
Und diesen Code habe ich in eine html-Seite kopiert in der ich noch ein Bild verlinkt habe.
PHP-Code:[B]<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1" />
<meta name="generator" content="Adobe GoLive" />
<title>---</title>
</head>
<body bgcolor="#ffffff">
<p align="center"><img src="headcontent_kontakt.gif" alt="" height="72" width="286" border="0" /><br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<?php
/**
* Gibt 1 zurück, wenn $mail eine gültige Emailadresse ist;
* ansonsten wird 0 zurückgegeben.
*/
function checkmail($mail) {
return preg_match('#^[a-z0-9_.-]+@[a-z0-9.-]\.[a-z]++$#i', $mail);
}
// Empfänger
$empf = "alex1110@aol.com";
// Wenn der Betreff nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["betreff"]) || !strlen(trim($_POST["betreff"])))
die("Bitte einen Betreff eingeben!");
// Wenn Textmeldung nicht min. 1 Zeichen lang ist, Fehler!
if(!isset($_POST["message"]) || !strlen(trim($_POST["message"])))
die("Bitte eine Nachricht eingeben!");
// Wenn Email ungültig ist, Fehler!
if(!checkmail($_POST["email"]))
die("Bitte eine gültige Emailadresse angeben!");
// mail(EMPFÄNGER, BETREFF, MELDUNG, HEADERS)
mail($empf, str_replace("\n", "", $_POST["betreff"]), str_replace("\n.", "\n..", $_POST["message"]), $_POST["email"]);
?>
<html>
<body>
<form action="sendmail.php" method="POST"><p></p><center>
E-Mail: <input type="text" name="email"><br/><p></p>
Betreff: <input type="text" name="betreff"><br/><p></p>
<center>Nachricht:</center><p></p><center> <textarea name="message" rows="10" cols="50"></textarea><br/><p></p>
<input type="submit" value="abschicken"></form>
</body>
</html>
</body>
</html>[/B]
-
Wie die Fehlermeldung bereits sagt, liegt das Problem in Zeile 1!
Der <?xml ... ?>-Tag wird als PHP interpretiert (wegen dem <?). Lass ihn weg und es geht!Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut
-
23.03.07 13:04 #14Alex363 Tutorials.de Gastzugang
Aha! Die erste Zeile habe ich raus genommen, und der Fehler ist weg - aber ein neuer kommt:
Bitte eine gültige Emailadresse angeben!
Komisch ich habe eine gültige Adresse angegeben.
-
Da deine Funktion zum überprüfen der Mail ja Integer zurück gibt und nicht Boolean, müsste es eigentlich heißen:
Oder hab ich mal wieder einen Denkfehler?PHP-Code:if(checkmail($_POST["email"]) == 0) {
die("Bitte eine gültige Emailadresse angeben!");
}
Ähnliche Themen
-
KontaktFormular per Mail in PHP schicken!
Von nK2004 im Forum PHPAntworten: 2Letzter Beitrag: 03.10.09, 02:04 -
mail() an Mailserver schicken
Von Brölio im Forum PHPAntworten: 1Letzter Beitrag: 10.03.08, 16:37 -
mail-daemon schicken
Von grünes-huhn im Forum PHPAntworten: 5Letzter Beitrag: 15.12.05, 11:09 -
Mit PHP+MySQL-automatische mail schicken
Von salo im Forum Relationale DatenbanksystemeAntworten: 3Letzter Beitrag: 04.10.04, 15:19 -
Ausgewertete Datei per mail schicken !
Von SkyFighter im Forum PHPAntworten: 3Letzter Beitrag: 05.04.04, 16:57



1Danke

Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren