Запись кода PHP в переменную в файл

1

Я пытаюсь поместить PHP-код в переменную php, а затем записать его в файл. Но это не работает. Поскольку он содержит вкладки,] [? пространство, новая линия и т.д. Я пытался использовать EOD, не работал.

Вот мой код:

<?php
ini_set('display_errors',1);  
error_reporting(E_ALL);
$content02 = "\n";
$content01 = <<<EOD
<?php session_start();

if(!isset($_SESSION["UserData"]["Username"])){
   header("location:login.php");
   exit;
   }
?>
EOD;
$content03='<!DOCTYPE html><html><head><title>Spambox</title></head><body><html dir="rtl"></html><form action="flushsink.php" method="get"><input type="submit" value="Flush!"></form>';
$content4 = $content01.$content02.$content03;
function writeUTF8File($filename,$content) {
    $f=fopen($filename,"w");
    fwrite($f,$content);
    fclose($f);
}
writeUTF8File("spams.php",$content4);
header('Location: http://targeturl.com/int/spams.php');
?>

Таким образом, в основном я очищаю файл spams.php новым PHP-кодом. Но я не могу правильно записать PHP-код в файл.

Если изменить строку 5 на:

$content01 = '<?php session_start(); if(!isset($_SESSION["UserData"]["Username"])){ header("location:login.php");   exit;}?>';

Приложение будет писать в spams.php, но перенаправление (header()) больше не работает.

Любая идея поместить несколько значений строк, содержащих PHP-код, в переменную?

Теги:
variables

2 ответа

1
Лучший ответ

Вы можете попытаться создать массив строк, так что вы можете просто взорвать массив. Таким образом, вы можете добиться лучшего форматированного кода. Я просто сделал это, например, с вашим PHP, вы также можете сделать это с помощью своего HTML.

Кстати, я изменил путь вашего header("Location:....spams.php"); для моего теста, просто измените его и попробуйте код ниже:

$content = array();
$content[] = '<?php';
$content[] = 'session_start();';
$content[] = 'if( !isset( $_SESSION["UserData"]["Username"] ) ) {';
$content[] = '  header("Location: login.php");';
$content[] = '  exit;';
$content[] = '}';
$content[] = '?>';
// for better readability you can also split the html below, like I did with the PHP above
$content[] = '<!DOCTYPE html><html><head><title>IrNut Spambox</title></head><body><html dir="rtl"></html><form action="flushsink.php" method="get"><input type="submit" value="Flush!"></form>';

// implode array to string, glue will be a \n
$content = implode( "\n", $content );

function writeUTF8File($filename,$content) {
    $f=fopen($filename,"w");
    fwrite($f,$content);
    fclose($f);
}
writeUTF8File( "spams.php", $content) ;
header('Location: spams.php');// just changed the path to fit my test

Spams.php будет выглядеть так:

<?php
session_start();
if( !isset( $_SESSION["UserData"]["Username"] ) ) {
    header("Location: login.php");
    exit;
}
?>
<!DOCTYPE html><html><head><title>IrNut Spa.......
  • 0
    Супер, работал с массивом ;-)
  • 0
    Рад, что смог помочь :)
0

Это работает?

$content01 =
    "<?php \n" .
    "session_start(); \n" .
    "if (!isset($_SESSION['UserData']['Username'])) \n" .
    "{ \n" .
    "header('location:login.php'); \n" .
    "exit; \n" .
    "}?> \n"
    ;
  • 0
    Нет. Проверка синтаксиса PHP: ошибка синтаксического анализа: синтаксическая ошибка, неожиданное '' (T_ENCAPSED_AND_WHITESPACE), ожидаемый идентификатор (T_STRING) или переменная (T_VARIABLE) или номер (T_NUM_STRING) в вашем коде в строке 8 "if (! Isset ($ _ SESSION ['UserData' ' ] ['Имя пользователя'])) \ n ". Проверка синтаксиса PHP: ошибки синтаксического анализа вашего кода
  • 0
    Если вы заново наберете апострофы, это сработает? (Копирование и вставка апострофов может быть проблемой.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню