Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   php - проблема с кавычкой... (https://forum.antichat.xyz/showthread.php?t=120102)

ANONIM123 11.05.2009 11:54

php - проблема с кавычкой...
 
Вобщем в базе есть запись с:
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 исходнике запрос выглядит вот так:
Мой логин'

Зачем нужен "&amp", и почему он добавился?

Да, значение бирётся из кука:
%CC%EE%E9+%F2%E5%F5%ED%E8%F7%E5%F1%EA%E8%E9+%ED%E8 %EA%26%23039%3B
тут в глаза бросаются циферки 23039...

а если юзер вставит в текст #039 и с этим пройдёт запрос то ведь никакой уязвимости нет, этот символ, и другие с # интерпретируется только как текст? Зачем тогда функция защиты ставит &amp который интерпретируется браузером как & ?

А ещё когда то было описание sql уязвимости из за проблем с кодировкой, кажеться на разоре... У ково есть ссыль выложите плиз :)

если перез запрсоом символ &amp просто удалить с помощю регулярки то всё номрально, и безопасно?

ANONIM123 11.05.2009 11:58

Опана... Символ RE login='Мой логин'' ... Движок форума отобразил как ковычку!

Sharky 11.05.2009 12:31

оформи код как положено [php][*/php]

Krist_ALL 11.05.2009 13:43

Замени $sql = mysql_query($query, $sqlid); на $sql = mysql_query($query, $sqlid) or die(mysql_error()); и увидишь , почему запрос не выполнился.

NuR 11.05.2009 13:59

$query="SELECT * FROM users WHERE login='Мой логин\'' AND pas_hesh='хеш паса...'";

вобщем разберись с кавычками

ANONIM123 11.05.2009 20:06

Нет нет ребята... вы немного не так поняли...
Цитата:

Опана... Символ RE login='Мой логин'' ... Движок форума отобразил как ковычку!
Т.е запрос верный... а ковычка отобразилась здесь из за того что движок ЭТОГО форума интерпритировал этот спецсимвол... Запрос выполняется без ошибок!
Но через phpmyadmin резуьтат возвращается, а через пхп скрипт - нет!

Кажись уже понял)) Дело в том что скрипт сделал запрос с этим: &amp, а в пхп май админе этого небыло... Всё, с этим разобрался, работает!

Но теперь вопрос в том почему функция безопасности вставила этот символ: &amp
и безопасно ли его убрать?
А, помоему &amp добавляется перед функцией для указания того, что спецсимвол отображать не нужно...

eLWAux 11.05.2009 22:56

нельзя сперва ставить одинарную ковычку а потом двойную: 'abc"
и аналогично: "abc'
надо однаково: 'abc' или "abc"
вот и твоя ошибка!

eLWAux 11.05.2009 22:58

Цитата:

Вобщем в базе есть запись с:
login='Мой логин', pas=хеш паса

при прямом запросе из phpmyadmin'a:
SELECT * FROM users WHERE login='Мой логин' AND pas_hesh='хеш паса...' всё выводиться нормально, а при выводе из php скрипта не выводиться...

$query="SELECT * FROM users WHERE login='Мой логин' AND pas_hesh='хеш паса...'";
echo $query;
$sql = mysql_query($query, $sqlid);
while ($tablerows = mysql_fetch_row($sql)){
echo "Есть резуьтат!";
}
^^

eLWAux 11.05.2009 22:59

и почитай про:
htmlspecialchars
magic_quotes

ANONIM123 13.05.2009 12:38

танкисты блин))

Цитата:

нельзя сперва ставить одинарную ковычку а потом двойную: 'abc"
и аналогично: "abc'
надо однаково: 'abc' или "abc"
вот и твоя ошибка!
Ну это же и обезьяне понятно, ещё раз повторюсь здесь проблема была в следующем:

' = "& # 039 ;" тока без пробелов, т.е этот движок, двиг античата отобразил спецсимвол не в виде его кода, а в виде орегинального символа, попробуйте написать сами:
Цитата:

"& # 039 ;" тока без пробелов
и увидите кавычку, также можно юзать другие символы, но < > не прокатывает. я даже написал скриптик:
PHP код:

<?

for($x=0$x<99$x++) {
echo 
"&amp&#0$x; - $x<br>";
}

?>

чтобы узнать коды всех символов..,)

Сейчас решил с помощю str_replase удалять эту фигню: "&amp"... И нормауль, рабоает =)


Время: 15:39