php - проблема с кавычкой...

Discussion in 'PHP' started by ANONIM123, 11 May 2009.

  1. ANONIM123

    ANONIM123 New Member

    Joined:
    14 Jan 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    Вобщем в базе есть запись с:
    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 просто удалить с помощю регулярки то всё номрально, и безопасно?
     
    #1 ANONIM123, 11 May 2009
    Last edited by a moderator: 11 May 2009
  2. ANONIM123

    ANONIM123 New Member

    Joined:
    14 Jan 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    Опана... Символ RE login='Мой логин'' ... Движок форума отобразил как ковычку!
     
  3. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    оформи код как положено
    PHP:
    [*/php]
     
  4. Krist_ALL

    Krist_ALL Banned

    Joined:
    14 Jan 2009
    Messages:
    436
    Likes Received:
    193
    Reputations:
    24
    Замени $sql = mysql_query($query, $sqlid); на $sql = mysql_query($query, $sqlid) or die(mysql_error()); и увидишь , почему запрос не выполнился.
     
  5. NuR

    NuR Elder - Старейшина

    Joined:
    11 Dec 2005
    Messages:
    85
    Likes Received:
    58
    Reputations:
    -2
    $query="SELECT * FROM users WHERE login='Мой логин\'' AND pas_hesh='хеш паса...'";

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

    ANONIM123 New Member

    Joined:
    14 Jan 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    Нет нет ребята... вы немного не так поняли...
    Т.е запрос верный... а ковычка отобразилась здесь из за того что движок ЭТОГО форума интерпритировал этот спецсимвол... Запрос выполняется без ошибок!
    Но через phpmyadmin резуьтат возвращается, а через пхп скрипт - нет!

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

    Но теперь вопрос в том почему функция безопасности вставила этот символ: &amp
    и безопасно ли его убрать?
    А, помоему &amp добавляется перед функцией для указания того, что спецсимвол отображать не нужно...
     
    #6 ANONIM123, 11 May 2009
    Last edited: 11 May 2009
  7. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    нельзя сперва ставить одинарную ковычку а потом двойную: 'abc"
    и аналогично: "abc'
    надо однаково: 'abc' или "abc"
    вот и твоя ошибка!
     
    1 person likes this.
  8. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    ^^
     
  9. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    и почитай про:
    htmlspecialchars
    magic_quotes
     
  10. ANONIM123

    ANONIM123 New Member

    Joined:
    14 Jan 2008
    Messages:
    36
    Likes Received:
    0
    Reputations:
    0
    танкисты блин))

    Ну это же и обезьяне понятно, ещё раз повторюсь здесь проблема была в следующем:

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

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

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

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