PHP написать файл с ввода в txt

Я искал вокруг этого сайта для ответа, но не смог найти.

У меня есть форма, и я хотел бы получить содержимое ввода, записанного в txt-файл. Чтобы сделать его простым, я просто написал простую форму и скрипт, но он продолжает получать мне пустую страницу. Вот что я получил

<html> <head> <title></title> </head> <body> <form> <form action="myprocessingscript.php" method="post"> <input name="field1" type="text" /> <input name="field2" type="text" /> <input type="submit" name="submit" value="Save Data"> </form> <a href='data.txt'>Text file</a> </body> 

и вот мой PHP-файл

 <?php $txt = "data.txt"; $fh = fopen($txt, 'w+'); if (isset($_POST['field1']) && isset($_POST['field2'])) { // check if both fields are set $txt=$_POST['field1'].' - '.$_POST['field2']; file_put_contents('data.txt',$txt."\n",FILE_APPEND); // log to data.txt exit(); } fwrite($fh,$txt); // Write information to the file fclose($fh); // Close the file ?> 

Related of "PHP написать файл с ввода в txt"

Ваша форма должна выглядеть так:

 <form action="myprocessingscript.php" method="POST"> <input name="field1" type="text" /> <input name="field2" type="text" /> <input type="submit" name="submit" value="Save Data"> </form> 

и PHP

 <?php if(isset($_POST['field1']) && isset($_POST['field2'])) { $data = $_POST['field1'] . '-' . $_POST['field2'] . "\n"; $ret = file_put_contents('/tmp/mydata.txt', $data, FILE_APPEND | LOCK_EX); if($ret === false) { die('There was an error writing this file'); } else { echo "$ret bytes written to file"; } } else { die('no post data to process'); } 

Я написал в /tmp/mydata.txt потому что теперь я точно там, где он есть. используя data.txt записывает этот файл в текущий рабочий каталог, о котором я ничего не знаю в вашем примере.

file_put_contents открывает, записывает и закрывает файлы для вас. Не вмешивайся в это.

Дальнейшее чтение: file_put_contents

У вас возникли проблемы из-за дополнительной <form> которые у вас есть, что ваши данные идут в методе GET , и вы получаете доступ к данным на PHP с помощью POST .

 <body> <!--<form>--> <form action="myprocessingscript.php" method="POST"> 

Возможное решение:

 <?php $txt = "data.txt"; if (isset($_POST['field1']) && isset($_POST['field2'])) { // check if both fields are set $fh = fopen($txt, 'a'); $txt=$_POST['field1'].' - '.$_POST['field2']; fwrite($fh,$txt); // Write information to the file fclose($fh); // Close the file } ?> 

Вы закрывали скрипт перед закрытием файла.

Если вы используете file_put_contents, вам не нужно делать fopen -> fwrite -> fclose, file_put_contents делает все это для вас. Вы также должны проверить, имеет ли веб-сервер права записи в каталоге, в котором вы пытаетесь написать файл «data.txt».

В зависимости от вашей версии PHP (если она устарела) у вас могут не быть функции file_get / put_contents. Проверьте журнал своего веб-сервера, чтобы увидеть, возникла ли ошибка при выполнении сценария.

используйте fwrite () вместо file_put_contents ()