Вопрос по php, file – PHP автоматически экранирует кавычки при использовании fwrite ()

1

PHP автоматически экранирует мои кавычки перед записью в файл с помощью fwrite. Я пытаюсь сделать тестовую кодовую страницу. Вот код, который у меня есть:

<code><?php
if ($_GET['test'] == 'true') {
$code = $_POST['code'];
$file = fopen('testcode.inc.php', 'w+');
fwrite($file, $code);
fclose($file);
require_once('testcode.inc.php');
}
else {
echo "
<form method='post' action='testcode.php?test=true'>
<textarea name='code' id='code'></textarea><br><br>
<button type='submit'>Test!</button><br>
</form>
";
}
?>
</code>

Когда я ввожу в форму следующее:

<code><?php
echo 'test';
?>
</code>

Он сохраняется в файле как:

<code><?php
echo \'test\';
?>
</code>

Почему php автоматически экранирует мои цитаты?

google gor & quot; magic_quotes & quot; zerkms

Ваш Ответ

4   ответа
0

php.ini файл (magic_quotes_gpc=off) или передать свой$_POST['code'] черезstripslashes.

1

magic_quotes включен.

Если вы не можете отключить магические кавычки в своем файле php.ini, то вы можете отключить его во время выполнения, простой кусочек PHP перебирает ВСЕ ваши входные массивы и удаляет ненужные слэши, тогда вам не нужно беспокоиться о том, какой POST / GET ключи для раздевания.Отключение магических кавычек

<?php
if (get_magic_quotes_gpc()) {
    function stripslashes_gpc(&$value)
    {
        $value = stripslashes($value);
    }
    array_walk_recursive($_GET, 'stripslashes_gpc');
    array_walk_recursive($_POST, 'stripslashes_gpc');
    array_walk_recursive($_COOKIE, 'stripslashes_gpc');
    array_walk_recursive($_REQUEST, 'stripslashes_gpc');
}
?>
2

fwrite, его$_POST

С этими знаниями, пожалуйста, найдите ответ здесь:

Why are $_POST variables getting escaped in PHP?

Итак, что вам нужно сделать, это просто небольшое исправление:

if (get_magic_quotes_gpc()) {
  $code = stripslashes($_POST['code']);
}else{
  $code = $_POST['code'];
}

Похожие вопросы