Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Funtik44
Отправлено: 15 Сентября, 2010 - 11:38:38
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Всем привет.

Ребят, подскажите пожалуйста, у меня есть скриптик, который осуществляет поиск по базе и потом эта информация выводится в тело сайта:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php include ("config.php");
  2. $search = mysql_real_escape_string($_POST['search']);
  3. $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);
  4. if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
  5. $myrow = mysql_fetch_array($res);
  6. ?>


С ним возникли следующие проблеммы:

1. В Mozill'e, Chrome и Oper'e скрипт поиска не отрабатывает (хотя в IE всё идеально).
2. В Mozill'e, Chrome и Oper'e сайт не работает если я перехожу по прямому адресу (http://site.ru), если же открываю локальный адрес (file:///W:/home/site.ru/www/index.php), то все работает (за исключением поиска). И еще в Chrome при переходе на страницу со скриптом, он открывает не страницу, а код отображает на экране. Не понял


Это все, у меня работает на Denwer'e.

(Отредактировано автором: 15 Сентября, 2010 - 11:39:50)

 
 Top
garvey
Отправлено: 15 Сентября, 2010 - 11:41:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Видно что-то у вас с настройкой локального сервера. Хотя не могу сказать точно, слишком мало информации. Но проблема уж точно не в приведенном коде.
 
 Top
Funtik44
Отправлено: 15 Сентября, 2010 - 11:47:54
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Просто я ставил Denwer, а потом даже ничего не изменял в настройках. Вы считаете, что код написан приемлемо, да?

Тогда буду разбираться с настройками, а пока задам еще один вопрос. У меня страница на сайте, где собственно и находится данный поиск. Пользователь вводит название объекта, далее в базе ищется информация по этому объекту и выводится на экран. Необходимо, чтобы совместно с этой информацией искались еще и связанные с этим объектом картинки и выводились в тело.

1. Как быть с картинками, лучше (с точки зрения быстродействия) их хранить в обычной папке внутри сайта и подгружать от туда?
2. Как это реализовать с точки зрения кода php и связать с уже существующим поиском? С чего мне начать?
 
 Top
garvey
Отправлено: 15 Сентября, 2010 - 11:56:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Я не говорил, что код приемлемый. Но в нем нет ошибок, которые будут приводить к неработоспособности.

Картинки храните в папке с названиями image$Id.ext. В таблице есть поле Id. Поиском находим какую-то запись, берем ее Id и вытягиваем картинку с этим Id, если она есть.
 
 Top
Funtik44
Отправлено: 15 Сентября, 2010 - 12:16:32
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




А Вы не могли бы пример кода написать?
 
 Top
JustUserR
Отправлено: 15 Сентября, 2010 - 12:21:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Funtik44 Работа серверного PHP-скрипта не должна зависеть от используемого браузера на клиентской стороне - и если вы получаете различных результаты в разных user-agent-ах то это свидетельствует скорее всего о наличии кеширования либо настройках по умолчанию - в частност следует явно указывать в формах параметр action с виртуальным путем к серверному PHP-скрипту Кроме того при использовании значения из пользовательского ввода в LIKE-операторе - необходимо произвести его предварительное двойное экрнирование согласно уровню вложенности в строку и спецсимволам действующим в операторе


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Funtik44
Отправлено: 15 Сентября, 2010 - 12:41:58
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Цитата:
с виртуальным путем к серверному PHP-скрипту


<form action="http:\\site.ru\page2.php" method=post> это имеется ввиду?

И Вы не могли бы пояснить, что значит "предварительное двойное экрнирование"?

(Отредактировано автором: 15 Сентября, 2010 - 12:45:31)

 
 Top
JustUserR
Отправлено: 15 Сентября, 2010 - 12:46:22
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Funtik44 пишет:
А Вы не могли бы пример кода написать?
В качестве простого механизма для защиты вашего SQL-запроса от неправильно введенной пользователем информации - которая может привести к SQL-инхекции или неправильной трактовки запроса - можно использовать такой PHP-код
PHP:
скопировать код в буфер обмена
  1. $search = mysql_real_escape_string($_POST['search']);
  2. $search = str_replace("?","\?",str_replace("%","\%",$search))
  3. $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%$search%'", $db);


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Funtik44
Отправлено: 15 Сентября, 2010 - 12:54:55
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Ругается на эту строку:

Цитата:
$res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%$search%'", $db);


Ругань:

Parse error: syntax error, unexpected T_VARIABLE in W:\home\site.ru\www\page2.php on line 4
 
 Top
AdMeen
Отправлено: 15 Сентября, 2010 - 13:06:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 370
Дата рег-ции: Сент. 2009  
Откуда: Воронеж


Помог: 1 раз(а)




Если учесть что любой браузер представляет собой лишь клиент, который обменивается с сервером по протоколу HTTP, а протокол как вы понимаете одинаков для всех, тут нет никаких расхождений. То проблема может быть на стороне сервера, что мало вероятно, так как ИЕ все таки получает ответ, или на стороне клиента при обработке вывода, который вы нам не показали.
(Добавление)
Funtik44 пишет:
Ругается на эту строку:


да уж... вас видимо забанило на гугле? вы используете неизвестную переменную в строке

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%$search%'", $db);
  3.  

(Отредактировано автором: 15 Сентября, 2010 - 13:11:22)

 
 Top
Funtik44
Отправлено: 15 Сентября, 2010 - 13:10:31
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




AdMeen пишет:
Если учесть что любой браузер представляет собой лишь клиент, который обменивается с сервером по протоколу HTTP, а протокол как вы понимаете одинаков для всех, тут нет никаких расхождений. То проблема может быть на стороне сервера, что мало вероятно, так как ИЕ все таки получает ответ, или на стороне клиента при обработке вывода, который вы нам не показали.


Вывод следующий:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <form action="" method=post>
  2. <input id="inputtext" type="text" name="search">
  3. <input id="inputbut" type="image" src="images/search.gif" name="submit">
  4. </form>
 
 Top
AdMeen
Отправлено: 15 Сентября, 2010 - 13:12:18
Post Id



Посетитель


Покинул форум
Сообщений всего: 370
Дата рег-ции: Сент. 2009  
Откуда: Воронеж


Помог: 1 раз(а)




Funtik44 пишет:

Вывод следующий:



Пардон, где же тут вывод результатов поиска?
 
 Top
Funtik44
Отправлено: 15 Сентября, 2010 - 13:21:22
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




AdMeen пишет:
Пардон, где же тут вывод результатов поиска?


Извиняюсь, промазал.

Вот код:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php include ("config.php");
  2. $search = mysql_real_escape_string($_POST['search']);
  3. $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);
  4. if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
  5. $myrow = mysql_fetch_array($res);
  6. ?>


Вот вывод результатов:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <p class="placename"><b><? echo $myrow["placename"];?></b></p>
  2. <p class="zagolovok"><b>ОПИСАНИЕ:</b></p>
  3. <p class="centertext"><b><? echo $myrow["description"];?></b></p>

(Добавление)
Если я в этот код добавляю вместо:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $search = mysql_real_escape_string($_POST['search']);
  2. $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);


Строки, приведенные в примере JustUser, получается следующий код, который не работает:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php include ("config.php");
  2. $search = mysql_real_escape_string($_POST['search']);
  3. $search = str_replace("?","\?",str_replace("%","\%",$search))
  4. $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%$search%'", $db);
  5. if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
  6. $myrow = mysql_fetch_array($res);
  7. ?>

(Добавление)
garvey пишет:
Картинки храните в папке с названиями image$Id.ext. В таблице есть поле Id. Поиском находим какую-то запись, берем ее Id и вытягиваем картинку с этим Id, если она есть.


Вы не могли бы привести пример кода, как это выглядит?
 
 Top
JustUserR
Отправлено: 16 Сентября, 2010 - 15:14:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Funtik44 пишет:
Строки, приведенные в примере JustUser, получается следующий код, который не работает:
Приведенный вариант PHP-скрипта в котором входящая от пользователя информация для поиска подвергается двукратному экранированию по вышеуказанной схеме является логически коректным - тем не менее конкретно во второй строке отсутствет оперетор точка с запятой и также возможно система интерполяции переменных просит заключть ее имя в фигурные скобки на стыке спецсимволов


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB