2012-05-04 3 views
-1

У меня есть яваскрипт функция, которая нарушена потому, что» («Лазурного берег») не спаслись:Как избежать «в setParameter

Javascript: searchDay («месяц», «Франция», «Кот d'Azur ',' 0 ',' 201208 ',' 18 ');

Параметры устанавливаются как следует:

$jsUrl = new JavascriptUrl(
     "searchDay", 
     array("id", "country", "region", "city" , "month", "startDay") 
     );  

$jsUrl->setParameter("id", "month"); 
$jsUrl->setParameter('month', $monthCode); 
$jsUrl->setParameter('country', $countryName); 
$jsUrl->setParameter('region', $regionName); 

Как я могу это исправить?

+1

Прежде всего, вы должны узнать, что ** контекст ** это все о. Затем вам следует научиться использовать ** контекстно-зависимые ** функции. Функции, такие как 'addslashes',' preg_replace' или 'str_replace', чаще всего являются неправильным решением (если вы не придерживаетесь спецификации контекста). Например, в вашем случае вы должны использовать ** json_encode **, поскольку вы бросаете вещи в JS. – Christian

ответ

-1

Вы можете попробовать заменить любой ' в строке с \' для того, чтобы избежать их следующим образом:

$regionName = str_replace("'", "\'", $regionName); 
$jsUrl->setParameter('region', $regionName); 
+0

Отлично! – Brambo76

+0

Я не сделал этого, но я думаю, что это может быть из-за «\» в входе, избегающем вашего побега, поэтому одинарная цитата до сих пор заканчивает вашу строку JS. Новые строки также являются проблемой. –

2

Похоже, работа для addslashes().

string addslashes (string $str) 

Возвращает строку с обратными косыми чертами, прежде чем символы, которые должны быть указана в запросах к базе данных и т.д. Эти символы апостроф ('), двойных кавычек ("), обратный слеш (\) и NUL (байт NULL).

Пример использования addslashes() - это когда вы вводите данные в базу данных . Например, чтобы вставить имя O'reilly в базу данных, вам нужно будет его избежать. Настоятельно рекомендуется использовать СУБД определенную функцию (например, побег mysqli_real_escape_string() для MySQL или pg_escape_string() для PostgreSQL), но если СУБД вы используете не имеет функции бежать и СУБД использует \, чтобы экранировать специальные символов, вам может использовать эту функцию. Это будет только для получения данных в базе данных, дополнительные \ не будут вставлены. Наличие директивы PHP magic_quotes_sybase, установленной на on, будет означать, что вместо этого вместо этого будет использовано с другим '.

+0

Thксы, как я могу добавить это? – Brambo76

Смежные вопросы