Вот, проверьте на безопасность, а конкретнее на спам. Насколько я знаю (а я знаю) с этого скрипта возможен спам любых почтовых ящиков.
Был бы очень рад, если бы кто-нибудь указал на ошибку.
PHP код:
<?php
$version="1.1";
##########################
# DT Feedback v1.1 #
# Автор: Фёдоров Александр #
# Дата: 4 июля 2005 #
# URL: http://fedorov.vitalain.ru #
##########################
// КОНФИГУРАЦИЯ
// ваше имя
$your_name="blablabla";
// ваш email
$your_email="lala@la.la";
// Ограничить количество отправляемых сообщений: yes/no (это
$spamblock="yes";
// Интервал времени в сек. между отправками, например 600 (10 мин.)
$lim_time="1800";
// Страница (URL) на которую скрипт перейдет после отправки сообщения
$redirect="index.htm";
/*** ДАЛЬШЕ НИЧЕГО НЕ ИЗМЕНЯЕМ ***/
if (!isset ($userdir)) {
$z=dirname(__FILE__);
$z2=$_SERVER['DOCUMENT_ROOT'].dirname ($_SERVER['PHP_SELF']);
$userdir=substr ($z, strpos ($z, $z2)+strlen($z2));
if ($userdir<>"") $userdir.="/";
}
else $userdir=str_replace (":","", $userdir);
$log=$userdir."log.dat";
function validEmail($email) {
return (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',$email));
}
function fileRead ($file) {
$fp = fopen($file,"rb");
$content = fread($fp,filesize($file));
fclose($fp);
return $content;
}
function kavichki($string, $who) {
if ($who==1) {
$string=str_replace(""",'"',$string);
$string=str_replace("'","'",$string);
} else {
$string=str_replace('"',""",$string);
$string=str_replace("'","'",$string);
}
$string = ereg_replace("\\\'", "'", $string);
$string = ereg_replace('\\\"', '"', $string);
return $string;
}
if (isset($_REQUEST['fb'])&&$_REQUEST['fb']=="send") {
if(empty($ip)):
if (getenv('HTTP_X_FORWARDED_FOR')) { $ip=getenv('HTTP_X_FORWARDED_FOR'); }
else { $ip=getenv('REMOTE_ADDR');}
endif;
if (!isset($_REQUEST['name'])||$_REQUEST['name']==="") $error[]="U hebt geen naam ingevuld!";
if (!isset($_REQUEST['mess'])||$_REQUEST['mess']==="") $error[]="U hebt veld subject niet ingefuld!";
if (isset($_REQUEST['email'])) { if ($_REQUEST['email']!==""&&validEmail($_REQUEST['email'])==0) $error[]="Ongeldige e-mail!";
}
if (isset($spamblock)&&$spamblock=="yes") {
$str=''; $count=0;
$data=file($log);
for ($i = 0; $i<sizeof($data);$i++) {
$data_x=explode("|", $data[$i]);
$cur_ip = $data_x[0];
$last_time = $data_x[1];
$last_time = $last_time+$lim_time;
$cur_time=time();
if ($cur_ip==$ip) {
$count=$count+1;
if ($last_time>$cur_time) $error[]="Sorry.U kan niet meer dan 1 bericht binnen ".floor($lim_time/60)." min. versturen.";
else $data[$i]=$ip."|".time()."\r\n";
}
if ($count>1) $data[$i]='';
$str.=$data[$i];
}
}
if (!isset($error)) {
$to = "$your_name <$your_email>, " ;
$subj=htmlspecialchars($_REQUEST['subj']);
$email=$_REQUEST['email'];
$name=htmlspecialchars($_REQUEST['name']);
$mess = htmlspecialchars($_REQUEST['mess']);
$mess= str_replace("\n","<br>",$mess);
if ($email!=="") $semail="<a href=\"mailto:$email\">$email</a>"; else $semail='';
$message = '
<html>
<head>
<title>'.$subj.'</title>
</head>
<body>
<b>Hello, '.$your_name.'<br></b>
<p>'.$mess.'</p>
<br>---------<br>
<b>С Уважением, '.$name.' '.$semail.'</b><br><br>
<center>Powered by [url]DT Feedback v'.$version.'[/url]</center>
</body>
</html>';
$message=kavichki(preg_replace('/http:\/\/([^",)<>\s]*)/', "<nobr><a href=\"http://\\1\">http://\\1</a></nobr>",$message),1);
$message=str_replace(array("[url]","[/url]"),array("<a href='http://fedorov.vitalain.ru/'>","</a>"),$message);
$headers = "Content-type: text/html; charset=windows-1251 \r\n";
$headers .= "From: $name <$email>\r\n";
if (mail($to, $subj, $message, $headers)) {
echo "<meta http-equiv=\"Refresh\" content=\"2; url=$redirect\"><center><br><br><h2>Сообщение успешно отправлено.</h2></center>";
if (isset($spamblock)&&$spamblock=="yes") {
if ($count==0) {
$str=$ip."|".time()."\r\n";
$write=fopen($log,"a+") or die("<p>Не могу открыть файл $log</p>");
flock($write,2);
fputs($write,$str);
flock($write,3);
fclose($write);
} else {
$write=fopen($log,"w+") or die("<p>Не могу открыть файл $log</p>");
flock($write,2);
fputs($write,$str);
flock($write,3);
fclose($write);
}
}
} else {
echo "<center><br><br><h2>Fout.</h2></center>";
}
} else {
$errors="<center><table width='250' border='0'><tr><td><b style='color:red;text-align:center;'>Fout:</b><br><br></td></tr>";
for ($i=0;$i<sizeof($error);$i++) {
$errors.="<tr><td><li>".$error[$i]."</td></tr>";
}
$errors.="</table></center><br>";
echo $errors;
}
}
if (!isset($_REQUEST['submit'])||isset($error)) {
include($userdir."contact.html");
}
?>
|