Файл: wapxl.ru/user/messages/form.php
Строк: 74
<?
require'../../shaxty.php';
// Определяем диалог
$dialog = isset ($_REQUEST['dialog']) ? func::checkin($_REQUEST['dialog']) : false;
$resud = core:: $db -> queryFetch("SELECT * FROM `messages` WHERE `id`=?", array($dialog));
if (!empty($dialog) && !isset($resud['id'])){
func::errors('<b>Такого диалога нет!</b>', '<a href="'.getenv("HTTP_REFERER").'" class="href">Вернуться</a>');
}
//func::spamer(); // Защита от спамеров
user::kiks(); // Проверяем не выпнут ли юзер
if(!$_POST)
{
echo "Ошибка!";
}else{
$reg_kod = isset($_POST['kod']) ? func::checkin($_POST['kod']) : '';
$msg = func::checkin($_POST['msg']);
// Проверка на спам
$old = (core::$level > core::$set['lev_min']) ? core::$set['sek_min'] : core::$set['sek_max'];
$query = @mysql_query("SELECT * FROM `mess_out` WHERE `user_id` = '".core::$user['id']."' AND `time` > '".(core::$realtime-$old)."';");
$query = core::$db->query("Select * FROM `mess_dialog` WHERE `user_id`=? and `dialog`=? and `time`>?", array(core::$user['id'],$dialog,(core::$realtime-$old)));
if ($query->fetchColumn() > 0){
func::spamer_on('',$old);
func::errors('<b>Вы не можете так часто писать<br/>Порог '.$old.' секунд</b>', '<a href="'.getenv("HTTP_REFERER").'" class="href">Вернуться</a>');
}
// Проверка постов
if (core::$user[core::$set['posts_act']]<core::$set['posts_pr'])func::errors('<b>Чтобы писать записки, нужно набрать '.core::$set['posts_pr'].' постов форума!</b>', '<a href="'.getenv("HTTP_REFERER").'" class="href">Вернуться</a>');
// Ввод сообщения
if (func::utf_strlen($msg)==0)func::errors('<b>Пустое сообщение!</b>', '<a href="'.getenv("HTTP_REFERER").'" class="href">Вернуться</a>');
$fail = 0;
$fails = 0;
// Обработка файла (если есть)
if ($_FILES['fail']['size'] > 0){
$fname = strtolower($_FILES['fail']['name']);
$fnames=$_FILES['fail']['name'];
$fsize = $_FILES['fail']['size'];
// Список допустимых расширений файлов.
$al_ext = array('rar', 'zip', 'pdf', 'txt', 'tar', 'gz', 'jpg', 'jpeg', 'gif', 'png', 'bmp', '3gp', 'mp3', 'mpg', 'sis', 'thm', 'jar', 'jad', 'cab', 'sis', 'sisx', 'exe', 'msi');
$ext = explode(".", $fname);
// Проверка на допустимый размер файла
if ($fsize >= 1024 * core::$set['flsz_pr'])echo 'Вес файла превышает <b>'.core::$set['flsz_pr'].'</b>';
if ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess"))echo '<b>Файлы такого типа запрещены!</b>';
// Проверка файла на наличие только одного расширения
if (count($ext) != 2)echo'<b>Запрещены файлы не имеющие имени, расширения, или с двойным расширением.</b>';
// Проверка допустимых расширений файлов
if (!in_array($ext[1], $al_ext))echo 'Запрещенный тип файла!<br />К отправке разрешены только файлы, имеющие следующее расширение:<br /><b>'.implode(', ', $al_ext).'</b>';
// Проверка на длину имени
if (strlen($fname) > 30)echo '<b>Длина названия файла не должна превышать 30 символов!</b>';
// Проверка на запрещенные символы
if (eregi("[^a-z0-9.()+_-]", $fname))echo 'В названии файла "<b>' . $fname . '</b>" присутствуют недопустимые символы.<br />Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- )<br />Запрещены пробелы.<br />';
// Проверка наличия файла с таким же именем
if (file_exists(H."sites/".core::$site['domain']."/modul_files/privat/$fname")) {
$fname = core::$realtime.'_'.$fname;
}
if ((move_uploaded_file($_FILES["fail"]["tmp_name"], H."sites/".core::$site['domain']."/modul_files/privat/$fname")) == true) {
//echo 'Файл прикреплен!<br/>';
$fail = H."sites/".core::$site['domain']."/modul_files/privat/$fname";
$fails = $fsize;
}else {
echo '<b>Ошибка отправки файла.</b>';
}
}
if(!empty($dialog)){
// проверяем есть ли диалог и выбираем данные из таблы
$resu = core:: $db -> queryFetch("SELECT * FROM `messages` WHERE `id`=?", array($dialog));
if (!isset($resu['id'])){
echo '<b>Такого диалога нет!</b>';
}
// если диалог между двумя проверяем не покидал ли 2 диалог
if ($resu['cols']==2){
// Провееряем не покидал ли юзер этот диалог
$ruse1 = core:: $db -> queryFetch("SELECT * FROM `mess_users` WHERE `user_id`!=? and `dialog`=?", array(core::$user['id'],$resu['id']));
if ($ruse1['aut']==1){
// Если покидал, снова даем ему доступ
$dbi = core::$db -> prepare("UPDATE `mess_users` SET `aut`=? WHERE `user_id`!=? and `dialog`=?");
$dbi -> execute(0,core::$user['id'],$resu['id']);
}
// проверка на существование юзера
if (!user::user_inf($ruse1['user_id']))echo '<b>Такого пользователя нет!</b>';
// попытки написать себе
if (user::user_inf($ruse1['user_id']) == core::$user['id'])echo '<b>Себе пишешь?</b>';
// х-статус "Не беспокоить"
if (user::user_inf($ruse1['user_id'],'xstatus')==2 && core::$user['level']<8)echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>';
if (user::ignor(user::user_inf($ruse1['user_id']),core::$user['id']))echo '<b>Вы не можете писать этому пользователю, т.к. он отправил вас в игнор.</b>';
}
// если нет пользователя и диалога выводим ошибку
}else echo '<b>Ошибка!</b><br />Сообщите администрации';
// если диалог не найден
if (!isset($resu['id'])){
// создаем диалог между 2 пользователями
$dbi = core::$db -> prepare("INSERT INTO `messages` SET `users`=?, `time`=?, `cols`=?");
$dbi -> execute("::".core::$user['id']."::".user::user_inf($nk)."::",core::$realtime,2);
// определяем ID созданного диалога
$dialog = core::$db -> lastInsertId();
// Получаем данные созданного диалога
$resu = core:: $db -> queryFetch("SELECT * FROM `messages` WHERE `id` = '" . $dialog . "'");
// Записываем пользователей которым доступен этот диалог
$dbi = core::$db -> prepare("INSERT INTO `mess_users` SET `user_id`=?, `dialog`=?");
$dbi -> execute(core::$user['id'],$dialog);
$dbi -> execute(user::user_inf($nk),$dialog);
// если диалог найден
}else{
// определяем ID диалога
$dialog = $resu['id'];
// изменяем время диалога
$dbi = core::$db -> prepare("UPDATE `messages` SET `time`=? WHERE `id`=?");
$dbi -> execute(core::$realtime,$dialog);
}
// Создаем сообщение
$dbi = core::$db -> prepare("INSERT INTO `mess_dialog` SET `user_id`=?, `users`=?, `time`=?, `msg`=?, `fail`=?, `fails`=?, `dialog`=?");
$dbi -> execute(core::$user['id'],$resu['users'],core::$realtime,$msg,$fail,$fails,$dialog);
// Определяем ид сообщения
$mess_id = core::$db -> lastInsertId();
//Выводим пользователей участвующих в диалоге, кроме того кто пишет сообщение
$read = core::$db->query("SELECT * FROM `mess_users` WHERE `dialog`=? and `user_id`!=? and `aut`!=?", array($dialog,core::$user['id'],1));
// Делаем запись в таблицу непрочтенных сообщений
while ($a = $read -> fetch()) {
$dbi = core::$db -> prepare("INSERT INTO `mess_read` SET `user_id`=?, `mess_id`=?, `dialog`=?");
$dbi -> execute($a['user_id'],$mess_id,$dialog);
}
echo '<b>Сообщение отправлено!</b><br />';
/*Задаем правила сортировки переадресации на страницу диалога */
$order = core::$user['p_sort'] ? 'end' : '1';
//header ('Location: messages.php?mod=dialog&dialog='.$dialog.'&page='.$order.'&'.SID);
/*if(user::user_inf($nk,'avtootvet')!=NULL){
echo '<p>Автоответчик: '.user::user_inf($nk,'avtootvet').'</p>';
}*/
}
?>