За последние 24 часа нас посетили 119489 программистов и 3012 роботов. Сейчас ищут 1295 программистов ...

антимат

Тема в разделе "PHP для новичков", создана пользователем Panich, 20 дек 2011.

  1. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Вот тут скрипт:
    PHP:
    1. <?php
    2.   include ("bd_chat.php");
    3.   if(isset($_POST['massage']))
    4.   {
    5.      $massage = $_POST['massage'];
    6.      if (($massage == '') or empty($massage))
    7.      {
    8.      unset($massage);
    9.      }
    10.   }
    11.   function antimat($massage)
    12.   {
    13.   $s = '[^\wа-я]*?';
    14.   $cenzur = 'РОМАШКА';
    15.   $ArrayPattern = array(
    16.   '[^вvw]'.$s.'[еeё]'. $s .'[бb]',    
    17.   '[лl]'.$s.'[оo0]'.$s.'[хxh]',
    18.   '[еe]'.$s.'[лl]'.$s.'[дd]'.$s.'[аa@]',
    19.   '[мm]'.$s.'[uyу]'.$s.'[дd]'.$s.'[^рpr]',
    20.   '[пp]'.$s.'[иiеe]'.$s.'[зz3]'.$s.'[дd]',
    21.   '[^ю]'.$s.'[бb]'.$s.'[лl]'.$s.'(?:я|ja|j@)',    
    22.   '[мm]'.$s.'[аa@оo0]'.$s.'[нn]'.$s.'[дd]',
    23.   '[дd]'.$s.'[rpр]'.$s.'[аa@оo0]'.$s.'(?:[ч4]|ch|сh)',
    24.   '[хxh]'.$s.'[уyuеe]'.$s.'(?:[ийijрprеёeяюлl]|ja|jа|ju|jи)',    
    25.   '[зz3]'.$s.'[аa@]'.$s.'[лl]'.$s.'[уyu]'.$s.'[пp]',
    26.   '[гg]'.$s.'[аa@оo0]'.$s.'[нn]'.$s.'[дd]'.$s.'[оo0]',
    27.   '[пp]'.$s.'[иiеe]'.$s.'[дd]'.$s.'[аa@оo0иiрpr]'.$s.'[^гgфf]',
    28.   );
    29.       foreach($ArrayPattern as $key => $value)
    30.       {
    31.       $Pattern[] = '/(.*?)(?:[^\s]*' . $value . '[^\s]*)(.*?)/is';
    32.       }
    33.       $no_mat =  preg_replace($Pattern , "\\1". $cenzur . "\\2", $massage);
    34.       return $no_mat;
    35.   }
    36.   if (strlen($massage) > 70)
    37.   {      
    38.   echo ("Текст не должен превышать 70 символов!");            
    39.   }
    40.   if (!empty($_SESSION['login']) and !empty($_SESSION['pass']))            
    41.   {                      
    42.   $login = mysql_real_escape_string($_SESSION['login']);            
    43.   $pass = mysql_real_escape_string($_SESSION['pass']);  
    44.   include ("bd.php");  
    45.   $sql2 = "SELECT `id` FROM `users` WHERE login='$login' AND pass='$pass'";
    46.   $result2 = mysql_query($sql2, $db)or die("Ошибка в запросе: " . mysql_error());
    47.        if (!$result2)
    48.        {
    49.        echo "ошибка - ".mysql_error()."<br>";
    50.        echo $sql2;
    51.        exit();
    52.        }
    53.        else
    54.        {
    55.        $myrow2 = mysql_fetch_array ($result2);  
    56.            if (empty($myrow2['id']))
    57.            {              
    58.            exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");              
    59.            }      
    60.        }
    61.   }            
    62.   else
    63.   {                      
    64.   exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
    65.   }
    66.   $id=$myrow2['id'];
    67.   $sql3 = "INSERT INTO `chat` (massage, user_id) VALUES ('$massage','$id')";
    68.   $result3 = mysql_query($sql3, $db)or die("Ошибка в запросе: " . mysql_error());
    69.   if (!$result3)
    70.   {
    71.   echo "ошибка - ".mysql_error()."<br>";
    72.   echo $sql3;
    73.   exit();
    74.   }
    75.   else
    76.   {
    77.   header("Location: [url=http://localhost/znakomstva/page_user.php?id='$id']http://localhost/znakomstva/page_user.php?id='$id'[/url]");  
    78.   }
    79. ?>
    Не меняет плохие слова на "цветочеГ",а должно....
     
  2. NeoXidant

    NeoXidant Активный пользователь

    С нами с:
    8 фев 2010
    Сообщения:
    121
    Симпатии:
    1
    1.
    if (($massage == '') or empty($massage))
    empty и '' - одно и тоже

    2. antimat есть... а где же ее вызов?
     
  3. Михаил

    Михаил Активный пользователь

    С нами с:
    12 июл 2009
    Сообщения:
    545
    Симпатии:
    0
    Адрес:
    Bielarus
    trim надо бы еш\ё сделать для $massage/
     
  4. Skulpen

    Skulpen Активный пользователь

    С нами с:
    21 дек 2011
    Сообщения:
    2
    Симпатии:
    0
    Адрес:
    Москва
    Проще так:
    Код (Text):
    1.  
    2. if(isset($_POST['massage']) && $_POST['massage']) {
    3.  $massage = antimat($massage);
    4. }
    хотя isset можно и убрать. И наверно $message, а не $massage, вторая буква е
     
  5. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Спасибо всем большое за советы!
     
  6. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Что получилось:
    html:
    HTML:
    1. <div class="table_center">
    2.           <img class="map" src="../znakomstva/img_index/metro.gif" alt="" usemap="#Map">
    3.             <map name="map">
    4.                <div class="tooltip">
    5.                  <area name="" shape="rect" coords="411,42,420,49" href="" alt="УЛИЦА ПОДБЕЛЬСКОГО">
    6.                    <div class="ul_podbelskogo">
    7.                      <span class="metro_red_classic">УЛИЦА ПОДБЕЛЬСКОГО</span>        
    8.                    </div>
    9.                </div>
    10.                <div class="tooltip">
    11.                  <area name="modal" shape="rect" coords="411,51,420,59" href="#dialog3" alt="ЧЕРКИЗОВСКАЯ">
    12.                    <div class="cherkizovskay">
    13.                      <span class="metro_red_classic">ЧЕРКИЗОВСКАЯ</span>               
    14.                    </div>
    15.                </div>
    16. ..................
    17. <td class="table_right" valign="top">
    18. </td>
    Ява:
    [js]$('.tooltip').click(function(e) {//беру все элементы изображений
    var clickEL = $(this).children.find('area').attr('alt');//теперь заношу в переменную значение alt именно того элемента,на котором кликнули
    $.ajax({
    type: 'POST',
    url: 'inc_rek.php',
    data: {place:clickEL},
    success: function(data) {
    $('.table_right').html(data);//вывожу в правую часть то,что получилось после php запроса к таблице
    }
    });
    });[/js]
    И,конечно,php:
    PHP:
    1. <?php    
    2.    include ("bdreklama.php");
    3.    $sql21 = "SELECT `syte_1` FROM `reklama` WHERE `place`='$place'";
    4.    $result21 = mysql_query($sql21, $dbrek)or die("Ошибка в запросе: " . mysql_error());
    5.    if (!$result21)
    6.    {
    7.    echo "ошибка - ".mysql_error()."<br>";
    8.    echo $sql21;
    9.    exit();
    10.    }
    11.    else
    12.    {
    13.        echo "<H1>Вот всё!</H1>";
    14.        while ($myrow21 = mysql_fetch_array($result21))
    15.        {
    16.        echo "<table border='1'>";
    17.        echo "<tr>";
    18.        echo "<td>".$myrow21['syte_1']."</td>";
    19.        echo "</tr>";
    20.        echo "</table>";  
    21.        }
    22.    }
    23. ?>
    Значит,в чём проблема:
    НИФИГА НЕ РАБОТАЕТ!!!))))Помогите,пожалуйста!
     
  7. Panich

    Panich Активный пользователь

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    HTML:
    1. <div class="tooltip">
    2.                  <area name="" shape="rect" coords="411,42,420,49" href="" alt="УЛИЦА ПОДБЕЛЬСКОГО">
    3.                    <div class="ul_podbelskogo">
    4.                      <span class="metro_red_classic">УЛИЦА ПОДБЕЛЬСКОГО</span>        
    5.                    </div>
    6.                </div>

    [js]$('.tooltip').click(function(e) {
    var clickEL = $(this).children.find('area').attr('alt');

    });[/js]
    Вот тут я правильно вытаскиваю значение alt, у area?Делаю вывод через алерт,но вообще ничего не происходит...
    П.С.Только дивов 160 штук и нужен тот,на котором кликнул пользователь!