phpを使用したファイルへのチェックボックスステータスの書き込みと読み取り

ポーズ

チェックボックスのステータスがtrueかfalse(チェックされている/チェックされていない)かをファイルに保存しようとしています。チェックボックスの値をファイルに書き込むことができましたが、これが正しい方法であるかどうかもわかりません。また、再度ロードする方法もわかりません。ページをリロードして、前回のチェックボックスのステータスを「記憶」にしたいと思います。悲しいことに、ローカルストレージを使用することは私にとって選択肢ではありません。

ここに私のコード:

<form action="database.php" method="post">
<input type="hidden" name="check2" value="0" /> 
<input type="checkbox" name="check2" value="1" /> 

<input type="submit"  value="senden" />
</form>



<?php

$handle = fopen("saver.json", "a");

$fh = fopen( 'saver.json', 'w' );
fclose($fh);  
  
 foreach($_POST as $value) {
  fwrite ($handle, $value);

 }
 
 fclose($handle);

?>

したがって、これは最初に古い保存された値を削除し、次にファイルに1または0を書き込みます。私は良い方向に進んでいますか、それとも単純すぎると思いますか?

すべての助けは非常に高く評価されています!どうもありがとう

tree.gb Chen

このソリューションを試してください。すべてのチェックボックスのステータスは、送信、リロード、さらにはブラウザの再起動後に保持されます。

<?php
// Use SESSION to store checkbox status data. SESSION seems to have a lifetime, that will erase itself if exceed.
// If you need preserve status after browser closed (), you might need to consider storing them into a file.
session_start();

$sessionTgt = NULL;

// You probaby won't need this, but if you have corrupted session
// , use "localhost://my/url/thisScript.php?reset=1" to reset/erase this session key ("saveCheckBox").
if ($_SERVER["REQUEST_METHOD"] === "GET" && isset($_GET["reset"]) && $_GET["reset"] === "1" ) {
    unset($_SESSION["saveCheckBox"]);
    echo("Ok, have just reset \$_SESSION[\"saveCheckBox\"]:");
    exit();
}

// Reset this session key ("saveCheckBox") if it was not set.
if (!isset($_SESSION["saveCheckBox"])) {
    $_SESSION["saveCheckBox"] = [
        // "0" means server tell client no redirect. "1" means redirect immediately.
        "ifRedirect" => "0",
        // Store checkbox checked status. Example data will look like this:
        // [
        //     "ckBox1" => "checked",
        //     "ckBox4" => "checked"
        // ]
        // , it means checkbox "ckBox1" and "ckBox4" are checked, others are not.
        "checkBoxData" => [],
    ];
}

// Passing "reference", not value, to variable $sessionTgt.
$sessionTgt = &$_SESSION["saveCheckBox"];

// Print html form, by some condition. if some of the checkbox have "checked" status
// , then append the string "checked" inside their html <input> tag
// , so the input box will displayed as "checked".
function printFormAndCheckStatus ($checkStatus = NULL) {
    echo(
        '<form action="" method="post">' .
        '<input type="checkbox" name="ckBox1" value="checked" ' . printCheckedMaybe("ckBox1", $checkStatus) . ' />' .
        '<input type="checkbox" name="ckBox2" value="checked" ' . printCheckedMaybe("ckBox2", $checkStatus) . ' />' .
        '<input type="checkbox" name="ckBox3" value="checked" ' . printCheckedMaybe("ckBox3", $checkStatus) . ' />' .
        '<input type="checkbox" name="ckBox4" value="checked" ' . printCheckedMaybe("ckBox4", $checkStatus) . ' />' .

        '<input type="submit"  value="Submit" />' .
        '</form>'
    );
}

function printCheckedMaybe ($nameAttribute, $checkStatus) {
    if (isset($checkStatus[$nameAttribute])) {
        return "checked";
    } else {
        return "";
    }
}

// POST "bouncing" logic. Notice the sequence is like this:
// -> Client get new page (client)
// -> Client user checked checkbox and post (client)
// -> Server save post data to SESSION (server)
// -> Server ask client for redirect (server)
// -> Client redirect immediately without doing anything (client)
// -> Server give back modified form content, that some input box has "checked" string
// appended inside the tag (client).
// The reason using double request instead of one, is to PREVENT POST DATA GET POSTED TWICE, which confuse server.
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $sessionTgt["ifRedirect"] = "1";
    $sessionTgt["checkBoxData"] = [];
    if (isset($_POST)) {
        foreach ($_POST as $name => $value) {
            $sessionTgt["checkBoxData"][$name] = $value;
        }
    }
    header("Refresh:0");
    // When client get this response header pattern/content, client (browser) know he need to
    // refresh the page immediately (request the same url again).
} else {
    if ($sessionTgt["ifRedirect"] !== "1") {
        if (isset($sessionTgt["checkBoxData"])) {
            printFormAndCheckStatus($sessionTgt["checkBoxData"]);
        } else {
            printFormAndCheckStatus();
        }
    } else {
        // Just after redirect.
        $sessionTgt["ifRedirect"] = "0";
        printFormAndCheckStatus($sessionTgt["checkBoxData"]);
    }
}

これで問題は解決しますか?このソリューションは、チェックボックスのステータスをサーバーSESSION内に保存しますが、SESSIONには有効期間があるようで、超過すると自動的に消去されます。(たぶん私は間違っています)。長期保存が必要な場合は、ファイルまたはデータベースに書き込むことができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHPはテキストファイルへのチェックボックスオプションの書き込みと読み取り

分類Dev

ストリームを使用したファイルへの書き込みと読み取り

分類Dev

C ++ fstreamオブジェクトを使用したテキストファイルの読み取りと書き込みの問題

分類Dev

