PHP: Kontakt Forumlar mit Email vernknüpfen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
betreff
brauche
code
dank
datei
domain
email
fehler
form
formular
ftp
inhalt
nachricht
post
senden
test
text
url
vorname
-
Das habe ich für meine Webside benutzt:
Das musst du aber anpassen!!!
<h2>Mail</h2> <?php function mailcheck($mail) { $mail = eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $mail); return $mail; } if( $_GET["mod"] == "send" ) { $ihremail = "deine@emailadresse"; $error = Array(); $errorCount = 0; $name = $_POST['name']; $email = $_POST['abs']; $betreff = $_POST['btr']; $text = $_POST['msg']; if(empty($name)) { $error[$errorCount] = 1; $errorCount++; } if(empty($email)) { $error[$errorCount] = 2; $errorCount++; } if(!mailcheck($email)) { $error[$errorCount] = 3; $errorCount++; } if(empty($betreff)) { $error[$errorCount] = 4; $errorCount++; } if(empty($text)) { $error[$errorCount] = 5; $errorCount++; } if( $errorCount == 0 ) { $email = "\"$name\" <$email>"; $nachricht = $text; $subject = $betreff; $nachricht1 = $email . "\n\n" . $nachricht; mail($ihremail,$subject,$nachricht1,"FROM: $email"); } if( $errorCount == 0 ) { $sendsuccessful = true; } else { $sendsuccessful = false; } $mailsend = true; } else { $mailsend = false; } if( $mailsend ) { if( $sendsuccessful ) { ?> <h3>Die Mail wurde erfolgreich versand.</h3> <?php } else { ?> <h3>Eine E-Mail an Coder.0x1 senden</h3> <p> <form action="./?page=mail&mod=send&lang=<?php echo $lang; ?>" method="POST"> <table border="0px"> <tr> <td>Name:</td> <td><input type="text" name="name" value="<?php echo $name; ?>"<?php if( in_array( 1, $error ) ) echo " style=\"background-color: #FF8080;\""; ?>></input></td> <td> <?php if( in_array( 1, $error ) ) echo "<span style=\"color: red;\"><img src=\"./img/false_s.gif\"></img> Bitte geben Sie einen Namen ein</span>"; else echo "<img src=\"./img/true_s.gif\"></img>"; ?> </td> </tr> <tr> <td>E-Mail:</td> <td><input type="text" name="abs" value="<?php echo $email; ?>"<?php if( in_array( 2, $error ) || in_array( 3, $error ) ) echo " style=\"background-color: #FF8080;\""; ?>></input></td> <td> <?php if( in_array( 2, $error ) ) echo "<span style=\"color: red;\"><img src=\"./img/false_s.gif\"></img> Bitte geben Sie ihre E-Mailadresse ein</span>"; else if( in_array( 3, $error ) ) echo "<span style=\"color: red;\"><img src=\"./img/false_s.gif\"></img> Ihre E-Mailadresse ist fehlerhaft</span>"; else echo "<img src=\"./img/true_s.gif\"></img>"; ?> </td> </tr> <tr> <td>Betreff:</td> <td><input type="text" name="btr" value="<?php echo $betreff; ?>"<?php if( in_array( 4, $error ) ) echo " style=\"background-color: #FF8080;\""; ?>></input></td> <td> <?php if( in_array( 4, $error ) ) echo "<span style=\"color: red;\"><img src=\"./img/false_s.gif\"></img> Bitte geben Sie einen Betreff ein</span>"; else echo "<img src=\"./img/true_s.gif\"></img>"; ?> </td> </tr> <tr> <td>Nachricht:</td> <td><textarea name="msg" rows="5" cols="50"<?php if( in_array( 5, $error ) ) echo " style=\"background-color: #FF8080;\""; ?>><?php echo $text; ?></textarea></td> <td> <?php if( in_array( 5, $error ) ) echo "<span style=\"color: red;\"><img src=\"./img/false_s.gif\"></img> Bitte geben Sie eine Nachricht ein</span>"; else echo "<img src=\"./img/true_s.gif\"></img>"; ?> </td> </tr> <tr> <td></td> <td> <input type="reset" name="reset" value="Zurücksetzen"></input> <input type="submit" name="submit" value="E-Mail senden"></input> </td> <td></td> </tr> </table> </form> </p> <?php } } else { ?> <h3>Eine E-Mail an Coder.0x1 senden</h3> <p> <form action="./?page=mail&mod=send&lang=<?php echo $lang; ?>" method="POST"> <table border="0px"> <tr> <td>Name:</td> <td><input type="text" name="name" value="Ihr Name"></input></td> </tr> <tr> <td>E-Mail:</td> <td><input type="text" name="abs" value="E-Mailadresse"></input></td> </tr> <tr> <td>Betreff:</td> <td><input type="text" name="btr" value="Betreff"></input></td> </tr> <tr> <td>Nachricht:</td> <td><textarea name="msg" rows="5" cols="50">Nachricht</textarea></td> </tr> <tr> <td></td> <td> <input type="reset" name="reset" value="Zurücksetzen"></input> <input type="submit" name="submit" value="E-Mail senden"></input> </td> </tr> </table> </form> </p> <?php } ?>
Beitrag zuletzt geändert: 17.7.2011 17:10:36 von coder-0x1 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du musst es aber noch bearbeiten, da sind, glaub' ich noch Sachen drin, die du nicht brauchst.
Und die E-Mailadresse musst du ändern...
Wenn du es dir anschauen willst, dann hier. -
Email? Wo? du meinst das mit $Lost="EMAIL"... das war nur ein beispiel wollte jetzt nicht meine email hier angeben :)
Naja wenn der FTP zugang wieder geht ... kommte mit FZ nicht klar :)
Naja liebe grüßle -
Hast du dir das Original (link) mal angesehen?
Das ist Mehrsprachig.
Keine Angst, der Code, den ich gepostet habe, ist einsprachig (Deutsch), aber es wir die Sprachvariable $lang immer weitergegeben.
Ich hatte ein bischen Zeit und habe es geändert:
<h2>Mail</h2> <?php function mailcheck($mail) { $mail = eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $mail); return $mail; } if( $_GET["mod"] == "send" ) {
Dann musst du deine E-Mailadresse eingeben:
$ihremail = "deine@emailadresse";
und dann
$error = Array(); $errorCount = 0; $name = $_POST['name']; $email = $_POST['abs']; $betreff = $_POST['btr']; $text = $_POST['msg']; if(empty($name)) { $error[$errorCount] = 1; $errorCount++; } if(empty($email)) { $error[$errorCount] = 2; $errorCount++; } if(!mailcheck($email)) { $error[$errorCount] = 3; $errorCount++; } if(empty($betreff)) { $error[$errorCount] = 4; $errorCount++; } if(empty($text)) { $error[$errorCount] = 5; $errorCount++; } if( $errorCount == 0 ) { $email = "\"$name\" <$email>"; $nachricht = $text; $subject = $betreff; $nachricht1 = $email . "\n\n" . $nachricht; mail($ihremail,$subject,$nachricht1,"FROM: $email"); } if( $errorCount == 0 ) { $sendsuccessful = true; } else { $sendsuccessful = false; } $mailsend = true; } else { $mailsend = false; } if( $mailsend ) { if( $sendsuccessful ) { ?> <h3>Die Mail wurde erfolgreich versand.</h3> <?php } else { ?>
So, hier solltest du auch etwas ändern:
<h3>Eine E-Mail an Coder.0x1 senden</h3>
Und dann weiter:
<p> <form action="./?page=mail&mod=send" method="POST"> <table border="0px"> <tr> <td>Name:</td> <td><input type="text" name="name" value="<?php echo $name; ?>"<?php if( in_array( 1, $error ) ) echo " style=\"background-color: #FF8080;\""; ?>></input></td> <td> <?php if( in_array( 1, $error ) ) echo "<span style=\"color: red;\">Bitte geben Sie einen Namen ein</span>"; ?> </td> </tr> <tr> <td>E-Mail:</td> <td><input type="text" name="abs" value="<?php echo $email; ?>"<?php if( in_array( 2, $error ) || in_array( 3, $error ) ) echo " style=\"background-color: #FF8080;\""; ?>></input></td> <td> <?php if( in_array( 2, $error ) ) echo "<span style=\"color: red;\">Bitte geben Sie ihre E-Mailadresse ein</span>"; else if( in_array( 3, $error ) ) echo "<span style=\"color: red;\">Ihre E-Mailadresse ist fehlerhaft</span>"; ?> </td> </tr> <tr> <td>Betreff:</td> <td><input type="text" name="btr" value="<?php echo $betreff; ?>"<?php if( in_array( 4, $error ) ) echo " style=\"background-color: #FF8080;\""; ?>></input></td> <td> <?php if( in_array( 4, $error ) ) echo "<span style=\"color: red;\">Bitte geben Sie einen Betreff ein</span>"; ?> </td> </tr> <tr> <td>Nachricht:</td> <td><textarea name="msg" rows="5" cols="50"<?php if( in_array( 5, $error ) ) echo " style=\"background-color: #FF8080;\""; ?>><?php echo $text; ?></textarea></td> <td> <?php if( in_array( 5, $error ) ) echo "<span style=\"color: red;\">Bitte geben Sie eine Nachricht ein</span>"; ?> </td> </tr> <tr> <td></td> <td> <input type="reset" name="reset" value="Zurücksetzen"></input> <input type="submit" name="submit" value="E-Mail senden"></input> </td> <td></td> </tr> </table> </form> </p> <?php } } else { ?>
Hier auch etwas ändern:
<h3>Eine E-Mail an Coder.0x1 senden</h3>
Und zum Schluss:
<p> <form action="./?page=mail&mod=send&lang=<?php echo $lang; ?>" method="POST"> <table border="0px"> <tr> <td>Name:</td> <td><input type="text" name="name" value="Ihr Name"></input></td> </tr> <tr> <td>E-Mail:</td> <td><input type="text" name="abs" value="E-Mailadresse"></input></td> </tr> <tr> <td>Betreff:</td> <td><input type="text" name="btr" value="Betreff"></input></td> </tr> <tr> <td>Nachricht:</td> <td><textarea name="msg" rows="5" cols="50">Nachricht</textarea></td> </tr> <tr> <td></td> <td> <input type="reset" name="reset" value="Zurücksetzen"></input> <input type="submit" name="submit" value="E-Mail senden"></input> </td> </tr> </table> </form> </p> <?php } ?>
Ich denke, das ist alles...
Beitrag zuletzt geändert: 18.7.2011 13:49:14 von coder-0x1 -
Naja ich warte noch bis der FTP zugang wieder offen ist dann probier ich es mal aus.
Wenns net klappt dann meld ich mich nochmal.
Danke vorerst mal :) -
FTP funktioniert, nur Filemanager nicht.
@coder
Wie wär's damit?
function mailcheck($email) { $isValid = true; $atIndex = strrpos($email, "@"); if (is_bool($atIndex) && !$atIndex) { $isValid = false; } else { $domain = substr($email, $atIndex+1); $local = substr($email, 0, $atIndex); $localLen = strlen($local); $domainLen = strlen($domain); if ($localLen < 1 || $localLen > 64) { $isValid = false; } elseif ($domainLen < 1 || $domainLen > 255) { $isValid = false; } elseif ($local[0] == '.' || $local[$localLen-1] == '.') { $isValid = false; } elseif (preg_match('/\\.\\./', $local)) { $isValid = false; } elseif (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) { $isValid = false; } elseif (preg_match('/\\.\\./', $domain)) { $isValid = false; } elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local))) { if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local))) { $isValid = false; } } if ($isValid && !(@checkdnsrr($domain,"MX") || @checkdnsrr($domain,"A"))) { $isValid = false; } } return $isValid; }
-
fabo schrieb:
FTP funktioniert, nur Filemanager nicht.
@coder
Wie wär's damit?
function mailcheck($email) { $isValid = true; $atIndex = strrpos($email, "@"); if (is_bool($atIndex) && !$atIndex) { $isValid = false; } else { $domain = substr($email, $atIndex+1); $local = substr($email, 0, $atIndex); $localLen = strlen($local); $domainLen = strlen($domain); if ($localLen < 1 || $localLen > 64) { $isValid = false; } elseif ($domainLen < 1 || $domainLen > 255) { $isValid = false; } elseif ($local[0] == '.' || $local[$localLen-1] == '.') { $isValid = false; } elseif (preg_match('/\\.\\./', $local)) { $isValid = false; } elseif (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) { $isValid = false; } elseif (preg_match('/\\.\\./', $domain)) { $isValid = false; } elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local))) { if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local))) { $isValid = false; } } if ($isValid && !(@checkdnsrr($domain,"MX") || @checkdnsrr($domain,"A"))) { $isValid = false; } } return $isValid; }
Ja, das sieht gut aus.
Es behandel auf jeden Fall alle (soweit ich sehe) möglichen Fehler und Falscheingaben.
-
Exsistieren die $_POST Felder "name" und "abs" ?
-
Vor dem mail()-Befehl einfach mal
die(var_dump($_POST));
schreiben und prüfen, welche Daten an das Script übergeben werden.
Beitrag zuletzt geändert: 21.7.2011 13:26:49 von fabo -
Ich glaub das Problem hat sich mittlerweile erledigt, wir haben das gestern im Chat geklärt
-
Mich interessiert trotzdem, wo der Fehler war
-
1. Fehler war:
$nachricht = "Test" Name = $Vorname E-Mail = $Email;
könnte so aussehen:
$nachricht = "Test Name = ".$Vorname." E-Mail = ".Email." ";
Und dann waren noch die Variablen $Vorname und $Email leer, weil bei der Übergabe per $_POST nicht die gleichen Namen benutzt worden sind wie im HTML-form...
-
alfr3d schrieb:
1. Fehler war:
$nachricht = "Test" Name = $Vorname E-Mail = $Email;
könnte so aussehen:
$nachricht = "Test Name = ".$Vorname." E-Mail = ".Email." ";
Und dann waren noch die Variablen $Vorname und $Email leer, weil bei der Übergabe per $_POST nicht die gleichen Namen benutzt worden sind wie im HTML-form...
*rotwerd* Ja ist mir später auch aufgefallen... Naja habs soweit eigentlich jetzt fertig :)
Alfredolin :) ich danke dir nochmal ganz recht herzlich :)
Kann geschlossen werden -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage