проблема с апострофом с постом ajax на php - PullRequest
0 голосов
/ 10 июня 2010

Я отправляю данные с помощью jquery ajax на php, но если вход имеет ', данные не будут опубликованы. Я пытался encodeURIComponent, но не будет работать.

есть идеи по этому поводу?

спасибо

EDIT: мой код

var name = $("input#name_add").val();
         name = encodeURIComponent(name);

$.post("function.php", { name: name }, function(data) {

                               //codes
                });



$query = "UPDATE `table` SET name = '" . stripslashes($_POST['name']) . "' WHERE ID = '$id'";
$result = mysql_query($query);
if ($result){
print "ok";

}

Ответы [ 4 ]

4 голосов
/ 21 января 2011

encodeURIComponent не кодирует апостроф, попробуйте это:

encodeURIComponent(str).replace("'", "%27");
0 голосов
/ 06 декабря 2017

Это то, что решило это для меня.Поскольку функция JavaScript encodeURIComponent () не кодирует апострофы в% 27, я сделал это сам, используя свою собственную функцию replaceAll ().

Фрагмент JS:

name = encodeURIComponent(name.replaceAll("'", '%27'));

Это функция replaceAll () в моих утилитах JS-файл :

String.prototype.replaceAll = function(f, r, no_escape) {
    var rexp = new RegExp(Util.EscapeRegExp(f), 'g');
    if (no_escape) { rexp = new RegExp(f, 'g'); }
    return this.replace(rexp, r);
};

Для моих целей мне нужно, чтобы апостроф больше не был% 27, и код PHP функции urldecode () также не выполняет апострофов, поэтому я позаботился об этом с помощью str_replace ().

Фрагмент PHP :

$name = str_replace('%27', "'", urldecode($_POST['name'] ) );
0 голосов
/ 10 июня 2010

Если magic_quotes_gpc выключено, почему вы удаляете косые черты в своем запросе?

Попробуйте:

$query = "UPDATE `table` SET name = '" . mysql_real_escape_string($_POST['name']) . "' WHERE ID = '$id'";

Если вы используете POST, вам не нужно экранировать данные перед их передачей, а используя полоски в коде для mysql, который вы собираетесьвызвать проблемы с апострофами, так как тогда ваш sql не будет экранирован.

0 голосов
/ 10 июня 2010

Попробуйте проверить настройку магических кавычек на вашем сервере с помощью get_magic_quotes_gpc(). Если он включен, вам нужно strip_slashes() перед использованием mysql_real_escape_string().

Для примера посмотрите документацию get_magic_quotes_gpc () .

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