![]() |
php - проблема с кавычкой...
Вобщем в базе есть запись с:
login='Мой логин'', pas=хеш паса при прямом запросе из phpmyadmin'a: SELECT * FROM users WHERE login='Мой логин'' AND pas_hesh='хеш паса...' всё выводиться нормально, а при выводе из php скрипта не выводиться... PHP код:
Добавлено через 5 минут: Аа, в html исходнике запрос выглядит вот так: Мой логин' Зачем нужен "&", и почему он добавился? Да, значение бирётся из кука: %CC%EE%E9+%F2%E5%F5%ED%E8%F7%E5%F1%EA%E8%E9+%ED%E8 %EA%26%23039%3B тут в глаза бросаются циферки 23039... а если юзер вставит в текст #039 и с этим пройдёт запрос то ведь никакой уязвимости нет, этот символ, и другие с # интерпретируется только как текст? Зачем тогда функция защиты ставит & который интерпретируется браузером как & ? А ещё когда то было описание sql уязвимости из за проблем с кодировкой, кажеться на разоре... У ково есть ссыль выложите плиз :) если перез запрсоом символ & просто удалить с помощю регулярки то всё номрально, и безопасно? |
Опана... Символ RE login='Мой логин'' ... Движок форума отобразил как ковычку!
|
оформи код как положено [php][*/php]
|
Замени $sql = mysql_query($query, $sqlid); на $sql = mysql_query($query, $sqlid) or die(mysql_error()); и увидишь , почему запрос не выполнился.
|
$query="SELECT * FROM users WHERE login='Мой логин\'' AND pas_hesh='хеш паса...'";
вобщем разберись с кавычками |
Нет нет ребята... вы немного не так поняли...
Цитата:
Но через phpmyadmin резуьтат возвращается, а через пхп скрипт - нет! Кажись уже понял)) Дело в том что скрипт сделал запрос с этим: &, а в пхп май админе этого небыло... Всё, с этим разобрался, работает! Но теперь вопрос в том почему функция безопасности вставила этот символ: & и безопасно ли его убрать? А, помоему & добавляется перед функцией для указания того, что спецсимвол отображать не нужно... |
нельзя сперва ставить одинарную ковычку а потом двойную: 'abc"
и аналогично: "abc' надо однаково: 'abc' или "abc" вот и твоя ошибка! |
Цитата:
|
и почитай про:
htmlspecialchars magic_quotes |
танкисты блин))
Цитата:
' = "& # 039 ;" тока без пробелов, т.е этот движок, двиг античата отобразил спецсимвол не в виде его кода, а в виде орегинального символа, попробуйте написать сами: Цитата:
PHP код:
Сейчас решил с помощю str_replase удалять эту фигню: "&"... И нормауль, рабоает =) |
| Время: 15:39 |