"получается как \" и \ " - PullRequest
       1

"получается как \" и \ "

4 голосов
/ 19 ноября 2010

, поэтому у меня есть поле, которое вы можете ввести. После того, как вы наберете, вы нажмете ok, и он отправит вызов ajax на save.php, вставит в базу данных (с php), а затем выведет, какой у вас тип. А затем ajax call on succes захватывает вывод и предупреждает его (success: function(msg){ alert(msg) }). ответ в формате HTML.

Работает хорошо, пока я не использую ' или " в поле. Например, если я напишу: 'asdadsasd" получается: \'asdadsasd\" Как я могу это исправить?

Не знаю, имеет ли это значение, но в save.php у меня есть:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header('Content-type: text/html; charset=utf-8');

И выводит сообщение так:

echo htmlspecialchars(strip_tags($message), ENT_QUOTES, 'utf-8'); 

Ответы [ 4 ]

2 голосов
/ 19 ноября 2010

Скорее всего, это связано с тем, что PHP исключительно полезен раздражает "волшебные кавычки" .Волшебные кавычки автоматически вставляют косые черты перед одинарными и двойными кавычками во входящих данных, предоставленных пользовательским агентом (т. Е. В $_GET, $_POST и $_COOKIE, или "GPC"), в неопределенной попытке обеспечить некоторую безопасность для тех,не осознайте опасности незапятнанного пользовательского ввода.

Конечно, вы должны всегда проверять магические кавычки, используя get_magic_quotes_gpc, прежде чем пытатьсяиспользовать любые данные GPC.Если он включен, просто наберите stripslashes на своем входе перед его использованием.

Я использую нечто похожее на это в начале любого сценария, который я пишу:

function cleanInput($input)
{
    if (is_array($input))
    {
        foreach ($input as &$value)
        {
            $value = cleanInput($value);
        }

        return $input;
    }
    else
    {
        return stripslashes($input);
    }
}

if (get_magic_quotes_gpc())
{
    $_GET = cleanInput($_GET);
    $_POST = cleanInput($_POST);
    $_COOKIE = cleanInput($_COOKIE);
    $_REQUEST = cleanInput($_REQUEST);
}
1 голос
/ 19 ноября 2010

использование полоски

1 голос
/ 19 ноября 2010

Это потому, что опция ENT_QUOTES позволяет вам проверить: http://php.net/manual/en/function.htmlentities.php

РЕДАКТИРОВАТЬ: я забыл косые черты, у вас активированы magic_quotes?

1 голос
/ 19 ноября 2010

Попробуйте позвонить stripslashes на него.Я думаю, что это добавляет косые черты, когда это отправлено / отправлено через ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...