2010-10-25 2 views
2

Мне интересно, почему php добавляет обратную косую черту, когда я удаляю двойные кавычки.Почему php вставляет обратную косую черту при замене двойных кавычек

<input type="text" name="number" id="number" /> 
<input type="button" name="button" id="button" value="Button" /> 

Say они пользователь вводит значение 5-1/2" и я передаю его на страницу обработки с помощью метода .get Jquery в.

$('#button').click(function(){ 

    $.get('determine.php?number='+$('#number').val(),function(data){ 
    $('#response').html(data); 
    }); 

}); 

Вот моя страница обработки.

determine.php 

$number = $_GET['number']; 

$number = str_replace(array('"', "'"), '', $number); 

echo $number; 

//echos 5-1/2\ 

Почему обратный слэш там?

+0

Я думаю, что это тот же вопрос, как: http://stackoverflow.com/questions/2448332/why -does-получить-в-PHP-ошибочно декодирует-слэш –

ответ

6

Он не добавляет их, когда вы удаляете косую черту, она автоматически ускользает от них в параметрах строки запроса, когда включена директива magic_quotes_gpc (и по умолчанию она предшествует 5.30). Он сделал в качестве меры предосторожности, чтобы данные можно было безопасно использовать в запросе базы данных. Вы можете отключить их, изменив настройку в файле php.ini, см. http://www.php.net/manual/en/security.magicquotes.disabling.php.

Вы также можете использовать stripslashes, чтобы удалить их:

$number = str_replace(array('"', "'"), '', stripslashes($number)); 

Пример использования stripslashes(), когда директива PHP magic_quotes_gpc на (это по умолчанию), и вы не вставляя эти данные в место (такое как база данных), которое требует экранирования. Например, если вы просто выводите данные прямо из HTML-формы.

2

См http://php.net/manual/en/security.magicquotes.php

Магия Котировки это процесс, который автоматически ускользает входящие данные в PHP скрипт. Предпочтительно кодировать магические цитаты и вместо этого удалять данные во время выполнения, если это необходимо.

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

Короче говоря, волшебные кавычки это функция в PHP где кавычки автоматически экранируются с символом \

Вот некоторые решения для выключая магические кавычки:. http://www.php.net/manual/en/security.magicquotes.disabling.php