Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Антиматы
 
 автор: Dima1999   (17.09.2005 в 21:49)   письмо автору
 
 

Помогите пожалуйста!!!! У меня проблема с антиматами (описанная в еще одной теме). Есть 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, как будто бы он матюгнулся. Подскажите, как сделать, чтобы все работало?

   
 
 автор: cheops   (18.09.2005 в 01:59)   письмо автору
 
   для: Dima1999   (17.09.2005 в 21:49)
 

Приведите пожалуйста также HTML форму для этого скрипта?

   
 
 автор: Dima1999   (18.09.2005 в 09:23)   письмо автору
 
   для: 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;
}

   
 
 автор: cheops   (18.09.2005 в 12:21)   письмо автору
 
   для: Dima1999   (18.09.2005 в 09:23)
 

Эта форма не отображается, так как в начале стоит условие проверки существования, нигде не определённой переменной $action
<?php
if (isset($action)) 
?>

   
 
 автор: Dima1999   (18.09.2005 в 19:01)   письмо автору
 
   для: cheops   (18.09.2005 в 12:21)
 

В смысле нет? Форма отображается, когда я набираю в адресной строке (или перехожу по ссылке) на guestbook.php?action=write. И проблема не в отображении этой формы, а в не видении ПХП матных слов.
Для полной ясности: при открытии guestbook.php выводятся сообщения из БД.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования