PHP Автоматически выделяет цитаты при использовании функции fwrite ()

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

<?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> "; } ?> 

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

 <?php echo 'test'; ?> 

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

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

Почему php автоматически ускользает от моих котировок?

Это не значит, что он делает это, потому что у вас включен 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'); } ?> 

Это не fwrite , его $ _POST

Этим знаниям вы найдете здесь ответ:

  • Почему переменные $ _POST получают экранирование в PHP?

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

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

У вас есть магические кавычки. Отключите их в файле php.ini ( magic_quotes_gpc=off ) или передайте свой $_POST['code'] через stripslashes .