PHP将变量和字符串写入文本文件

时间:2016-09-01 20:47:43

标签: php

我正在尝试写这样的文件:

<?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>

1 个答案:

答案 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