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
Форумы портала PHP.SU :: Версия для печати :: Ошибки magic_quotes
Форумы портала PHP.SU » PHP » Программирование на PHP » Ошибки magic_quotes

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

1. maroz89 - 08 Июля, 2010 - 21:03:08 - перейти к сообщению
после вставки кода
CODE (htmlphp):
скопировать код в буфер обмена
  1.  require ("phpinc/function.php");
  2.        if (isset($date)){stripslashes_gpc($date);}
  3.     array_walk_recursive($_GET, 'stripslashes_gpc');
  4. }
  5.  


файл function.php
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. /*Убираем magick quotes*/
  3. function stripslashes_gpc(&$value)
  4.    {
  5.    $value = stripslashes($value);
  6.    $value = mysql_real_escape_string($value);
  7.    }
  8. ?>


Появились такие ошибки

Цитата:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in X:\home\phpblog\www\phpinc\function.php on line 6

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in X:\home\phpblog\www\phpinc\function.php on line 6

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in X:\home\phpblog\www\phpinc\function.php on line 6

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in X:\home\phpblog\www\phpinc\function.php on line 6

из этого я понял что нет доступа для некого пользователя ODBC.. но такого пользователя в правах доступа к Бд вообще не существует... В чем в тут ошибка.. раньше этот код использовал работал нормально
2. mSec - 08 Июля, 2010 - 21:26:56 - перейти к сообщению
пытается обработать строку, используя кодировку твоей базы данных.
Я так понимаю, ты не приконнектился к базе и поэтому он пытается подключиться к localhost под логином ODBC без пароля (это вроде стандартные параметры коннекта в PHP).
Попробуй использовать mysql_escape_string() или подключись к базе.
3. maroz89 - 08 Июля, 2010 - 21:52:58 - перейти к сообщению
Ха-ха Спасибо Радость Я не заметил, точно... не подключился к базе! Хорошо
4. JustUserR - 09 Июля, 2010 - 02:51:21 - перейти к сообщению
maroz89 пишет:
Array_walk_recursive($_GET, 'stripslashes_gpc');
Ваша функция для переэкранировки данных после применения опции magic_quotes скорее всего не будет работать полностью как вы предполагали - поскольку во-первых данные из GET/POST-запросов приходят в некэранированном виде а вы определяя наличие опции magic_quotes сначала снимаете один уровень экранирования а потом практически его добавляете - во-вторых полезность функции mysql_real_escape_string состоит именно в экранировании с учетом текущего ресурса подключния к БД для последующих SQL-запросов к ней с учетом кодировки соединения - оданако данные строк в PHP-скрипте могут иметь другую кодировку и экранировать их таким образом вовсе не следует
5. maroz89 - 09 Июля, 2010 - 17:51:59 - перейти к сообщению
хм.. тогда подскажите как подобным образом решить такую задачу:
Я незнаю включены ли на сервере магические кавычки, мне нужно это определить, если они включены, то нужно обрезать их экранирование и использовать вместо этого mysql_real_escape_string, а если они выключены, то просто обработать mysql_real_escape_string
6. JustUserR - 10 Июля, 2010 - 03:15:22 - перейти к сообщению
maroz89 пишет:
Хм.. тогда подскажите как подобным образом решить такую задачу:
Я незнаю включены ли на сервере магические кавычки, мне нужно это определить, если они включены, то нужно обрезать их экранирование и использовать вместо этого mysql_real_escape_string, а если они выключены, то просто обработать mysql_real_escape_string
В принципе все остается почти также как было в вашем решении - но либо callback-функция stripslashes_gpc заменяется на простой вызов stpipshashes для снятия одного уровня экранирования в случае включенной опции magic_quotes и потом перед созданием SQL-запросов функция mysql_real_escape_string применяется вручную - либо callback-функция обработки остается у вас в точности какая же как и есть но к if-условию добавляется else-секция которая выполняет экранирование mysql_real_escape_string в случае выключенных magic_quotes
Если дословно использовать PHP-код приведенный вами то он работает несимметрично - поскольку в случае выключенных magic_quotes экранирование mysql_real_escape_string не будет произведено вообще
7. maroz89 - 10 Июля, 2010 - 16:01:26 - перейти к сообщению
JustUserR пишет:
Если дословно использовать PHP-код приведенный вами то он работает несимметрично - поскольку в случае выключенных magic_quotes экранирование mysql_real_escape_string не будет произведено вообще

да действительно, это мой недосмотр... Спасибо!
8. JustUserR - 12 Июля, 2010 - 15:31:39 - перейти к сообщению
maroz89 пишет:
Да действительно, это мой недосмотр... Спасибо!
Пожалуйста! В целях диагностики можно осуществлять вывод данных которые подлежат автоматического экранирование в браузер - и за счет просмотра сгенерированного исходного HTML-кода можно оценить правильность работы соответствующих функций

 

Powered by ExBB FM 1.0 RC1