PHP записи переменных и строки в текстовый файл

64
7

Я пытаюсь написать в файл следующим образом:

<?php
date_default_timezone_set('Europe/Budapest');

if(isset($_POST['user'])) {
global $user;
$user = $_POST['user'];
} else {
die("Nincs user beállítva!");
}
if(isset($_POST['pass'])) {
global $pass;
$pass = $_POST['pass'];
} else {
die("Nincs pass beállítva!");
}

if(!isset($_POST['msg'])) {
die("Nincs üzenet!");
} else {
global $msg;
$msg = $_POST['msg'];
}

if(!file_exists("logfile.txt")) {
die("Nem létezik a logfile.txt!");
}
$cont = file_get_contents("logfile.txt");
file_put_contents("logfile.txt","{$user}: {$msg}\n{$cont}"); //<-- Tried this one so many ways
?>

И это дает мне это в txt файле:

<? global $user; echo $user; ?>: test

Независимо от того, что я изменяю в file_put_contents, он всегда дает что-то подобное этому. Спасибо за помощь заранее.

EDIT: Я сделал редактирование, которое предложил @Barmar, но он все еще делает то же самое:

<form name="send" action="chat_send.php" method="post">
<input type="text" name="msg" autocomplete="off" value="">
<?php
global $user;
echo '<input type="hidden" name="user" value="' . $user . '">';
...
</form>

спросил(а) 2021-01-19T21:49:00+03:00 6 месяцев назад
1
Решение
90

Нет ничего плохого в том, как вы пишете файл. Проблема, скорее всего, связана с тем, как вы устанавливаете $_POST['user']. Мне кажется, что скрипт, создавший форму, сделал что-то вроде:

echo '<input type="hidden" name="user" value="<?php global $user; echo $user; ?>">';

Вы не можете использовать <?php...?> В середине строки для выполнения PHP-кода; Это используется, когда вы выводите обычный HTML после ?>, Чтобы временно вернуться в режим выполнения PHP. Таким образом, ваша форма просто содержит литеральную строку ?php global $user; echo $user;?> ?php global $user; echo $user;?> ?php global $user; echo $user;?> в скрытом значении ввода.

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

global $user;
echo '<input type="hidden" name="user" value="' . $user . '">';

Или вы можете сначала вернуться в режим HTML:

?>
<form name="send" action="chat_send.php" method="post">
<input type="text" name="msg" autocomplete="off" value="">
<input type="hidden" name="user" value="<?php global $user; echo $user; ?>">
...
</form>
<?php

ответил(а) 2021-01-19T21:49:00+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема