4

ページが読み込まれるたびに、配列の内容をファイルに書き込む必要があります... index.phpで配列を作成し、別のajaxページの配列に内容をプッシュしました。しかし、アクセスできませんでした。配列はグローバルに..「未定義の変数$arr」としてエラーを表示します。

これが私のコードです。

Index.php page...

<?php
    $arr = array();

    $ourFileName = "saved_data.txt";
    $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
    fwrite($ourFileHandle, "");

?>

Ajaxページ.....

<?php
    $name_full = $_GET['name_full'];
    $arr = $_GET['$arr'];

    array_push($arr,$name_full);
    /*------------To create a file-----------------*/
    $ourFileName = "saved_data.txt";
    $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
    /*---------To save data in the file------------*/
    foreach($arr as $key => $value)
    {
        fwrite($ourFileHandle, $value);
    }
    fwrite($ourFileHandle, ',');
    fclose($ourFileHandle);
    echo $name_full;
?>

この配列をグローバルにするために他に何をすべきか...

4

3 に答える 3

2

ええ、変数は各ページがロードされた後に「期限切れ」になります。リクエスト間で永続化するためにデータが必要な場合は、いくつかのオプションがあります。

  • データをクライアントに渡し(おそらく非表示のフォームフィールドで)、クライアントに再送信してもらいます(GET / POST経由でアクセス可能)。ユーザーがこのデータをクライアント側で操作するのは簡単なので、これは悪いことです
  • 変数を$_SESSIONに格納します。これは、ユーザーのために保持されます。複数のサーバーがある場合、他のサーバーでデータにアクセスできないため、これは悪いことです(クライアントが毎回同じサーバーにアクセスするように、負荷分散を行う場合を除きます)。
  • すべてのサーバーで利用できる「一時的な」ストア(memcache、redis)を使用する
  • すべてのサーバーで利用可能なユーザーの「永続的な」ストア(mySQL、mongo)
于 2012-08-10T04:42:55.757 に答える
2

ajaxページで$arrをとして宣言し、global $arr;これが機能するかどうかを確認しますが、ページが読み込まれるたびに配列がリセットされるため、これが機能しないのではないかと思います。なぜこれにセッションを使用しないのですか?

于 2012-08-10T04:42:44.263 に答える
1

index.phpをajax.phpに含めましたか?index.phpを含めた場合は、「Sabin」が言うように行います。私はあなたが何をしたいのか分かりません。phpファイルを呼び出すたびに、以前のphpファイルとは関係ありません。サイトでグローバルな多様性が必要な場合は、dbを使用する方が良いでしょう。

于 2012-08-10T04:50:36.797 に答える