Вобщем в базе есть запись с: login='Мой логин'', pas=хеш паса при прямом запросе из phpmyadmin'a: SELECT * FROM users WHERE login='Мой логин'' AND pas_hesh='хеш паса...' всё выводиться нормально, а при выводе из php скрипта не выводиться... PHP: $query="SELECT * FROM users WHERE login='Мой логин'' AND pas_hesh='хеш паса...'"; echo $query; $sql = mysql_query($query, $sqlid); while ($tablerows = mysql_fetch_row($sql)){ echo "Есть резуьтат!"; } Почему не выодиться из пхп скрипта? Добавлено через 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 уязвимости из за проблем с кодировкой, кажеться на разоре... У ково есть ссыль выложите плиз если перез запрсоом символ & просто удалить с помощю регулярки то всё номрально, и безопасно?
Замени $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" вот и твоя ошибка!
танкисты блин)) Ну это же и обезьяне понятно, ещё раз повторюсь здесь проблема была в следующем: ' = "& # 039 ;" тока без пробелов, т.е этот движок, двиг античата отобразил спецсимвол не в виде его кода, а в виде орегинального символа, попробуйте написать сами: и увидите кавычку, также можно юзать другие символы, но < > не прокатывает. я даже написал скриптик: PHP: <? for($x=0; $x<99; $x++) { echo "&�$x; - $x<br>"; } ?> чтобы узнать коды всех символов..,) Сейчас решил с помощю str_replase удалять эту фигню: "&"... И нормауль, рабоает =)