16

このサイトで答えを探しましたが、見つかりませんでした。

フォームがあり、入力の内容を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
    ?>
4

5 に答える 5

45

フォームは次のようになります。

<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'] . "\r\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

于 2013-02-21T10:06:04.010 に答える
5

あなたが抱えている問題は、あなたが持っている余分な<form>もの、あなたのデータがメソッドに入っていること、そしてあなたがを使用しGETてデータにアクセスしていることです。PHPPOST

<body>
<!--<form>-->
    <form action="myprocessingscript.php" method="POST">
于 2013-02-21T09:47:20.107 に答える
0

考えられる解決策:

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

ファイルを閉じる前にスクリプトを閉じていました。

于 2013-02-21T09:47:32.767 に答える
0

file_put_contentsを使用する場合、fopen-> fwrite-> fcloseを実行する必要はありませんが、file_put_contentsがすべてを実行します。また、「data.txt」ファイルを書き込もうとしているディレクトリで、Webサーバーに書き込み権限があるかどうかを確認する必要があります。

PHPのバージョンによっては(古い場合)、file_get/put_contents関数がない場合があります。Webサーバーのログをチェックして、スクリプトの実行時にエラーが発生したかどうかを確認します。

于 2013-02-21T09:48:25.660 に答える
0

file_put_contents()の代わりにfwrite()を使用する

于 2013-02-21T09:48:38.187 に答える