За последние 24 часа нас посетили 17611 программистов и 1722 робота. Сейчас ищут 898 программистов ...

передача символа +

Тема в разделе "PHP для новичков", создана пользователем vikrorpert, 25 сен 2011.

  1. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    передаю параметр "+1" в урле, так вот на локалке мне приходит в скрипт "+1" а на серваке " 1" (пробел), про urlencode знаю, но если натравить его на "+1" то будет ошибка

    это фича или баг или что, и как правильно разрулить?
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Укажи текст ошибки, которая возникает, если
    Там не должно быть никакой ошибки.
    PHP:
    1. <?php
    2. $str = '+1';
    3. echo(urlencode($str));
    4. ?>
    Выводит %2B1 , как и должно быть.
     
  3. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    есть ф-я
    PHP:
    1.  
    2. function foo($param)
    3. {
    4.  
    5.   eval('$a=3'.$param); //не работает на серваке потому что приходит ' 1'
    6.   eval('$a=3'.urlencode($param)); //не работает на локалке потому что приходит '+1'
    7.  
    8. }
    9.  
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    :)))
    urlencode() нужно применять когда генерируешь url, а не когда принимаешь значения. При приёме данных web-сервером обычно автоматически url декодируется, если нет - можно использовать urldecode();
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Делать eval() для данных, которые приходят из вне (в данном случае методом GET) - это критическая уязвимость в безопасности сайта.
     
  6. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    а как тогда быть с плюсом? при генерации ссылки делать urlencode('+1'); ?
     
  7. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО