Подтвердить что ты не робот

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

Ответ 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()