我正在尝试写这样的文件:
<?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
中改变了什么,它总会给出类似的东西。
感谢您的帮助。
编辑:我做了@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>
答案 0 :(得分:0)
您如何写入文件并没有错。问题很可能与您设置$_POST['user']
的方式有关。在我看来,创建表单的脚本就像:
echo '<input type="hidden" name="user" value="<?php global $user; echo $user; ?>">';
您不能在字符串中间使用<?php ... ?>
来执行PHP代码;
当您在?>
之后输出普通HTML时,会使用这些,以暂时返回到PHP执行模式。因此,您的表单只包含隐藏输入值中的文字字符串?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