0

私は現在、CodeIgniterを使用するWebアプリに取り組んでいます。具体的には、サインアップフォームを作成しています。

このフォームは3つの異なるステップで構成されていますが、2つのステップ間で情報を保存するには、どのような方法が最適か疑問に思っています。最後のスタップが完了したら、すべての情報をデータベースに保存したいだけです。

これを行うには、ネイティブPHPセッションを使用する必要がありますか?または、CI flashdataを使用する必要がありますか?

4

3 に答える 3

1

非表示のフィールドとセッションを使用しました。各段階の最後に、すべてのフォーム値をテキスト ファイルに保存する傾向があります。その後、特定の段階で何かが発生した場合に、テキスト ファイルに保存されたデータをどうするかを選択できます。

たとえば、最初のページで電子メール アドレスを取得したい場合。フォームが完成しない場合 (すべての段階が正常に完了したため)、該当する段階のサインアップ フォームへのリンクを記載した電子メールを見込みユーザーに送信できます。見込みユーザーは、入力したフィールドを再入力する必要がなく、ユーザーとして再獲得する機会が得られます。

私は、マルチステージ フォームの任意のステージからすべてのデータを保存するデフォルトの方法としてテキスト ファイルを使用する傾向があります。フォームの最後で、データを DB に処理し、テキスト ファイルを削除できます。部分的に完了したサインアップをキャッチするために、毎分実行される cronjob を介して実行されるスクリプトを作成できます。ファイルが最後に更新された時刻を表すタイムスタンプを常にデータ ファイルに保存します。タイムスタンプが X 分以上経過している場合は、未完了のサインアップ スクリプトを実行するか、単に削除します。

各段階でのデータの保存は簡単です。最初の段階の後、where でを作成$dataFileします。最初に使用した後の各段階、および. 次に、file_put_contents を使用してファイルに保存します。明らかに、$dataFile 変数を追跡する必要がありますが、これは隠しフィールドまたはセッション データを介して簡単に実行できます。$dataFile = file_put_contents(json_encode($data));$data = array('timestamp'=>...) + $_POST;$data = json_decode(file_get_contents($dataFile), TRUE) + $_POST;$data['timestamp'] = ...;

ファイルは、処理および削除されるまで X 分間しか存在しませんが、その短い時間内にテキスト ファイルのセキュリティを確保したい場合は、暗号を調べるか、単純な Ceasar の暗号に独自のバリエーションを作成することをお勧めします。 . フィールド名と値に暗号を使用します。

12 月には、最新の CodeIgniter でマルチステージ フォームの問題に取り組んでいました。これが一般的に受け入れられているベスト プラクティスであるとは言えませんが、テキスト ファイルは以前はうまく機能していました。マルチステージ フォームのサンプル コードをここに投稿しました: Multi-Stage Form Example

于 2013-01-14T04:48:35.680 に答える
0

値を次のフォームに投稿して、非表示フィールドを使用してこれらの値を保存できるため、最後のフォームを投稿したときにすべての値があり、一度に処理できます。

于 2013-01-14T04:19:16.687 に答える
0

私は最新のプロジェクトでこのケースに直面し、Codeigniter のセッションを使用して、データを DB に送信する最後のステップで配列として userdata セッションで検証後に送信されたデータを保存しました

于 2016-03-06T07:41:44.037 に答える