0

フォーム検証後のリダイレクトに問題があります。検証後、異なるビューに3つの異なるフォームがあります。フォームの送信に失敗した場合は、前のログインページにリダイレクトします。正常に動作していますが、フォームを送信した後、URLをクリックしてEnterキーを押してください。私がホームページにいるとき、それは連絡先にリダイレクトします。彼が送信した前のログインページにリダイレクトしたい。事前のおかげで、これは正しいやり方ではないと思います

myform1.php My Form1

<?php echo validation_errors(); ?>

<?php echo form_open('con/validate_form'); ?>

<h5>Username</h5>
<input type="text" name="username" value="" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="" size="50" />

<h5>Password Confirm</h5>
<input type="text" name="passconf" value="" size="50" />

<h5>Email Address</h5>
<input type="text" name="email" value="" size="50" />

<div><input type="submit" name='submit1' value="Submit1" /></div>

</form>

</body>
</html>

myform2.php

<html>
<head>
<title>My Form</title>
</head>
<body>

<?php echo validation_errors(); ?>

<?php echo form_open('con/validate_form'); ?>

<h5>Username</h5>
<input type="text" name="username" value="" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="" size="50" />

<h5>Password Confirm</h5>
<input type="text" name="passconf" value="" size="50" />

<h5>Email Address</h5>
<input type="text" name="email"  value="" size="50" />

<div><input type="submit" name-'submit2' value="Submit2" /></div>

</form>

</body>
</html>

myform3.php

<html>
<head>
<title>My Form3</title>
</head>
<body>

<?php echo validation_errors(); ?>

<?php echo form_open('con/valdate_form'); ?>

<h5>Username</h5>
<input type="text" name="username" value="" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="" size="50" />

<h5>Password Confirm</h5>
<input type="text" name="passconf" value="" size="50" />

<h5>Email Address</h5>
<input type="text" name="email" value="" size="50" />

<div><input type="submit" name="submit3" value="Submit3" /></div>

</form>

</body>
</html>

これはコントローラーページです

   public function validate_form(){
                $this->load->library('form_validation');
                $this->form_validation->set_rules('firstname', 'First name', 'required');
if ($this->form_validation->run() == FALSE){
 ($this->input->post('submit1')=='submit1') ?  $this->load->view('myform1') 
: ($this->input->post('submit2')=='submit2') ?  $this->load->view('myform2') 
: $this->load->view('myform3'); 
}
else
{
$this->register();
}
}

コントローラー詐欺

    public function myform1(){
        $this->load->view('myform1');
    }

    public function myform2()   {
        $this->load->view('myform2');
    }

    public function myfrom3()   {
        $this->load->view('myform3');
    }
4

2 に答える 2

0

私がしているのは、さまざまな種類のフォームエラー用のエラーフォルダーを作成することです..... form_validationエラーの場合、特定のエラーページにリダイレクトします...それは私にとってはうまくいきます...

また、複数のフォームビューに同じコントローラーを使用しようとしている可能性があると感じています...それは問題を引き起こします.....

連絡先とログインフォームの両方に同じリダイレクトコントローラーcon/myform1があると思います....チェックしてください......

それが役立つことを願って....

于 2013-03-03T05:58:02.473 に答える
0

なぜ同じフォームが 3 つあるのかわかりませんが、わかりました。これは、先に進むための方法になる可能性があります (コードの繰り返しを避けるために、同じ検証方法を使用します)。

続行するにはさまざまな方法があります。

1) 現在の場所で非表示の入力を使用します。

myform1.php

<?php echo validation_errors(); ?>

<?php echo form_open('con/validate_form'); ?>

<h5>Username</h5>
<input type="text" name="username" value="" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="" size="50" />

<h5>Password Confirm</h5>
<input type="text" name="passconf" value="" size="50" />

<h5>Email Address</h5>
<input type="text" name="email" value="" size="50" />

<input type="hidden" name="redirect_to" value="<?php echo current_url(); ?>" />
<div><input type="submit" name='submit1' value="Submit1" /></div>

</form>

</body>
</html>

コントローラ > validate_form() メソッド:

public function validate_form()
{
    $this->load->library('form_validation');
    $this->form_validation->set_rules('firstname', 'First name', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $redirect_to = $this->input->post('redirect_to');
        redirect($redirect_to);
    }
    else
    {
        $this->register();
    }
}

しかし、redirect()メソッドを使用するとフォームを簡単に再入力できないため、これは完璧ではありません。

2) これが、一般的に a を使用しない理由validate_form()です。

フォームを投稿して検証し、検証に失敗した場合は検証エラーでフォームを再度表示するか、検証に合格した場合は register メソッドを呼び出します。

これを行う最善の方法は、フォームをそれ自体にポストすることです。このようにして、メソッドで、フォームが送信されたかどうかを確認し、何をすべきかを判断できます。

public function myform1()
{
    $this->load->library('form_validation');

    $this->form_validation->set_rules('username', 'Username', 'required');
    $this->form_validation->set_rules('password', 'Password', 'required');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('myform');
    }
    else
    {
        $this->register();
    }
}

景色:

<html>
<head>
<title>My Form 1</title>
</head>
<body>

<?php echo validation_errors(); ?>

<?php echo form_open('con/myform1'); ?>

<h5>Username</h5>
<input type="text" name="username" value="" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="" size="50" />

<h5>Password Confirm</h5>
<input type="text" name="passconf" value="" size="50" />

<h5>Email Address</h5>
<input type="text" name="email"  value="" size="50" />

<div><input type="submit" name-'submit' /></div>

</form>

</body>
</html>
于 2013-03-03T01:34:05.493 に答える