Как мне получить «экранированные» строки из БД? - PullRequest
0 голосов
/ 30 июля 2011

Я делаю это для всех строк перед тем, как вставить их:

mysql_real_escape_string($_POST['position']);

Как мне удалить: \ после их получения?

Так что я не получаю: \ "Пиза \"

Также достаточно ли безопасности или я должен сделать что-то еще?

Спасибо

Ответы [ 4 ]

2 голосов
/ 30 июля 2011

Я бы посоветовал вам вызвать $ _POST ['position'] напрямую (не вызывайте mysql_real_escape_string для него), чтобы получить неэкранированную версию.

Кстати, ваш комментарий о безопасности наводит на мысль о некотором затруднительном пониманиивещи.

Одним из способов обработки строк является обработка экранированных версий, что приводит к одному типу затруднений, в то время как другой - к обработке других строк и экранированию строк непосредственно перед внедрением, что приводит к другому типу затруднений.Я предпочитаю последнее.

1 голос
/ 05 июля 2012

Это может быть потому, что включены магические кавычки, поэтому, чтобы сделать его универсальным, используйте это:

if (get_magic_quotes_gpc()) { // Check if magic quotes are enabled
        $position = stripslashes($_POST['position']);
    } else {
        $position = mysql_real_escape_string($_POST['position']);
}
1 голос
/ 30 июля 2011

используйте stripslashes(), чтобы избавиться от escape-символа.

Побег это здорово. Если значение будет целым, я бы посоветовал вам сделать это следующим образом:

$value = (int) $_POST['some_int_field'];

Это гарантирует, что вы всегда получите целочисленное значение.

0 голосов
/ 30 июля 2011

mysql_real_escape_string () добавляет \ s в ваши строки SQL, но они не должны вносить их в базу данных, поскольку они существуют только для анализа строк.

Если вы видите \ s в вашей базе данных, то что-то еще ускользает от ваших укусов, прежде чем вы вызовете mysql_real_escape_string (). Убедитесь, что magic_quotes_gpc не включен.

...