// WR-forum v 1.9.9 // 06.03.12 г. // Miha-ingener@yandex.ru
// Модуль персональных сообщений (сообщений хранящихся внутри форума)
include "config.php";
$maxpmmsg="100000"; // Максимальное количество символов в персональном сообщении
$datapmdir="data-pm"; // Папка с данными перональных сообщений
$date=date("d.mmmmm.y"); $time=date("H:i");
$shapka="
Отправка / Просмотр ПС";
$name=""; $flag="0";// Очищаем переменные
if (isset($_COOKIE['wrfcookies'])) { // ищем В КУКАХ wrfcookies чтобы вывести ИМЯ
$wrfc=$_COOKIE['wrfcookies']; $wrfc=htmlspecialchars($wrfc); $wrfc=stripslashes($wrfc);
$wrfc=explode("|", $wrfc); $wrfname=$wrfc[0]; $wrfpass=$wrfc[1]; $name=urlencode($wrfname); $name=strtolower($name);
// ФАЗА 2: Сверяем логин и пароль в базе с тем, что у нас хранится в КУКАХ
$lines=file("$datadir/usersdat.php"); $maxi=count($lines); $i="1";
do {$dt=explode("|", $lines[$i]); $i++;
$dt[0]=strtolower($dt[0]); $pass=$wrfpass;
if ($dt[0]===$name and $dt[1]===$pass) {$flag=1; $i=$maxi;} // ЕСЛИ нашли юзера, значит последний раз цикл работает
} while($i < $maxi);
} else echo'$shapka Система внутренних сообщений работает только для ЗАРЕГИСТРИРОВАННЫХ ПОЛЬЗОВАТЕЛЕЙ!'; // ЕСЛИ есть КУКИ
if ($flag===1) { // ПОЛЬЗОВАТЕЛЬ ПРОШЁЛ КОНТРОЛЬ ДОСТОВЕРНОСТИ УЧЁТНОЙ ЗАПИСИ
function replacer ($text) { // ФУНКЦИЯ очистки кода
$text=str_replace(" ",' ',$text);
$text=str_replace(">",'>',$text);
$text=str_replace("<",'<',$text);
$text=str_replace("\"",'"',$text);
$text=preg_replace("/\n\n/",'',$text);
$text=preg_replace("/\n/",'
',$text);
$text=preg_replace("/\\\$/",'$',$text);
$text=preg_replace("/\r/",'',$text);
$text=preg_replace("/\\\/",'\',$text);
// если magic_quotes включена - чистим везде СЛЭШи в этих случаях: одиночные (') и двойные кавычки ("), обратный слеш (\)
if (get_magic_quotes_gpc()) { $text=str_replace("\"",'"',$text); $text=str_replace("\'",'\'',$text); $text=str_replace("\\",'\',$text); }
$text=str_replace("\r\n","
",$text);
$text=str_replace("\n\n",'
',$text);
$text=str_replace("\n",'
',$text);
$text=str_replace("\t",'',$text);
$text=str_replace("\r",'',$text);
$text=str_replace(' ',' ',$text);
return $text; }
if (isset($_GET['id'])) { // Если есть ИМЯ ПОЛЬЗОВАТЕЛЯ
$id=replacer($_GET['id']);
$id=strtolower($id); // переводим все ники в нижний регистр
if (is_file("$datapmdir/$id.dat")) { $linesn=file("$datapmdir/$id.dat"); $in=count($linesn); if ($in > 500) exit("$back Максимальное количество сообщение достигнуто/B>! Удалите свои сообщения или попросите пользователя, которому Вы отправляете сообщение почистить свой ящик!"); }
if(isset($_GET['deletemsg'])) { // Блок УДАЛЕНИЯ выбранного СООБЩЕНИЯ
$num=replacer($_GET['deletemsg']); if ($num=="" or strlen($num)<5) exit("$shapka Ошибка, выбирите сообщение для удаления, либо ошибка скрипта!");
if (is_file("$datapmdir/$id.dat")) {
$file=file("$datapmdir/$id.dat");
$fp=fopen("$datapmdir/$id.dat","w");
flock ($fp,LOCK_EX);
for ($i=0;$i< sizeof($file);$i++) {$dt=explode("|",$file[$i]); if ($dt[2]==$num) unset($file[$i]);}
fputs($fp, implode("",$file));
flock ($fp,LOCK_UN);
fclose($fp); } // if is_file
Header("Location: pm.php?readpm&id=$id"); exit; }
if (isset($_GET['alldelete'])) { // ОЧИСТКА ЯЩИКА
if ($id==$name & is_file("$datapmdir/$id.dat")) { unlink ("$datapmdir/$id.dat"); print"$shapka
Личные сообщения удалены!
Вы можете перейти на главную страницу форума по этой ссылке
";}
else exit("$shapka $back У ВАС отсутствуют сообщения! Ваша папка ПУСТА."); }
if (isset($_GET['sendpm'])) { // ОТПРАВКА СООБЩЕНИЯ
print"$shapka
Сообщение отправлено!
Вы можете закрыть это окно!
Либо перейти в папку с Вашими входящими письмами по этой ссылке: pm.php?readpm&id=$name.
Либо перейти на главную страницу форума по этой ссылке
|
"; exit; }
if (isset($_GET['readpm'])) { // ПРОСМОТР СООБЩЕНИЙ
if (is_file("$datapmdir/$id.dat") & $id===strtolower($name)) {
$rlines=file("$datapmdir/$id.dat"); $ri=count($rlines); $key="0";
if ($ri>0) { // Если файл не пуст
print"
Личные сообщения [Входящие: $ri шт.] |
Отправитель | Сообщение | .X. |
";
do {$ri--; $edt=explode("|",$rlines[$ri]);
$data=date("d.m.y H:i",$edt[2]);
$edt[1]=replacer($edt[1]); $edt[0]=replacer($edt[0]);
$edt[1]=str_replace("<br>",'
',$edt[1]);
if ($key==0) {$cvet="#E2F1FC"; $key=1;} else {$cvet="#F1F9FE"; $key=0;}
print"
$edt[0]
$data |
$edt[1]
|
.X.
|
";
} while($ri>0);
echo"
Удалить все сообщения";
} else {echo'
Ваша папка ПУСТА';} // if ($ri>0)
} } // isset($readpm)
if(isset($_GET['savepm'])) { // СОХРАНЕНИЕ сообщения
// Считываем всех пользователей, ищем того, которому адресовано сообщение
$lines=file("$datadir/userstat.dat"); $maxi=count($lines); $i="0";
do {$dt=explode("|", $lines[$i]); $i++;
$dt[0]=strtolower($dt[0]);
//$id==strtolower($id);
if ($dt[0]===$id) { // ЕСЛИ нашли юзера, которому адресовано сообщение, то пишем его
$i=$maxi; // Нашли, значит последний раз цикл работает
$msg=replacer($_POST['msg']); $msg=str_replace("|","I",$msg);
if ($msg=="" || strlen($msg)>$maxpmmsg) exit("$shapka $back Ваше
сообщение пустое или превышает $maxpmmsg символов.");
$day=mktime(); $text="$name|$msg|$day|";
$fp=fopen("$datapmdir/$id.dat","a+");
flock ($fp,LOCK_EX);
fputs($fp,"$text\r\n");
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);
} // if ($dt[0]===$id) если нашли юзера
} while($i < $maxi);
exit("");
}
if ($name!=$id) { // Если нет никакого вывода и ЧТОБЫ самому себе письма не отправлять!
print"$shapka
* Сообщение будет сохранено здесь. на форуме. Когда пользователь $id
зайдёт на форум, то увидит новое сообщение в своём ящике.";}
} else echo'Отсутствует обязательный ключ id=ИМЯ_ПОЛЬЗОВАТЕЛЯ_КОМУ_БУДЕТ_ОТПРАВЛЕНО_СООБЩЕНИЕ'; //if (isset($_GET['id']))
} // if ($flag==1)
?>