Помогите понять почему данная форма не работает

Тема в разделе "PHP", создана пользователем jon4god, 1 июл 2011.

Модераторы: latteo
  1. jon4god

    jon4god

    Регистр.:
    13 авг 2009
    Сообщения:
    213
    Симпатии:
    50
    Не могу сообразить где затык...
    Есть файл search.php в котором существует такая форма с обработкой.
    PHP:
    echo "<form action='' method=post> 
    <table> 
    <tr><td> 
    <input  type=text name=name size=10 maxlength=40  /></td> 
    <td><input type=submit name=submit /></td></tr> 
    </table></form>"

    if(isset(
    $_REQUEST[`submit`])) 
    {  
    //Проверяем, на пустоту поле формы 
    $error ""
    if(empty(
    $_REQUEST[`name`]))     
     { 
    $error .=  "<p>Не введено искомое слово. 
    Введите поисковое слово и повторите поиск.</p>"

     } 
    else 

        
    //обрабатываем на предмет sql инъекций 
        
    if (!get_magic_quotes_gpc()) 
        { 
            
    $name mysql_escape_string($_REQUEST[`name`]); 
        } 
        else 
        { 
        
    $name $_REQUEST[`name`]; 
        } 
    //формируем поисковый запрос , в логическом режиме 
    $query "SELECT * FROM `quotes` WHERE MATCH ( content ) AGAINST ('$name'  IN BOOLEAN MODE)"
    $post mysql_query($query); 
    if(
    $post
            { 
              
    $numtot mysql_num_rows($post); 
              if(
    $numtot>0
              { 
            
    $rezult ""
            
    $rezult .= "<ol>"
            while(
    $posts mysql_fetch_array($post)) 
                { 
            
    $rezult .= 
            <li><a href=`http://"
    .$_SERVER[`SERVER_NAME`]."/id".$posts[`id`]."`>Совет №"$posts[`id`]."</a> «...".$posts[`content`]."...»</li>"
            } 
            
    $rezult .= "</ol>"
            } 
    //если результата нет, выводим сообщение 
    else 
            { 
            
    $error .=  "<p>По поисковому запросу: ".$_REQUEST[`name`]." ничего не найдено. Попробуйте изменить поисковое слово.</p>"
            } 
            } 

    if(isset(
    $error)) echo $error
    echo 
    $rezult;  
    И ни как эта форма себя не проявляет кроме перезагрузки страницы. Пробовал через GET... В адресной строке все передает, но ничего брать не хочет и условия не срабатывают... Хотя по сути если ничего не берется, то должно вывести сообщение "Не введено искомое слово. Введите поисковое слово и повторите поиск." Вообще не соображаю...
     
  2. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    во-первых включите отображение ошибок, и будет вам счастье
    во-вторых, у вас в PHP-коде неверные одинарные кавычки(всмысле там должны быть одинарные кавычки, а не апострофы).
     
  3. jon4god

    jon4god

    Регистр.:
    13 авг 2009
    Сообщения:
    213
    Симпатии:
    50
    Вот спасибо! Скопировал этот кусок кода с примера в инете и апострофов не заметил, так как зрение -10. :) А в ошибках не пишет... Включено у меня отображение ошибок. :)
     
  4. Miraage

    Miraage Angular/Laravel

    Регистр.:
    3 июн 2008
    Сообщения:
    230
    Симпатии:
    51
  5. jon4god

    jon4god

    Регистр.:
    13 авг 2009
    Сообщения:
    213
    Симпатии:
    50
    А что это значит для будущего?
    То что надо добавить вот это?
    PHP:
    $name str_replace"'"''', $name );
    или вставить вместо
    PHP:
    $name mysql_escape_string($_REQUEST[`name`]);
     
  6. solarb

    solarb Постоялец

    Регистр.:
    11 июл 2009
    Сообщения:
    64
    Симпатии:
    15
    mysql_escape_string прилагается на mysql queries, в твоем случае тебе нужно :


    $name = htmlspecialchars($_REQUEST[`name`]);
     
  7. jon4god

    jon4god

    Регистр.:
    13 авг 2009
    Сообщения:
    213
    Симпатии:
    50
    М-да... Спасибо всем. Вы мне рассказываете о делах для меня немысленных. :) Хитрая штука эта защита базы данных. Видно надо хорошо потереть свой маленький ум о книги, чтобы понять те тонкости, о которых вы мне пишите. :)
     
  8. mcdir

    mcdir

    Регистр.:
    6 ноя 2007
    Сообщения:
    202
    Симпатии:
    37