|
|
|
| Помогите пожалуйста!!!! У меня проблема с антиматами (описанная в еще одной теме). Есть 4 поля, заполняемые человеком. Если хотя бы в одном из них есть мат, то его надо перебросить на другую страницу. Вот код:
$flag = "yes";
$array1 = array($name,$mail,$city,$message);
$array2 = array("Тут маты =)");
for ($i=0;$i<4;$i++)
{
for ($j=0;$j<count($array2);$j++)
{
if (stristr($array1[$i],$array2[$j]))
{
$flag = "no";
break;
}
}
}
if ($flag == "no")
{
echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php?action=write&try=failed&reason=fuck\">";
exit;
}
$datenow = date("Y-m-d H-i-s");
$name = htmlspecialchars($name);
$mail = htmlspecialchars($mail);
$city = htmlspecialchars($city);
$message = nl2br(htmlspecialchars($message));
$writequery = mysql_query("INSERT INTO guestbook(name,mail,city,message,date) VALUES ('$name','$mail','$city','$message','$datenow')");
echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php\">";
exit;
|
Вроде бы все просто. Дома все работает прекрасно. На сервере - не работает вообще (stristr ничего не находит). Если же поставить с самого начала $flag = true, то работает. НО!!!! один раз работает правильно, а если после этого человек пишет нормальное сообщение, то все равно его перебрасывает на guestbook.php?action=write&try=failed&reason=fuck, как будто бы он матюгнулся. Подскажите, как сделать, чтобы все работало? | |
|
|
|
|
|
|
|
для: Dima1999
(17.09.2005 в 21:49)
| | Приведите пожалуйста также HTML форму для этого скрипта? | |
|
|
|
|
|
|
|
для: cheops
(18.09.2005 в 01:59)
| |
if (isset($action))
{
if ($HTTP_GET_VARS["action"] == "write")
{
if ($HTTP_GET_VARS["try"] == "failed")
{
switch($HTTP_GET_VARS["reason"])
{
case 'blank' : echo "Вы не заполнили все необходимые поля!"; break;
case 'hacker' : echo "Вы неправильно заполнили все поля!"; break;
case 'longshort' : echo "Длина сообщения должна быть длиной от 2 до 2000 букв."; break;
case 'fuck' : echo "Пожалуйста, пишите ЛИТЕРАТУРНЫМ языком!"; break;
default : echo "Не надо умничать. Пишите в текстовых полях, а не в адресной строке."; break;
}
unset($HTTP_GET_VARS["try"]);
unset($HTTP_GET_VARS["reason"]);
}
echo "<form name=forma onSubmit=\"return check1()\" method=POST action=\"guestbook.php\">";
echo "<table bgcolor=\"#EAEAEA\" cellspacing=1 cellpadding=4 width=\"90%\" align=center><tbody>";
echo "<tr bgcolor=\"#FFFFFF\"><td width=200>Имя:<font color=\"#FF0000\"><sup>*</sup></font></td><td><input name=name maxlength=30 size=52></td></tr>";
echo "<tr bgcolor=\"#FFFFFF\"><td width=200>E-mail: </td><td><input name=mail maxlength=30 size=52></td></tr>";
echo "<tr bgcolor=\"#FFFFFF\"><td width=200>Город: </td><td><input name=city maxlength=30 size=52></td></tr>";
echo "<tr bgcolor=\"#FFFFFF\"><td width=200>Сообщение:<font color=\"#FF0000\"><sup>*</sup></font></td><td><textarea cols=40 rows=10 name=message></textarea></td></tr>";
echo "<tr bgcolor=\"#FFFFFF\"><td colspan=2><input type=submit name=action value=\"Написать\"></td></tr>";
echo "<tr><td align=right colspan=2><a class=link href=\"guestbook.php\">Просмотр сообщений</a></td></tr>";
echo "</tbody></table></form>";
}
elseif ($HTTP_POST_VARS["action"] == "Написать")
{
if (($HTTP_POST_VARS["name"] == "") || ($HTTP_POST_VARS["message"] == ""))
{
echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php?action=write&try=failed&reason=blank\">";
exit;
}
if (($HTTP_POST_VARS["name"] == "'") || ($HTTP_POST_VARS["mail"] == "'") || ($HTTP_POST_VARS["city"] == "'") || ($HTTP_POST_VARS["message"] == "'") || (strlen($HTTP_POST_VARS["name"])>30) || (strlen($HTTP_POST_VARS["mail"])>30) || (strlen($HTTP_POST_VARS["city"])>30))
{
echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php?action=write&try=failed&reason=hacker\">";
exit;
}
if ((strlen($HTTP_POST_VARS["message"])<2) || (strlen($HTTP_POST_VARS["message"])>2000))
{
echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php?action=write&try=failed&reason=longshort\">";
exit;
}
$flag = "yes";
$array1 = array($name,$mail,$city,$message);
$array2 = array("здесь висят маты");
for ($i=0;$i<4;$i++)
{
for ($j=0;$j<count($array2);$j++)
{
if (stristr($array1[$i],$array2[$j]))
{
$flag = "no";
break;
}
}
}
if ($flag == "no")
{
echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php?action=write&try=failed&reason=fuck\">";
exit;
}
$datenow = date("Y-m-d H-i-s");
$name = htmlspecialchars($name);
$mail = htmlspecialchars($mail);
$city = htmlspecialchars($city);
$message = nl2br(htmlspecialchars($message));
$writequery = mysql_query("INSERT INTO guestbook(name,mail,city,message,date) VALUES ('$name','$mail','$city','$message','$datenow')");
echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php\">";
exit;
}
|
| |
|
|
|
|
|
|
|
для: Dima1999
(18.09.2005 в 09:23)
| | Эта форма не отображается, так как в начале стоит условие проверки существования, нигде не определённой переменной $action
<?php
if (isset($action))
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(18.09.2005 в 12:21)
| | В смысле нет? Форма отображается, когда я набираю в адресной строке (или перехожу по ссылке) на guestbook.php?action=write. И проблема не в отображении этой формы, а в не видении ПХП матных слов.
Для полной ясности: при открытии guestbook.php выводятся сообщения из БД. | |
|
|
|