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

Форум PHP

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

 

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

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

тема: Антиматы =)
 
 автор: Dima1999   (13.09.2005 в 22:32)   письмо автору
 
 


if (isset($action))
{
  if ($action == "write")
  {
    if ($try == "failed")
    {
      switch($reason)
      {
        case 'blank' : echo "Вы не заполнили все необходимые поля!"; break;
        case 'hacker' : echo "Вы неправильно заполнили все поля!"; break;
        case 'longshort' : echo "Длина вопроса должна быть длиной от 5 до 2000 букв."; break;
        case 'fuck' : echo "Пожалуйста, пишите ЛИТЕРАТУРНЫМ языком!"; break;
        default : echo "Не надо умничать. Пишите в текстовых полях, а не в адресной строке."; break;
      }
      echo "<br><br>";
    }

    echo "<form method=POST action=\"guestbook.php\">";
    echo "<table><tbody>";
    echo "<tr><td width=200>Имя:<font color=\"#FF0000\"><sup>*</sup></font></td><td><input name=name></td></tr>";
    echo "<tr><td width=200>E-mail: </td><td><input name=mail></td></tr>";
    echo "<tr><td width=200>Город: </td><td><input name=city></td></tr>";
    echo "<tr><td width=200>Сообщение:<font color=\"#FF0000\"><sup>*</sup></font></td><td><textarea></textarea></td></tr>";
    echo "<tr><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 ($action == "Написать")
  {
    if (($name == "") || ($message == ""))
    {
      echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php?action=write&try=failed&reason=blank\">";
      exit;
    }

    if (($name == "'") || ($mail == "'") || ($city == "'") || ($message == "'") || (strlen($name)>30) || (strlen($mail)>30) || (strlen($city)>30))
    {
      echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php?action=write&try=failed&reason=hacker\">";
      exit;
    }

    if ((strlen($message)<3) || (strlen($message)>2000))
    {
      echo "<meta http-equiv=\"refresh\" content=\"0;url=guestbook.php?action=write&try=failed&reason=longshort\">";
      exit;
    }

    $array1 = array($name,$mail,$city,$message);
    $array2 = array("...(здесь висят маты)...");
    $flag = "yes";
    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   (14.09.2005 в 01:32)   письмо автору
 
   для: Dima1999   (13.09.2005 в 22:32)
 

А скрипт в каком файле находится, guestbook.php?

   
 
 автор: Dima1999   (14.09.2005 в 08:12)   письмо автору
 
   для: cheops   (14.09.2005 в 01:32)
 

Да, все - в guestbook.php

   
 
 автор: cheops   (14.09.2005 в 12:50)   письмо автору
 
   для: Dima1999   (14.09.2005 в 08:12)
 

А $action в первый раз откуда берётся?

   
 
 автор: Dima1999   (14.09.2005 в 13:54)   письмо автору
 
   для: cheops   (14.09.2005 в 12:50)
 

Когда открывается guestbook.php выводятся все сообщения. По ссылке <a href=".......guestbook.php?action=write>Выводится форма для записи. В форме есть кнопка типа сабмит с именем action, по которой сообщение заносится в БД

   
 
 автор: Dima1999   (16.09.2005 в 18:25)   письмо автору
 
   для: Dima1999   (14.09.2005 в 13:54)
 

Так в чем же проблема?

   
Rambler's Top100
вверх

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