0

私は Zend の初心者で、シンプルなサインアップ フォームを作成していますが、多くのフィールドがあります。そのため、ユーザーのサインアップ アクションの後に確認ページを作成したいと考えています。

これが私のフローです: サインアップ -> 確認 -> 成功/エラー

個別の確認フォーム ページを用意する主な理由は、データ フィールドが非常に多いため、ユーザーはそれらがすべて正しく入力されていることを確認する必要があるためです。

フォームのサインアップと確認 (フィールドを無効にして) を使用して、サインアップ フォームから確認フォームにデータを渡す方法があるかどうか知りたいですか?

役立つアイデアや提案を歓迎します ;)

public function signupAction()
{
    $users = new Application_Model_Users();
    $form = new Application_Form_RegistrationForm();
    $this->view->form=$form;
    if($this->getRequest()->isPost()){
        if($form->isValid($_POST)){
            $data = $form->getValues();


    //some checks before sending data to confirm page
//not sure how the data can be passed to the confirm page from here
            $this->_redirect('auth/confirmsignup');
        }
    }
}


public function confirmsignupAction()
{
    $users = new Application_Model_Users();
    $form = new Application_Form_ConfirmRegistrationForm();
    $this->view->form=$form;
    if($this->getRequest()->isPost()){
        if($form->isValid($_POST)){
            $data = $form->getValues();
            //some checks before 
            unset($data['confirmPassword']);
            $users->insert($data);
            $this->_redirect('auth/login');
        }
    }
}
4

1 に答える 1

2

リダイレクトすると、次の場合を除き、POST データが失われます。

  1. サインアップでセッションに保存してから、confirmsignupで読み取ります
  2. まったくリダイレ​​クトしません。代わりに、フォーム内の特別なデータの存在を最初に送信チェックした後、それはセッション ID のハッシュなどのランダムなトークンである可能性がありますが、「confirm=1」のように簡単に推測することはできません。トークンが存在しない場合は、このトークンを含む非表示フィールドをフォームに追加し、データを入力して同じアクションでユーザーに再度表示します。これが確認フェーズになります。再度サインアップで POST がある場合は、トークンを受け取り、それが存在することを確認することで、これが確認付きの 2 回目の送信であることがわかり、サインアップを続行できます。これを過度に複雑にしていないことを願っています。
于 2012-03-29T15:07:36.097 に答える