2016-09-01 2 views
1

Ich versuche, wie diese Datei zu schreiben:PHP Schreiben von Variablen und String in Textdatei

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

Und es gibt mir dies in der txt-Datei:

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

Egal, was ich Wechsel in der file_put_contents, es gibt immer etwas ähnliches dazu. Danke für die Hilfe im Voraus.

EDIT: Ich habe die Bearbeitung dass @Barmar vorgeschlagen, aber es ist immer noch das gleiche tun:

<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

Ich habe kein Problem in Ihrem Code. Ich denke, der Wert von '$ _POST ['user']' ist '' ''. Ich vermute, dass das Problem darin besteht, wie Sie das Formular früher erstellt haben. – Barmar

+0

Meine Vermutung ist, dass du etwas wie 'echo' geschrieben hast ''. Sie können ' Barmar

+0

Schreibst du die Erlaubnis für diese Datei? http://stackoverflow.com/a/7551155/2191252 kann helfen – Shridhar

Antwort

0

Es ist nichts falsch mit, wie Sie auf die Datei gerade schreiben. Das Problem liegt wahrscheinlich darin, wie Sie $_POST['user'] einstellen. Es scheint mir, wie das Skript, das die Form tat so etwas wie geschaffen:

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

Sie nicht <?php ... ?> in der Mitte einer Zeichenfolge verwenden können PHP-Code auszuführen; Dies wird verwendet, wenn Sie normales HTML nach ?> ausgeben, um vorübergehend in den PHP-Ausführungsmodus zurückzukehren. Ihr Formular enthält also nur die literale Zeichenfolge ?php global $user; echo $user; ?> im versteckten Eingabewert.

In einer Zeichenkette verwenden Sie Verkettung, soll es so sein sollte:

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

Sie können auch zuerst den HTML-Modus zurück:

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

Ich habe das Formular so bearbeitet, wie Sie es vorgeschlagen haben, mit dem Echo des verborgenen Eingangs, aber es macht immer noch dasselbe. – paksyh15

+0

Es ist schwer zu sagen, was Sie in einem Kommentar tun. Fügen Sie es der Frage hinzu. – Barmar

+0

Ich habe es zu der Frage hinzugefügt. – paksyh15

Verwandte Themen