PHP urlencode и декодировать - PullRequest
       157

PHP urlencode и декодировать

2 голосов
/ 14 февраля 2010

Все,

Есть текстовая область, скажем

 <input type="submit">

И если пользователь вводит данные как,

 here is my name  and my mail id is "a@x.com" 

И когда данные публикуютсяна стороне сервера данные принимаются, так как здесь мое имя и мой почтовый идентификатор \ "a@x.com \"

Обратная косая черта добавляется после двойных кавычек. Теперь, как кодировать данные перед отправкой.Я использую php на стороне сервера ..

Спасибо.

Ответы [ 5 ]

3 голосов
/ 14 февраля 2010

это magic_quotes_gpc: чтобы удалить его, просто отключите его в php.ini или удалите с помощью stripslashes ($ your_var);

, хотя имейте в виду, что это (паршивая) функция безопасности php, но при хранении данных в базе данных вы должны использовать соответствующие функции escape для предотвращения инъекций sql в любом случае, а при отображении данных, опубликованных пользователем, ваша функция очистки должна предотвратить инъекции XSS.

2 голосов
/ 15 февраля 2010

Вы можете избавиться от магических кавычек и в PHP, если ваш веб-хостинг не позволяет вам отключить его в файле php.ini. Поместите этот код поверх вашего PHP-скрипта:

    if (get_magic_quotes_gpc()) {
        function stripslashes_deep($value) {
            $value = is_array($value) ?
                     array_map('stripslashes_deep', $value) :
                     stripslashes($value);
            return $value;
        }

        $_POST = array_map('stripslashes_deep', $_POST);
        $_GET = array_map('stripslashes_deep', $_GET);
        $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
        $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
    }
2 голосов
/ 14 февраля 2010

Похоже, директива magic_quote_gpc включена на вашем сервере:

Когда включены магические кавычки, все (одинарная кавычка), "(двойная кавычка) \ (обратная косая черта) и NUL экранированы обратная косая черта автоматически.


Решение, если вы не можете отключить его в конфигурации вашего сервера, было бы:

  • определить, включено ли это
  • , если да, удалить выход из входа, используя stripslashes

Об этом вы можете прочитать в разделе Отключение магических кавычек .


Конечно, вам придется экранировать ваши данные перед использованием; например, перед его внедрением в запрос SQL.

1 голос
/ 14 февраля 2010

Возможно, в вашей системе включены магические кавычки. Это не хорошая вещь .

1 голос
/ 14 февраля 2010

Отключите magic_quotes в php.ini или используйте stripslashes($text) в PHP для удаления слешей.

...