PHP Problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absender
adresse
array
check
code
dank
domain
email
fehler
form
header
http
not
null
part
sender
set
text
type
webseite
-
Hallo zusammen.Ich brauche unbedingt eure PHP Kenntnisse, denn ich habe keine Ahnung von PHP.Ich will ein Mail Formular machen für meine Webseite.Mit Folgendem Code.
Nun möchte ich,dass im Mail,dass ich bekomme, der Absender als Absender steht und nicht meine Mail adresse.
Desweiteren hätte ich gerne,dass bei erfolgreichem Senden die Seite danke.html gezeigt wird und bei Fehlern fehler.html.
Hoffe es ist verständlich und Ihr könnt mir Helfen
<?php require(\"./formmail.php\"); formmail(\"mailadresse des absenders\", \"mailadresse von mir\", \"Kontakt-Mail\", \"Ein Besucher hat das Formular ausgef�llt und abgeschickt:\", \"email,kommentar\", \"danke.html\", \"fehler.html\"); ?> [HTML-Code] <form action=\"?\" method=\"POST\" enctype=\"multipart/form-data\"> Ihr Name & Vorname: <input type=\"text\" name=\"Name\" size=\"20\"> <br /> Ihre E-Mail Adresse: <input type=\"text\" name=\"email\" size=\"20\"> <br /> Ihre Webseite: <input type=\"text\" name=\"Webseite\" size=\"20\" value=\"http://\"> <br /> Ihre Adresse: <textarea name=\"Adresse\" rows=\"4\" cols=\"40\"></textarea> <br /> Ihre Telefonnummer: <input type=\"text\" name=\"Telefon\" size=\"20\"> <br /> Ihre Webseite: <input type=\"text\" name=\"Webseite\" size=\"20\"> <br /> Ihre Kommentar:  <textarea name=\"kommentar\" rows=\"10\" cols=\"40\"></textarea> <br> <input type=\"submit\" value=\"Absenden\"> </form> [HTML-Code]
und so sieht \"formmail.php\" aus
<?php class FormMailClass { var $version; var $sender; var $recipients; var $subject; var $intro; var $required; var $errorURL; var $followupURL; function FormMailClass() { $this->version = \"0.1\"; $this->sender = null; $this->recipients = array(); $this->subject = sprintf(\"formmail %s at %s\", $this->version, $this->getScriptURL()); $this->intro = sprintf(\"The following was entered into the form at\\n%s\", $this->getScriptURL()); $this->required = array(); $this->errorURL = null; $this->followupURL = null; } function fail($m, $c = 1) { printf(\"<html><title>formmail.php</title><body>%s</body></html>\", $m); exit($c); } function setSender($s) { if (!$this->isEmail($s)) { $this->fail(\"Die E-mail Adresse des Senders \'$s\' ist keine gültige Adresse.\"); } $this->sender = $s; } function addRecipient($r) { if (!$this->isEmail($r)) { $this->fail(\"Recipient address \'$r\' is not a valid email address.\"); } $this->recipients[] = $r; } function setSubject($s) { $this->subject = $s; } function setIntro($i) { $this->intro = $i; } function setRequiredFields($req) { $this->required = array(); foreach ($req as $r) { if (trim($r) != \"\") { $this->required[] = $r; } } } function setFollowupURL($u) { $this->followupURL = $this->absoluteURL($u); } function setErrorURL($u) { $this->errorURL = $this->absoluteURL($u); } function absoluteURL($r) { if (!ereg(\"^https?://\", $r) && !ereg(\"^/\", $r)) { $r = sprintf(\"%s%s\", dirname($_SERVER[\"SCRIPT_NAME\"]), $r); } if (!ereg(\"https?://\", $r)) { if (isset($_SERVER[\"HTTPS\"]) && $_SERVER[\"HTTPS\"] == \"on\") { $scheme = \"https\"; } else { $scheme = \"http\"; } $r = sprintf(\"%s://%s%s\", $scheme, $_SERVER[\"HTTP_HOST\"], $r); } return $r; } function getScriptURL() { return sprintf(\"http://%s%s\", $_SERVER[\"HTTP_HOST\"], $_SERVER[\"SCRIPT_NAME\"]); } function isEmail($email) { // Ensure there is only one @ symbol and the parts have the // correct lengths if (!ereg(\"([^@]{1,64})@([^@]{1,255})\", $email, $parts)) { return false; } // Split local part $local = explode(\".\", $parts[1]); // Check individual local parts foreach ($local as $l) { if (!ereg(\"^(([A-Za-z0-9!#$%&\'*+/=?^_`{|}~-][A-Za-z0-9!#$%&\'*+/=?^_`{|}~\\.-]{0,63})|(\\\"[^(\\\\|\\\")]{0,62}\\\"))$\", $l)) { return false; } } // Check if domain is an IP address if (ereg(\"^\\[?[0-9\\.]+\\]?$\", $parts[2])) { return true; } // Split domain part $domain = explode(\".\", $parts[2]); // Check individual domain parts foreach ($domain as $d) { // Since there are IDN\'s, nothing can be tested here anymore // except if there is an empty domain part (means that there // were two consecutive dots). if ($d == \"\") { return false; } } return true; } function process() { // Check if all data fields are available if ($this->sender == null) { $this->fail(\"Sender address not set.\"); } if (0 == count($this->recipients)) { $this->fail(\"No recipients are set.\"); } // Check if all required fields are set foreach ($this->required as $r) { if (empty($_POST[$r]) || trim($_POST[$r]) == \"\") { if ($this->errorURL != null) { header(sprintf(\"Location: %s\", $this->errorURL)); exit(0); } else { $this->fail(sprintf(\"Required field \'%s\' not set.\", $r)); } } } $boundary = md5(uniqid(time())); $h = array(); $h[] = sprintf(\"X-Mailer: formmail.php %s at %s\", $this->version, $this->getScriptURL()); $h[] = \"MIME-Version: 1.0\"; $h[] = sprintf(\"Content-Type: multipart/mixed; boundary=\\\"%s\\\"\", $boundary); $h[] = sprintf(\"From: %s\", $this->sender); for ($i = 1; $i < count($this->recipients); $i++) { $h[] = sprintf(\"To: %s\", $this->recipients[$i]); } $m = \"This is a multi-part message in MIME format.\\n\"; $m .= \"\\n\"; $m .= sprintf(\"--%s\\n\", $boundary); $m .= \"Content-Type: text/plain; charset=iso-8859-1\\n\"; $m .= \"\\n\"; $m .= sprintf(\"%s\\n\", $this->intro); $m .= \"\\n\"; foreach ($_POST as $n => $v) { $m .= sprintf(\"%s: %s\\n\", $n, $v); } foreach ($_FILES as $n => $v) { if (@$fd = fopen($v[\"tmp_name\"], \"rb\")) { $m .= sprintf(\"\\n--%s\\n\", $boundary); $m .= sprintf(\"Content-Type: application/octet-stream; name=\\\"%s\\\"\\n\", $v[\"name\"]); $m .= \"Content-Transfer-Encoding: base64\\n\"; $m .= sprintf(\"Content-Description: %s\\n\", $v[\"name\"]); $m .= sprintf(\"Content-Disposition: attachment; filename=%s\\n\\n\", $n); $buf = fread($fd, $v[\"size\"]); $m .= chunk_split(base64_encode($buf), 76, \"\\n\"); fclose($fd); unset($buf); } } mail($this->recipients[0], $this->subject, $m, join(\"\\n\", $h)); if ($this->followupURL != null) { header(sprintf(\"Location: %s\", $this->followupURL)); exit(0); } else { fail(\"Thank you for submitting the form.\", 0); } } } function formmail($mailfrom, $mailto, $subject = \"formmail.php\", $intro = \"Your web form was sent:\", $required = \"\", $followup = \"\", $error = \"\") { if ($_SERVER[\"REQUEST_METHOD\"] != \"POST\") { return; } $f = new FormMailClass(); $f->setSender($mailfrom); $f->addRecipient($mailto); $f->setSubject($subject); $f->setIntro($intro); $f->setRequiredFields(explode(\",\", $required)); $f->setFollowupURL($followup); $f->setErrorURL($error); $f->process(); } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
http://www.php.net/manual/de/function.mail.php
Einfach deine Adresse in dem Format Jocko<jocko@anbieter.endung> übergeben.
Mit der Weiterleitung kannst du es entweder per header(\'Location: http://www.example.com/\'); lösen, wenn du davor keine Ausgabe tätigst, also das Formular and eine separate Datei sendest oder per HTML-Metatag, also <meta http-equiv=\"refresh\" content=\"5; URL=http://example.com/\">. -
action=\"?\"
Statt ? musst du die adresse des zieles eintragen, in diesem falle muss dort stehen action=\"./formmail.php\" -
$header = \"From: DEIN NAME <OPTIONAL DEINE MAIL>\\n\"; $header .= \"Reply-To: DEINE MAIL\\n\"; $header .= \"Mailer: PHP/\".phpversion().\"\\n\"; $header .= \"Sender-IP: \".$_SERVER[\'REMOTE_ADDR\'].\"\\n\"; $header .= \"Content-Type: text\\n\"; $content = \"DER INHALT DEINER MAIL\"; if(mail(\"MAIL ADRESSE EMPFÄNGER\", \"BETREFF\", $content, $header)) header(Location: danke.html); else echo \"FEHLER MELDUNG!\";
Einfach die mit großen Buchstaben geschriebenen Platzhalter mit deinen Angaben ersetzen.
Hoffe das hilft dir weiter. -
mergener schrieb:
action=\'?\'
Statt ? musst du die adresse des zieles eintragen, in diesem falle muss dort stehen action=\'./formmail.php\'
Hab das ganze Zeigs aus dem Internet,und dort steht,dass man das ? dort lassen muss...
--------------------------------------------------------------------------------------------
econline schrieb:
$header = \'From: DEIN NAME <OPTIONAL DEINE MAIL>\\n\'; $header .= \'Reply-To: DEINE MAIL\\n\'; $header .= \'Mailer: PHP/\'.phpversion().\'\\n\'; $header .= \'Sender-IP: \'.$_SERVER[\'REMOTE_ADDR\'].\'\\n\'; $header .= \'Content-Type: text\\n\'; $content = \'DER INHALT DEINER MAIL\'; if(mail(\'MAIL ADRESSE EMPFÄNGER\', \'BETREFF\', $content, $header)) header(Location: danke.html); else echo \'FEHLER MELDUNG!\';
Einfach die mit großen Buchstaben geschriebenen Platzhalter mit deinen Angaben ersetzen.
Hoffe das hilft dir weiter.
Muss ich dass eifach am ende von formmail.php einfügen?
*keine Ahnung von PHP hab*
Beitrag geändert: 18.2.2008 18:16:59 von jocko -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage