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

jon4god

Гуру форума
Регистрация
13 Авг 2009
Сообщения
224
Реакции
51
Не могу сообразить где затык...
Есть файл 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... В адресной строке все передает, но ничего брать не хочет и условия не срабатывают... Хотя по сути если ничего не берется, то должно вывести сообщение "Не введено искомое слово. Введите поисковое слово и повторите поиск." Вообще не соображаю...
 
во-первых включите отображение ошибок, и будет вам счастье
во-вторых, у вас в PHP-коде неверные одинарные кавычки(всмысле там должны быть одинарные кавычки, а не апострофы).
 
Вот спасибо! Скопировал этот кусок кода с примера в инете и апострофов не заметил, так как зрение -10. :) А в ошибках не пишет... Включено у меня отображение ошибок. :)
 
на будущее, SQL инъекция контрится
А что это значит для будущего?
То что надо добавить вот это?
PHP:
$name = str_replace( "'", ''', $name );
или вставить вместо
PHP:
$name = mysql_escape_string($_REQUEST[`name`]);
 
mysql_escape_string прилагается на mysql queries, в твоем случае тебе нужно :


$name = htmlspecialchars($_REQUEST[`name`]);
 
М-да... Спасибо всем. Вы мне рассказываете о делах для меня немысленных. :) Хитрая штука эта защита базы данных. Видно надо хорошо потереть свой маленький ум о книги, чтобы понять те тонкости, о которых вы мне пишите. :)
 
Назад
Сверху