используя stripslashes () избирательно - PullRequest
1 голос
/ 24 июля 2009

Мое php-приложение использует stripslashes () для работы с magic_quotes, но я только хочу, чтобы оно удаляло косые черты, которые вставляет magic_quotes, потому что пользователю разрешено вводить \ с помощью ввода.

Ответы [ 3 ]

8 голосов
/ 24 июля 2009

stripslashes не удаляет косые черты без разбора.

Если включены магические кавычки, то они избегают косых черт, заменяя '\' на '\\', а stripslashes отменяет экранирование магических кавычекправильно, заменив '\\' на '\', чтобы вернуть вам то, что ввел пользователь.

Я думаю, вы, вероятно, просто хотите что-то вроде этого:

// Ripped from the PHP manual (http://us3.php.net/manual/en/function.get-magic-quotes-gpc.php)
if (get_magic_quotes_gpc()) {
    $lastname = stripslashes($_POST['lastname']);
}
else {
    $lastname = $_POST['lastname'];
}

В конце этого кода$lastname не должно иметь косых черт, кроме тех, которые были введены пользователем.

С другой стороны, магические кавычки представляют собой проблему безопасности и не рекомендуются в более новых версиях PHP (см. документы ). .

2 голосов
/ 24 июля 2009

Использование magic_quotes_gpc в любом случае является плохой идеей, оно официально устарело с версии 5.3 и пропало с версии PHP 5.5. Что еще более важно (и немедленно), он поощряет слабую безопасность, потому что он на самом деле не делает ничего полезного, что не может быть сделано mysql_real_escape_string или подготовленными операторами или хранимыми процедурами.

Если вы можетеизбавься от этого, пожалуйста ...

0 голосов
/ 24 июля 2009

Попробуйте применить свои собственные функции кодирования / декодирования, например:

function doEncode($string){
     return addslashes(str_replace("\","\\",$string));
}

function doDecode($string){
    return str_replace("\\","\",stripslashes($string));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...