2016-09-01 39 views
1

我试图写入文件是这样的: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> 
+0

我没有在你的代码中看到的一个问题。我认为'$ _POST ['user']'的值是''<?全球$用户; echo $ user; ?>''。我怀疑问题在于如何更早地创建表单。 – Barmar

+0

我的猜测是你写了类似于'echo'的东西”>''。你不能在字符串中使用'<?php'。 – Barmar

+0

你是否为该文件写入权限? http://stackoverflow.com/a/7551155/2191252可能会帮助 – Shridhar

回答

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 
+0

我按照你的建议编辑了窗体,并回显了隐藏的输入,但它仍然执行相同的操作。 – paksyh15

+0

很难说出你在评论中做什么。将其添加到问题中。 – Barmar

+0

我将它添加到问题中。 – paksyh15