Mailversand per PHP

leuktra

Mitglied
Hallo zusammen,

ich möchte dieses Skript noch verbessern und weiß jedoch nicht wie,
was:

1.) die Sicherheit (Spam usw.) betrifft,
2.) die Verbesserung bei der Verwendung von PHP,
3.) die Anzeige einer Fehlerseite, wenn die Mail nicht
verschickt werden konnte

betrifft. Könntet Ihr mir helfen?

PHP:
<?php
$mailnachricht = trim($_POST[pruef]['mailnachricht']);
$email         = trim($_POST[pruef]['email']);
if(isset($_POST[action]))
{
$allesok = 1;
if(empty($mailnachricht))
{
$allesok = 0; $error[mailnachricht] = "Bitte korrekt ausf&uuml;llen!";
}
if(!preg_match("/[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$/",$email))
{
$allesok=0;
$error[email]= "Bitte korrekt ausf&uuml;llen!";
}
}
if($allesok)
{
$mailnachricht = wordwrap($mailnachricht,65);
$mailnachricht = strip_tags($mailnachricht);
$email         = strip_tags($email);

$headers    = "MIME-Version: 1.0\n";
$headers   .= "Content-Type: text/plain; charset=iso-8859-1\n";
$headers   .= "X-Mailer: PHP/" . phpversion() . "\n"; 
$headers   .= "X-Sender-IP: " . $REMOTE_ADDR . "\n";

$headers   .= "From:$mail\n";

$ip        = $_SERVER['REMOTE_ADDR'];
$uhrzeit   = date("H:i",time());
$tstamp    = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$datum     = date("d.m.y", $tstamp);

$text_mail = implode("", file("text_mail.txt"));
$text_mail = str_replace("{datum}",$datum,$text_mail);
$text_mail = str_replace("{ip}",$ip,$text_mail);
$text_mail = str_replace("{uhrzeit}",$uhrzeit,$text_mail);
$text_mail = str_replace("{email}",$email,$text_mail);
$text_mail = str_replace("{mailnachricht}",$mailnachricht,$text_mail);
$text_mail = ereg_replace("Ä", "Ae", $text_mail);
$text_mail = ereg_replace("ä", "ae", $text_mail);
$text_mail = ereg_replace("Ü", "Ue", $text_mail);
$text_mail = ereg_replace("ü", "ue", $text_mail);
$text_mail = ereg_replace("Ö", "Oe", $text_mail);
$text_mail = ereg_replace("ö", "oe", $text_mail);
$text_mail = ereg_replace("ß", "ss", $text_mail);

$betreffmail     = "Nachricht";

mail("mail@soundsobeispiel.de", $betreffmail, $text_mail, $headers);

if ($email !="") 
{
$text_mail_2 = implode("", file("text_mail_2.txt"));
$text_mail_2 = str_replace("{datum}",$datum,$text_mail_2);
$text_mail_2 = str_replace("{email}",$email,$text_mail_2);
$text_mail_2 = str_replace("{mailnachricht}",$mailnachricht,$text_mail_2);
$text_mail_2 = ereg_replace("Ä", "Ae", $text_mail_2);
$text_mail_2 = ereg_replace("ä", "ae", $text_mail_2);
$text_mail_2 = ereg_replace("Ü", "Ue", $text_mail_2);
$text_mail_2 = ereg_replace("ü", "ue", $text_mail_2);
$text_mail_2 = ereg_replace("Ö", "Oe", $text_mail_2);
$text_mail_2 = ereg_replace("ö", "oe", $text_mail_2);
$text_mail_2 = ereg_replace("ß", "ss", $text_mail_2);

$betreffmail2 = "Nachricht";

mail($email, $betreffmail2, $text_mail_2, $headers);

}
echo 'E-Mail wurde erfolgreich versendet!';
}
else
{
?>

<form name="mail" method="post" action="mail.php">

<?php echo $error[mailnachricht];?>
<textarea name="pruef[mailnachricht]" id="mailnachricht" rows="5" cols="10" wrap="physical"><? echo $mailnachricht;?></textarea>

<?php echo $error[email];?></span>
<input type="text" name="pruef[email]" id="email" value="<? echo $email;?>">

<input type="hidden" name="action" value="1"><input type="submit" name="Submit" value="Senden">

<?php 
}
?>
 
Hallo,

zu 1. kann ich dir nur empfehlen mit nem Captcha zu arbeiten, dass keine Spambots dein E-Mailformular benutzen um unzählige Mails zu versenden! Ist ganz hilfreich und lässt sich imemr wieder verwenden...
Tutorials findest du darüber zu hauf!

zu 2. sieht doch ganz OK aus, dein PHP

zu 3. kann ich dir empfehlen eine "Erfolgs"-Variable zu setzen. Wenn $erfolg = true, dann Erfolgsmeldung, ansonsten halt Fehlermeldung.

Bin nun nicht der PHP-Pro, ich hoffe konnte dir aber trotzdem ein paar Anhaltspunkte liefern.

Grüße
Mstricha
 
Hi Mstricha,

danke für Deine Antwort. Ich bin ja auch kein PHP-Profi.

Per Captcha wollte ich das nicht umsetzen, deshalb brauche ich auch eine "Begutachtung", ob die momentane Lösung wirklich Spamsicher ist

Punkt drei werde ich mal versuchen, umzusetzen!

Hat noch jemand ein paar Tips?
 
Zurück