
Новичок
Профиль
Группа: Участник
Сообщений: 38
Регистрация: 4.7.2006
Где: Молдова
Репутация: нет Всего: нет
|
Если изобр. не выбрано, то немогу добавить объявление. надо сделать проверку если файл не выбран, то загружаем default изображение. Вот код: | Код | <? //Добавляем объвление
error_reporting (E_ALL);
include "config.php";
$antiflud="0"; $antispam="1"; // Задействовать функцию АНТИСПАМ? $valid_types = array("gif","jpg","png","jpeg"); // допустимые расширения
// Функция содержит ПРОДОЛЖЕНИЕ ШАПКИ - закрывает ВСЕ таблицы. Вызывается так: addtop(); function addtop() { global $wrboardname; // если в куках есть wrboardname, то выводим ИМЯ, иначе выводим форму для входа if (isset($_COOKIE['wrboardname'])) {$wrboardname=$_COOKIE['wrboardname'];}
print"<TD align=right>"; if (isset($wrboardname)) {print "<a href='tools.php?event=profile&pname=$wrboardname'>Ваш Профиль</a> <a href='tools.php?event=clearcooke'>Выход [<B>$wrboardname</B>]</a> ";} else {print "<a href='index.php?event=login'>вход в систему</a> | <a href='tools.php?event=reg'>регистрация</a> ";}
print"</TD></TR></TABLE></TD></TR></TABLE> <TABLE cellPadding=0 cellSpacing=0 width=100%><TR><TD><IMG height=8 src=images/blank.gif></TD></TR></TABLE>"; return true; }
if (!is_file("images/$brdskin/top.html")) {$topurl="images/top.html";} else {$topurl="images/$brdskin/top.html";}
// Событие добавления сообщения // + добавление фото if(isset($_GET['event'])) { if ($_GET['event'] =="add") {
// проверка Логина/Пароля юзера (может он хакер - тогда обломаем его!!!) if (isset($_COOKIE['wrboardname']) & isset($_COOKIE['wrboardpassword'])) { $wrname=strtolower($_COOKIE['wrboardname']); $wrpass=$_COOKIE['wrboardpassword']; $lines=file("$datadir/usersdat.php"); $i=count($lines); do {$i--; $rdt=explode("|", $lines[$i]); $realname=strtolower($rdt[0]); if ($wrname===$realname & $wrpass===$rdt[1]) {$ok="1";} } while($i > "1"); if (!isset($ok)) {setcookie("wrboardname", "", time()); setcookie("wrboardpassword", "", time()); print "Ошибка при работе с КУКИ! <font color=red><B>Вы не сможете разместить объявление.</B></font>"; exit;} }
if (!isset($ok) and $antispam=="1") {$num=$_POST['num']; $rand=$_POST['rand']; if ($num!=$rand) {print"$back <font color=red>Код на картинке НЕ совпадает</font> с введённым вами!"; exit;}}
if (isset($_POST['name'])) {$name=$_POST['name'];} else {$name="";} if (isset($_POST['email'])) { if(!preg_match("/^[a-z0-9\.\-_]+@[a-z0-9\-_]+\.([a-z0-9\-_]+\.)*?[a-z]+$/is", $_POST['email']) or $_POST['email']=="") {print "$back и введите корректный E-mail адрес!</B></center>"; exit;}
// ШАГ - 1 - считываем данные -------------------------------------------------- $fotoname = $_FILES['file']['name']; // определяем имя файла $fotosize=$_FILES['file']['size']; // Запоминаем размер файла // проверяем расширение файла $ext = strtolower(substr($fotoname, 1 + strrpos($fotoname, "."))); if (!in_array($ext, $valid_types)) {echo '<B>ФАЙЛ НЕ загружен.</B> Возможные причины:<BR> - разрешена загрузка только файлов с такими расширениями: gif, jpg, jpeg, png<BR> - Вы пытаетесь загрузить не графический файл;<BR> - неверно введён адрес или выбран файл;</B><BR>'; exit;} //------------------------------------------------------------------------------
$email=$_POST['email']; $email=htmlspecialchars($email); $email=stripslashes($email); $email=str_replace("|","I",$email); $nameonly=$name; $name.="[email]".$email;}
$dtemp = explode("|", $_POST['rubrika']); $katnumber=$dtemp[0]; $rname=$dtemp[2]; $katname=$dtemp[3]; $fid=$dtemp[1]; $days=$_POST['days'];
// ШАГ - 2 ЗАЩИТЫ от ВЗЛОМА ------------------------------------------
// 1. считаем кол-во точек в выражении - если большей одной - СВОБОДЕН! $findtchka=substr_count($fotoname, "."); if ($findtchka>1) {echo "ТОЧКА встречается в имени файла $findtchka раз(а). Это ЗАПРЕЩЕНО! <BR>\r\n";}
// 2. если в имени есть .php, .html, .htm - свободен! $bago="Извините. В имени ФАйла <B>запрещено</B> использовать .php, .html, .htm"; if (preg_match("/\.php/i",$fotoname)) {echo "Вхождение <B>\".php\"</B> найдено. $bago"; exit;} if (preg_match("/\.html/i",$fotoname)) {echo "Вхождение <B>\".html\"</B> найдено. $bago"; exit;} if (preg_match("/\.htm/i",$fotoname)) {echo "Вхождение <B>\".htm\"</B> найдено. $bago"; exit;}
// 3. защищаем от РУССКИХ букв в имени файла и проверяем расширение файла if (!preg_match("/^[a-z0-9\.\-_]+\.(jpg|gif|png|)+$/is",$fotoname)) {print "Запрещено использовать РУССКИЕ буквы в имени файла!"; exit;}
// 4. Проверяем, может быть файл с таким именем уже есть на сервере if (file_exists("$fotodir/$fotoname")) {print "Файл с таким именем уже существует на сервере! Измените имя на другое!"; exit;} // Конец защит по имени файла
// 5. Размер фото $fotoksize=round($fotosize/10.24)/100; // размер ЗАГРУЖАЕМОГО ФОТО в Кб. $fotomax=round($max_file_size/10.24)/100; // максимальный размер фото в Кб. if ($fotoksize>$fotomax) {print"Вы превысили допустимый размер фото! <BR><B>Максимально допустимый</B> размер фото: <B>$fotomax </B>Кб.<BR> <B>Вы пытаетесь</B> загрузить изображение: <B>$fotoksize</B> Кб!"; exit;}
// 6. "Габариты" фото > $maxwidth х $maxheight - ДО свиданья! :-) $size=getimagesize($_FILES['file']['tmp_name']); if ($size[0]>$maxwidth or $size[1]>$maxheight) {print "$size[0] x $size[1] - не допустимые габариты фото. Допустимо лишь $maxwidth х $maxheight px!"; exit;}
if ($fotosize>"0" and $fotosize<$max_file_size) { copy($_FILES['file']['tmp_name'], $fotodir."/".$fotoname); print "<br><br><B>Фото УСПЕШНО загружено:</B> $fotoname <B>(Размер:</B> $fotosize байт)";} else { print "<B>Файл НЕ ЗАГРУЖЕН - ошибка СЕРВЕРА! Обратитесь к администратору!<B>"; exit;}
$size=getimagesize("$fotodir/$fotoname");
// Проверяем размер фото. Если "габариты" меньше заданный в админке 150 х 120 - то ничего с ним не делаем // блок делает мальное изображение исходной фотки - в качестве превьюшки if ($size[0]>$smwidth or $size[1]>$smheight) { $smallfoto="sm-$fotoname"; require ('tumbmaker.php'); if (img_resize("$fotodir/$fotoname", "$fotodir/$smallfoto", $smwidth, $smheight)) echo 'Изображение масштабировано <B>успешно</B>.'; else echo '<font color=red><B>Ошибка МАСШАБИРОВАНИЯ фото! Поблемы с GD-библиотекой!</B></font> Обратитесь к Администратору'; } else {$smallfoto="$fotoname";}
// закачиваем прикреплённый файл на сервер if (isset($_POST['file'])) { if (!copy($file, $file.'.bak')) {print ("при копировании файла $file произошла ошибка...<br>\n");}}
// КОНЕЦ -----------------------------------------------------------------------
if (!ctype_digit($fid)) {exit("$back и выбирете категорию!");} $katname.="[ktname]".$rname;
if ($katnumber=="0") {print"$back и выбирете категорию!"; exit;} if ($name == "" || strlen($name) > $maxname) {print "$back Ваше <B>имя пустое, или превышает $maxname символов!</B></center>"; exit;} $zag=$_POST['zag']; if ($zag == "" || strlen($zag) > $maxzag) {print "$back Вы <B>не ввели заголовок объявления, или он превышает $maxzag символов!</B></center>"; exit;} if (isset($_POST['type'])) {$type=$_POST['type'];} else {$type="";} if ($type == "") {print "$back и выбирите тип объявления (<B>Спрос</B> или <B>Предложение</B>).</B></center>"; exit;} if ($type!="С" and $type!="П") {$type="П";} $msg=$_POST['msg']; if ($msg == "" || strlen($msg) > $maxmsg) {print "$back Ваше <B>описание пустое или превышает $maxmsg символов.</B></center>"; exit;} if (isset($_POST['gorod'])) {$gorod=$_POST['gorod'];} else {$gorod="";} if (isset($_POST['phone'])) {$phone=$_POST['phone'];} else {$phone="";} //if (isset($_POST['smallfoto'])) {$smallfoto=$_POST['smallfoto'];} else {$smallfoto="";}//[14] //if (isset($_POST['foto'])) {$foto=$_POST['foto'];} else {$foto="";} //[15] //if (isset($_POST['fotoksize'])) {$fotoksize=$_POST['fotoksize'];} else {$fotoksize="";}//[16]
if ($days>$maxdays) {$days=$maxdays;} $deldt=mktime()+$days*86400; // формируем дату удаления объявления $msg=str_replace("|","I",$msg); $zag=str_replace("|","I",$zag); $today=mktime();
$stime=$_POST['stime']; if (!ctype_digit($stime)) {exit("$back и выбирете категорию!");}
// Сравниваем имя подавшего объявления с зарегистрированными $flag="0"; $status="no"; $namesm=strtolower($name); $lines=file("$datadir/usersdat.php"); $i=count($lines); do {$i--; $rdt=explode("|", $lines[$i]); $rdt[0]=strtolower($rdt[0]); if ($rdt[0]==$namesm) {$email="$rdt[2]"; $flag="yes"; if ($rdt[12]>0) {$vipdays=round(($rdt[12]-$today)/86400);} else {$vipdays="999";} if ($rdt[10]==="vip" and $vipdays>0) {$status="vip";}} } while($i > "1");
if (!isset($_COOKIE['wrboardname']) and $flag=="yes") {print"$back к сожалению, участник с таким именем уже зарегистрирован на доске и <BR><B>Вы не можете подать объявление под таким именем.</B>"; exit;}
if ($antiflud=="1") { // функция АНТИФЛУД здесь! $linesn = file("$datadir/$fid.dat"); $in=count($linesn); if ($in > 0) { $lines=file("$datadir/$fid.dat"); $i=count($lines)-1; $itogo=$i; $dtf=explode("|",$lines[$i]); $txtback="$dtf[0]|$dtf[1]|$dtf[2]|$dtf[3]|$dtf[4]|$dtf[5]|"; $txtflud="$katnumber|$katname|$name|$zag|$type|$msg|"; $txtflud=htmlspecialchars($txtflud); $txtflud=stripslashes($txtflud); $txtflud=str_replace("\r\n","<br>",$txtflud); if ($txtflud==$txtback) {print"$back Данное объявление уже размещено на доске. Флудить на доске запрещено!"; exit;} }}
// КОЛДУЕМ рандомный КОД объявления $z=1; do {$key=mt_rand(10000,99999); if (strlen($key)==5) {$z++;} } while ($z<1);
$text="$katnumber|$katname|$name|$zag|$type|$msg|$date|$deldt|$fid|$status|$key|$today|$gorod|$phone|$smallfoto|$fotoname|$fotoksize|$size[0]|$size[1]|$rname|";
$text=htmlspecialchars($text); $text=stripslashes($text); $text=str_replace("\r\n","<br>",$text);
// Возвращаем ОЧИЩЕННЫЕ от тегов данные!! $textdt=explode("|", $text); $katnumber=$textdt[0]; $tdt=explode("[ktname]", $textdt[1]); $katname="$tdt[0]"; $name=$textdt[2]; $zag=$textdt[3]; $type=$textdt[4]; $msg=$textdt[5]; $date=$textdt[6]; $deldt=$textdt[7]; $fid=$textdt[8]; $status=$textdt[9]; $key=$textdt[10]; $today=$textdt[11]; $gorod=$textdt[12]; $phone=$textdt[13]; $smallfoto=$textdt[14]; $fotoname=$textdt[15]; $fotoksize=$textdt[16]; $size[0]=$textdt[17]; $size[1]=$textdt[18];
$fp=fopen("$datadir/$fid.dat","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); fflush ($fp);//очищение файлового буфера flock ($fp,LOCK_UN); fclose($fp); @chmod("$datadir/$fid.dat", 0644);
// Блок добавляет единицу к кол-ву объявлений в категории $lines=file("$datadir/$datafile"); $i=count($lines); $fnomer=$i+1;
do {$i--; $dt=explode("|",$lines[$i]); if ($fid==$dt[0]) {$fnomer=$i; if ($type=="С") {$dt[3]++;} else {$dt[2]++;} $mtext="$fid|$dt[1]|$dt[2]|$dt[3]|";} } while($i > 0);
$file=file("$datadir/$datafile"); $fp=fopen("$datadir/$datafile","w"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($ii=0;$ii< sizeof($file);$ii++) { if ($fnomer!=$ii) {fputs($fp,$file[$ii]);} else {fputs($fp,"$mtext\r\n");} } fflush ($fp);//очищение файлового буфера flock ($fp,LOCK_UN); fclose($fp); @chmod("$datadir/$datafile", 0644);
// добавляем в 10-20-ку новых объявлений $newmessfile="$datadir/newmsg.dat"; if (is_file($newmessfile)) { $file=file($newmessfile); $i=count($file); if ($showten>"0" & $i<$showten) { $fp=fopen("$newmessfile","a+"); flock ($fp,LOCK_EX); fputs($fp,"$text\r\n"); flock ($fp,LOCK_UN); fclose($fp); @chmod("$newmessfile", 0644); } else { $fp=fopen($newmessfile,"w"); flock ($fp,LOCK_EX); ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА for ($ii=1;$ii<$showten; $ii++) {fputs($fp,$file[$ii]);} fputs($fp,"$text\r\n"); flock ($fp,LOCK_UN); fclose($fp); @chmod("$newmessfile", 0644); } }
// отправка админу и юзеру сообщения о добавлении объявления $headers=null; // Настройки для отправки писем $headers.="Content-Type: text/html; charset=windows-1251\r\n"; $headers.="From: Администратор <".$adminemail.">\r\n"; $headers.="X-Mailer: PHP/".phpversion()."\r\n";
$deldate=date("d.m.Y",$deldt); // конвертируем дату удаления в человеческий формат
if (isset($nameonly)) {$name=$nameonly;} // Что не отправлять юзеру СПЕЦКОД [email] вместо имени
// подготавливаем данные для отправки на емайл и вывода на экран if ($type=="С") {$sptype="Спрос";} else {$sptype="Предложение";} $msg=str_replace("\r\n", "<br>", $msg);
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; $boardurl="http://$host$self"; $boardurl=str_replace("add.php", "index.php", $boardurl);
// Собираем всю информацию в теле письма $allmsg="<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'> <style>BODY {FONT-FAMILY: verdana,arial,helvetica; FONT-SIZE: 13px;} TD {FONT-SIZE: 12px;}</style></head> <body><center><h4>Доска объявлений \"<B><a href='$boardurl'>$brdname</a></B>\"</h4> <table border=1 cellpadding=6 cellspacing=0 width=550 bordercolor='#DBDBDB'> <tr><td colspan=2 align=center bgcolor='#E4E4E4'><B>Информация</B></td></tr> <tr bgcolor='#F2F2F2'><td width=117>Ваше Имя:</td><td width=433><B>$name</B></td></tr> <tr bgcolor='#F8F8F8'><td>Е-майл:</td><td><B>$email</B></td></tr> <tr bgcolor='#F2F2F2'><td>Расположение:</td><td> <B>$rname</B> >> <B>$katname</B> >> $sptype</td></tr> <tr bgcolor='#F8F8F8'><td>Дата подачи:</td><td><small>$time</small> - $date г.</td></tr> <tr bgcolor='#F2F2F2'><td>Дата удаления:</td><td><B>$deldate</B> г.</td></tr> <tr bgcolor='#F8F8F8'><td>Тема:</td><td><B>$zag</B></td></tr> <tr bgcolor='#F2F2F2'><td>Текст:</td><td>$msg</td></tr> </table><center><BR>Ваше объявление <B><font color=navy>успешно размещено</font></B><BR><BR> <a href='$boardurl?fid=$fid'>Вернуться в рубрику <B>$katname</B></a>"; $printmsg="$allmsg </body></html>"; $allmsg.="<BR><BR><BR>* Это сообщение сгенерировано и отправлено роботом с доски объявлений. Отвечать на него не нужно.</body></html>";
if ($sendmail=="1") { // Отправляем ПИСЬМА если разрешена отправка if ($sendmailadmin=="1") {mail("$adminemail", "Новое объявление ($brdname)", $allmsg, $headers);} if (isset($email) & $flag=="yes") { mail("$email", "Объявление ($brdname)", $allmsg, $headers);} }
// Cтрока удаляет КУКУ на компе юзера если он удалён в админке if (!isset($flag) and $onlyregistr==1) { if (isset($_COOKIE['wrboardname'])) {setcookie("wrboardname", "", time()); setcookie("wrboardpassword", "", time()); }}
print "<script language='Javascript'>function reload() {location = \"index.php?fid=$fid\"}; setTimeout('reload()', 2000);</script>$printmsg"; exit; } } //} // if is_file ("$fid.dat")
else { // ГЛАВНАЯ СТРАНИЦА
$rubrika="Добавление объявления"; include "$topurl"; addtop(); // подключаем ШАПКУ if ($onlyregistr=="1" and !isset($wrboardname)) { print"<BR><BR><BR><BR><BR><center><font size=-1><B>Уважаемые посетители!</B><BR><BR> На нашей доске размещение объявления<BR><BR><B> без регистрации <font color=#FF0000> запрещено!</B></font><BR><BR> Зарегистрироваться можно по <B><a href='tools.php?event=reg'>этой ссылке</a></B><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>"; }
else { if (isset($_GET['fid'])) {$fid=$_GET['fid'];} else {$fid="";} $today=mktime(); print"<center><TABLE class=bakfon cellPadding=2 cellSpacing=1> <FORM action='add.php?event=add' method=post name=addForm enctype=\"multipart/form-data\"> <TBODY> <TR class=toptable><TD height=23 align=middle colSpan=2><B>$rubrika</B></TD></TR>";
print " <tr class=row1><TD>Категория:</TD><TD>
<SELECT name=rubrika class=maxiinput> "; // Блок считывает все категории из файла $lines=file("$datadir/$datafile"); $imax=count($lines); $i="0"; $r="0"; do {$dt=explode("|", $lines[$i]); if ($fid==$dt[0]) {$fy="selected";} else {$fy="";} if ($dt[1]!="R") {print "<OPTION value=\"$i|$dt[0]|$r|$dt[1]|\"$fy> - $dt[1]</OPTION>\r\n";} else {$r=$dt[2]; print "<OPTION value='0|||||' style='color: #CD8181;'>$dt[2]</OPTION>\r\n";} $i++; } while($i < $imax);
print "</SELECT></TD></TR> <input type=hidden name=stime value='$today'> <TR class=row2><TD>Тема объявления:<FONT color=#ff0000>*</FONT><BR>(не более $maxzag символов)</TD> <TD><INPUT name=zag class=maxiinput maxlength=$maxzag></TD></TR>
<TR class=row1><TD>Текст объявления:</TD> <TD><TEXTAREA class=maxiinput name=msg style='HEIGHT: 200px; WIDTH: 300px'></TEXTAREA></TD></TR>
<TR class=row2><TD>Тип объявления:<FONT color=#ff0000>*</FONT></TD> <TD><INPUT name=type type=radio value='П'><B><font color=#EE2200>П</font></B>редложение <INPUT name=type type=radio value='С'><B><font color=#1414CD>С</font></B>прос </TD></TR>
<TR class=row1 height=23><TD>Ваше имя:";
if (isset($wrboardname)) { print "<input type=hidden name=name value='$wrboardname'></TD><TD><B>$wrboardname</B></td></tr>"; } else { print " <FONT color=#ff0000>*</FONT></TD><TD><INPUT name=name class=maxiinput maxlength=30> <TR class=row2 height=23><TD>Ваш Е-майл:<FONT color=#ff0000>*</FONT></TD><TD><INPUT name=email class=maxiinput maxlength=30></td></tr> <TR class=row1 height=23><TD>Город:</TD><TD><INPUT name=gorod class=maxiinput maxlength=40></td></tr> <TR class=row2 height=23><TD>Телефон: <BR>(по шаблону: (0265) 21111)</TD><TD><INPUT name=phone class=maxiinput maxlength=35></td></tr> ";}
print"<TR class=row1><TD>Срок хранения объявления:</TD> <TD><SELECT name=days style='FONT-SIZE: 13px'> <OPTION value=7>7 дней</OPTION> <OPTION value=14>14 дней</OPTION> <OPTION selected value=30>30 дней</OPTION> <OPTION value=60>60 дней</OPTION> <OPTION value=90>90 дней</OPTION></SELECT> </TD></TR>";
if (!isset($wrboardname) and $antispam=="1") {print"<tr class=row1><td align='right'>Защитный код:</td><td>"; $rand_key=array("7531","8642","9753","10864","1975","2186","3197","4298"); $imag_key=array("8642","9753","10864","1975","2186","3197","4298","7531"); $rand = mt_rand(0,7); $rnd=$rand_key[$rand]; $ima=$imag_key[$rand]; print"<img src='images/$ima.png' width=300 height=20 border=0> </td></tr><input name=rand type=hidden value='$rnd'> <tr class=row2><td align='right'><font color=red>Напишите код цифрами:</font></td><td><input name='num' type='text' maxlength=5 size=5></td></tr>";}
print"<TR class=row1><TD>Прикрепить фото:<FONT color=#ff0000>*</FONT><BR>(допустимые типы: gif, jpg, png,<BR> размер менее 90 Кб.)</TD> <TD><input type=file class=maxiinput name=file></TEXTAREA></TD></TR>";
print"<TR class=row1><TD colspan=2 align=middle><INPUT class=longok type=submit value=Сохранить></TD></TR> </FORM></TBODY></TABLE>"; }
}
include "images/bottom.html"; ?> </body></html>
|
Помогите разобраться
|