PHP написать файл с ввода в txt
Я искал этот сайт для ответа, но не смог найти его.
У меня есть форма, и я хотел бы получить содержимое ввода, записанного в txt файл. Чтобы сделать это простым, я просто написал простую форму и script, но он продолжает получать мне пустую страницу. Вот что я получил
<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
?>
Ответы
Ответ 1
Ваша форма должна выглядеть так:
<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
Ответ 2
У вас есть проблемы, связанные с дополнительным <form>
, который у вас есть, что ваши данные идут в методе GET
, и вы получаете доступ к данным в PHP
с помощью POST
.
<body>
<!--<form>-->
<form action="myprocessingscript.php" method="POST">
Ответ 3
Возможное решение:
<?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
}
?>
Вы закрыли script перед закрытием файла.
Ответ 4
Если вы используете file_put_contents, вам не нужно делать fopen → fwrite → fclose, file_put_contents делает все это для вас. Вы также должны проверить, имеет ли веб-сервер права записи в каталоге, в котором вы пытаетесь записать файл "data.txt".
В зависимости от вашей версии PHP (если она устарела) у вас могут не быть функции file_get/put_contents. Проверьте журнал своего веб-сервера, чтобы узнать, возникла ли ошибка при выполнении script.
Ответ 5
используйте fwrite() вместо file_put_contents()