- Code: Alles auswählen
<?php session_start();
function encrypt($string, $key) {
$result = '';
for($i=0; $i<strlen($string); $i++) {
$char = substr($string, $i, 1);
$keychar = substr($key, ($i % strlen($key))-1, 1);
$char = chr(ord($char)+ord($keychar));
$result.=$char;
}
return base64_encode($result);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Kontakt</title>
<link rel="stylesheet" type="text/css" href="Wahnwitzige.css" />
</head>
<body>
(Es folgt ein Textteil, den können wir getrost auslassen)
- Code: Alles auswählen
<?php
// *** Einstellungen ***
$mail_to = '(meine Mailaddy)'; // Empfängeradresse
// #############################################################################
$from_name=GetParam('fromname');
$from_nick=GetParam('fromnick');
$from_mail=strtolower(GetParam('frommail'));
$mail_subject=GetParam('mailsubject');
$mail_text=GetParam('mailtext');
$send=GetParam('s');
$err_text='';
if(trim($from_name)=='') $err_text.='Bitte geben Sie Ihren Namen an.<br>';
if(trim($from_nick)=='') $err_text.='Bitte geben Sie Ihren Nicknamen an.<br>';
if(trim($from_mail)=='')
$err_text.='Bitte geben Sie Ihre E-Mail-Adresse an.<br>';
else
if(!ereg('^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$',$from_mail))
$err_text.='Bitte geben Sie eine gültige E-Mail-Adresse an.<br>';
if(trim($mail_subject)=='') $err_text.='Bitte geben Sie einen Betreff ein.<br>';
if(trim($mail_text)=='') $err_text.='Bitte geben Sie einen Nachrichtentext ein.<br>';
// *** Zu langen Text abschneiden ***
if(strlen($mail_text)>1000) {
$mail_text=substr($mail_text,0,1000).'... (Text wurde gekürzt!)';
}
$from_name=str_replace(chr(34),"''",$from_name);
$from_nick=str_replace(chr(34),"''",$from_nick);
$mail_subject=str_replace(chr(34),"''",$mail_subject);
$from_name=stripslashes($from_name);
$from_nick=stripslashes($from_nick);
$from_mail=stripslashes($from_mail);
$mail_subject=stripslashes($mail_subject);
$mail_text=stripslashes($mail_text);
if (($send == '1') && ($err_text != '')) {
echo '<p><big><b>Fehler:</b></big><br>';
echo $err_text.'</p>';
}
if (($send != '1') || ($err_text != '')) {
$sicherheits_eingabe = encrypt($_POST["sicherheitscode"], '12dhlkweruz8989'); // key sollte ident sein mit captcha.php
$sicherheits_eingabe = str_replace("=", "", $sicherheits_eingabe);
if(isset($_SESSION['captcha_spam']) AND $sicherheits_eingabe == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
}
else
{ die ("Der Sicherheitscode ist falsch!"); }
?>
</h1>
</p>
<form action="<?=GetParam('PHP_SELF','S')?>" method="post">
<table border=0 cellspacing=2 cellpadding=0 width=100%>
<tr><td nowrap align=right>Name:</td><td> </td>
<td width=100%><input type="text" name="fromname" size=50 maxlength=120 value="<?=$from_name?>"></td></tr>
<tr><td nowrap align=right>Nickname:</td><td> </td>
<td width=100%><input type="text" name="fromnick" size=50 maxlength=120 value="<?=$from_nick?>"></td></tr>
<tr><td nowrap align=right>E-Mail-Adresse:</td><td></td>
<td width=100%><input type="text" name="frommail" size=50 maxlength=120 value="<?=$from_mail?>"></td></tr>
<tr><td nowrap align=right>Betreff:</td><td></td>
<td width=100%><input type="text" name="mailsubject" size=50 maxlength=120 value="<?=$mail_subject?>"></td></tr>
<tr><td nowrap align=right valign=top>Text:<br><i>(max. 1.000 Zeichen)</i></td><td></td>
<td width=100%><textarea cols=40 rows=10 name="mailtext"><?=$mail_text?></textarea></td></tr>
<tr><td nowrap align=right><img src="SecureCode/securecode.php" border="0" title="Sicherheitscode"></td><td></td>
<td width=100%><input type="text" name="sicherheitscode" size="5"> (Sicherheitscode)</td></tr>
<tr><td></td><td></td><td>
<input type="hidden" value="1" name="s">
<input type="submit" value="Senden" name="submit">
</td></tr>
</table>
</form>
<?php
} else {
$header="From: $from_name <$from_mail>\n";
$header.="Reply-To: $from_mail\n";
$header.="X-Mailer: PHP-ContactForm-Script\n";
$header.="Content-Type: text/html";
$mail_text.="<br><br>Nickname des Absenders: ".$from_nick;
$mail_date=gmdate('D, d M Y H:i:s').' +0000';
$send=0;
if(@mail($mail_to,$mail_subject,$mail_text,$header))
{
echo "<p><b>Die Nachricht wurde erfolgreich abgesendet.</b></p>";
echo "<p><a href=\"".GetParam('PHP_SELF','S')."?from_name=$from_name&from_mail=$from_mail\">Zurück zum Formular</a></p>";
}else{
echo "<p><b>Beim Versenden der Nachricht ist ein Fehler aufgetreten!</b></p>";
echo "<p><a href=\"".GetParam('PHP_SELF','S')."?from_name=$from_name&from_mail=$from_mail&mail_subject=$mail_subject&mail_text=";
echo urlencode($mail_text)."\">Zurück zum Formular</a></p>";
}
}
function GetParam($ParamName, $Method = 'P', $DefaultValue = '') {
if ($Method == 'P') {
if (isset($_POST[$ParamName])) return $_POST[$ParamName]; else return $DefaultValue;
} else if ($Method == 'G') {
if (isset($_GET[$ParamName])) return $_GET[$ParamName]; else return $DefaultValue;
} else if ($Method == 'S') {
if (isset($_SERVER[$ParamName])) return $_SERVER[$ParamName]; else return $DefaultValue;
}
}
?>
</body>
</html>
(Anm.: Ich habe die Datei captcha.php, die session, und das dazugehörige Subverzeichnis umbenannt in securecode, damit sie sich nicht mit einer anderen, auf demselben Server liegenden, Captcha-Datei meines Gästebuches in die Quere kommt, bzw. ich die Dateien auch selber unterscheiden kann
Wirft prinzipiell die Meldung "Die Sicherheitseingabe ist falsch" aus, ohne das Formular überhaupt erst anzuzeigen.
Ich glaub ja, es liegt daran, dass ich in ein und demselben Script Formular und Auswertung drin hab, normalerweise habe ich das sonst immer anders gemacht, aber es gibt in dem Fall Gründe dafür, das so und nicht anders zu machen.
Irgendwelche hilfreichen Ideen?