java.util.Scannerを使用してテキストファイルを読み取ろうとしたときの例外java.util.NoSuchElementException +別のマトリックスへのファイルの書き込み

分類Dev

データベースインデックス作成の書き込みと比較した読み取りの数

分類Dev

パラメーターなしでファイルへの書き込みとファイルからの読み取りをテストする

分類Dev

PrintStreamクラスを使用してファイルの読み取りと書き込みを行う方法は?

分類Dev

画像ファイルの読み取り/書き込みを行わずに三角形メッシュにテクスチャを使用する

分類Dev

tfrecordsバイナリファイルの読み取りと書き込み(タイプミスマッチ)

分類Dev

テキストファイルandroidへの読み取りと書き込み

分類Dev

ドロップボックスからSwiftへのtxtファイルの読み込み/読み取り

分類Dev

Cのファイル、ポインターへのアクセス、ファイルの読み取りと書き込み

分類Dev

Python:ネットワークファイルの同時アクセス(読み取り/書き込み)

分類Dev

PHPのテキストファイルへの書き込みと読み取り

分類Dev

クラウドストレージからの大きなファイルの読み取りとデータストアへの書き込み

分類Dev

1つのデータベーステーブルへの読み取りと書き込みのための2つのマイクロサービス

分類Dev

openFileOutputを使用したテキストファイルからの読み取り/書き込み

分類Dev

lseek()なしのLinux / proc / ...ファイルシステムへの書き込みと読み取り

分類Dev

.mdファイルへのPHPテキストボックスの書き込み

分類Dev

カメラから直接ファイルをアップロードし、書き込みまたは読み取りのアクセス許可なしでマルチパートとして送信するにはどうすればよいですか?

分類Dev

リソースを介したJavaファイルの読み取りと書き込み

分類Dev

手動で停止するまでファイルへの読み取り/書き込みをテストするための単純なbashスクリプト?

分類Dev

<<と>>をオーバーロードして、クラスのファイルの書き込みと読み取りに使用する方法

分類Dev

テンプレートファイルの読み取りと、いくつかの変更後のディスクへの書き込み

分類Dev

Django:テキストボックスデータを使用して、そのテキストをファイルに書き込みます

分類Dev

UTF-16LEエンコーディングとApacheCommonsIOを使用したテキストファイルの読み取りと書き込み

分類Dev

ソースファイルを読み取り、追加のID列を使用してSparkscalaの.Csvファイルにデータを書き込みたい

分類Dev

.csv ファイルを読み取り、C# で列のステータスを考慮してチェックボックスを有効または無効にする方法

分類Dev

C#を使用したファイルの読み取り、書き込み、ファイルからの読み取り、ファイルへの書き込み

Related 関連記事

  1. 1

    PHPはテキストファイルへのチェックボックスオプションの書き込みと読み取り

  2. 2

    ストリームを使用したファイルへの書き込みと読み取り

  3. 3

    C ++ fstreamオブジェクトを使用したテキストファイルの読み取りと書き込みの問題

  4. 4

    java.util.Scannerを使用してテキストファイルを読み取ろうとしたときの例外java.util.NoSuchElementException +別のマトリックスへのファイルの書き込み

  5. 5

    データベースインデックス作成の書き込みと比較した読み取りの数

  6. 6

    パラメーターなしでファイルへの書き込みとファイルからの読み取りをテストする

  7. 7

    PrintStreamクラスを使用してファイルの読み取りと書き込みを行う方法は?

  8. 8

    画像ファイルの読み取り/書き込みを行わずに三角形メッシュにテクスチャを使用する

  9. 9

    tfrecordsバイナリファイルの読み取りと書き込み(タイプミスマッチ)

  10. 10

    テキストファイルandroidへの読み取りと書き込み

  11. 11

    ドロップボックスからSwiftへのtxtファイルの読み込み/読み取り

  12. 12

    Cのファイル、ポインターへのアクセス、ファイルの読み取りと書き込み

  13. 13

    Python:ネットワークファイルの同時アクセス(読み取り/書き込み)

  14. 14

    PHPのテキストファイルへの書き込みと読み取り

  15. 15

    クラウドストレージからの大きなファイルの読み取りとデータストアへの書き込み

  16. 16

    1つのデータベーステーブルへの読み取りと書き込みのための2つのマイクロサービス

  17. 17

    openFileOutputを使用したテキストファイルからの読み取り/書き込み

  18. 18

    lseek()なしのLinux / proc / ...ファイルシステムへの書き込みと読み取り

  19. 19

    .mdファイルへのPHPテキストボックスの書き込み

  20. 20

    カメラから直接ファイルをアップロードし、書き込みまたは読み取りのアクセス許可なしでマルチパートとして送信するにはどうすればよいですか?

  21. 21

    リソースを介したJavaファイルの読み取りと書き込み

  22. 22

    手動で停止するまでファイルへの読み取り/書き込みをテストするための単純なbashスクリプト?

  23. 23

    <<と>>をオーバーロードして、クラスのファイルの書き込みと読み取りに使用する方法

  24. 24

    テンプレートファイルの読み取りと、いくつかの変更後のディスクへの書き込み

  25. 25

    Django:テキストボックスデータを使用して、そのテキストをファイルに書き込みます

  26. 26

    UTF-16LEエンコーディングとApacheCommonsIOを使用したテキストファイルの読み取りと書き込み

  27. 27

    ソースファイルを読み取り、追加のID列を使用してSparkscalaの.Csvファイルにデータを書き込みたい

  28. 28

    .csv ファイルを読み取り、C# で列のステータスを考慮してチェックボックスを有効または無効にする方法

  29. 29

    C#を使用したファイルの読み取り、書き込み、ファイルからの読み取り、ファイルへの書き込み

ホットタグ

アーカイブ