2017-01-11 24 views
2

私は様々な入力フィールドを持つ登録フォームを作成しています。 1フィールドが空の場合の検証コードと、フォーム全体が空の場合の検証コードがあります。フォームが空の場合は、登録ページにリダイレクトされます。しかし、もし私が1つの入力フィールドを記入すると、彼はそれを無視するのではなく空のフォームリダイレクトを実行し、次のifステートメントに進みます。phpリダイレクトif文を無視する

あなたは私を助けてくれますか?ここで

はHTMLコードです:

<form class="register form" action="../app/controller/authController.php" method="POST"> 
      <div class="form-group"> 
       <select name="region" id=""> 
        <option value="Americas">Americas</option> 
        <option value="Europe">Europe</option> 
        <option value="Asia">Asia</option> 
       </select> 
      </div> 
      <div class="form-group"> 
       <input type="text" name="first_name" id="" placeholder="First Name"> 
       <?php if(isset($_SESSION['FN_error'])) : ?> 
        <span class="error"><?php echo $_SESSION['FN_error']; ?></span> 
       <?php unset($_SESSION['FN_error']); endif; ?> 
      </div> 
      <div class="form-group"> 
       <input type="text" name="last_name" id="" placeholder="Last Name"> 
       <?php if(isset($_SESSION['LN_error'])) : ?> 
        <span class="error"><?php echo $_SESSION['LN_error']; ?></span> 
       <?php unset($_SESSION['LN_error']); endif; ?> 
      </div> 
      <div class="form-group"> 
       <input type="email" name="email" id="" placeholder="E-mail Address"> 
       <?php if(isset($_SESSION['EA_error'])) : ?> 
        <span class="error"><?php echo $_SESSION['EA_error']; ?></span> 
       <?php unset($_SESSION['EA_error']); endif; ?> 
      </div> 
      <div class="form-group"> 
       <input type="email" name="confirm_email" id="" placeholder="Confirm E-mail Address"> 
       <?php if(isset($_SESSION['Confirm_email_error'])) : ?> 
        <span class="error"><?php echo $_SESSION['Confirm_email_error']; ?></span> 
       <?php unset($_SESSION['Confirm_email_error']); endif; ?> 
      </div> 
      <div class="form-group"> 
       <input type="password" name="password" id="" placeholder="Password"> 
       <?php if(isset($_SESSION['PS_error'])) : ?> 
        <span class="error"><?php echo $_SESSION['PS_error']; ?></span> 
       <?php unset($_SESSION['PS_error']); endif; ?> 
      </div> 
      <div class="form-group"> 
       <input type="password" name="confirm_password" id="" placeholder="Confirm Password"> 
       <?php if(isset($_SESSION['Confirm_pass_error'])) : ?> 
        <span class="error"><?php echo $_SESSION['Confirm_pass_error']; ?></span> 
       <?php unset($_SESSION['Confirm_pass_error']); endif; ?> 
      </div> 
      <div class="form-group"> 
       <input type="text" name="age" id="" placeholder="Age"> 
       <?php if(isset($_SESSION['AGE_error'])) : ?> 
        <span class="error"><?php echo $_SESSION['AGE_error']; ?></span> 
       <?php unset($_SESSION['AGE_error']); endif; ?> 
      </div> 
      <div class="form-group"> 
       <input type="submit" name="type" value="Register" class="register button"> 
      </div> 
     </form> 

そしてここでは、PHPのコードです:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

if ($_POST['type'] == 'Register') { 

    if (trim($_POST['first_name']) == "") { 
     $_SESSION['FN_error'] = "Field cannot be empty!"; 
     $user->redirect('register.php'); 
     exit(); 
    } 

    if (trim($_POST['last_name']) == "") { 
     $_SESSION['LN_error'] = "Field cannot be empty!"; 
     $user->redirect('register.php'); 
     exit(); 
    } 

    if (trim($_POST['email']) == "") { 
     $_SESSION['EA_error'] = "Field cannot be empty!"; 
     $user->redirect('register.php'); 
     exit(); 
    } 

    if (trim($_POST['password']) == "") { 
     $_SESSION['PS_error'] = "Field cannot be empty!"; 
     $user->redirect('register.php'); 
     exit(); 
    } 

    if (trim($_POST['age']) == "") { 
     $_SESSION['AGE_error'] = "Field cannot be empty!"; 
     $user->redirect('register.php'); 
     exit(); 
    } 

    if (trim($_POST['confirm_email']) == "") { 
     $_SESSION['Confirm_email_error'] = "Field cannot be empty!"; 
     $user->redirect('register.php'); 
     exit(); 
    } elseif($_POST['email'] != $_POST['confirm_email']) { 
     $_SESSION['Confirm_email_error'] = "E-mail Address does not match!"; 
     $user->redirect('register.php'); 
     exit(); 
    } 

    if (trim($_POST['confirm_password']) == "") { 
     $_SESSION['Confirm_pass_error'] = "Field cannot be empty!"; 
     $user->redirect('register.php'); 
     exit(); 
    } elseif($_POST['password'] != $_POST['confirm_password']) { 
     $_SESSION['Confirm_pass_error'] = "Password does not match!"; 
     $user->redirect('register.php'); 
     exit(); 
    } 
+0

あなたはセッション を使用することができますhttp://php.net/manual/en/ book.session.php – LowMatic

+0

あなたの質問を理解することは本当に難しいです!あなたが望むのはこれです:すべてのフィールドが空であれば、 'register.php'にリダイレクトしてください。しかし、1つのフィールド(任意のフィールド)のみが空で、他のフィールドがすべて満たされている場合は、続行しますか?あなたは正しいことを理解しましたか? – EhsanT

+0

がほとんどです。すべてのフィールドが空であれば、 'register.php'にリダイレクトします。たとえば、** first_name **フィールドに記入し、** last_name **フィールドに記入しない場合は、** last_name **バリデーションを実行し、エラーメッセージを表示します。 –

答えて

0
<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    $i=0; 
    $names=array('first_name', 'last_name','email','password','age','confirm_email'); 
    foreach($names as $field) { 
     if (empty($_POST[$field])) { 
     $_SESSION[$field.'error'] = "Field cannot be empty!"; 
     $i++; 
     } 
     else 
     { 
      unset($_SESSION[$field.'error']); 
     } 
    } 
    if(sizeof($names)==$i) 
    { 
     $user->redirect('register.php'); 
    } 

} 
?> 
+0

これはまだ動作していません。すべてのフィールドが空であれば、 'register.php'にリダイレクトされますが、1つ以上のフィールドに入力すると、' $ _SESSION [$ field.'error '] = "フィールドは空ではありません! 。 –

+0

フォームタグでaction = ""を試し、セッション変数名を変更します。FN_errorはfirst_nameerror、LN_errorはlast_nameerrorです。セッション変数は上記のPHPスクリプトで動的に生成されるためです。 –

+0

ありがとうございます。今それは働いています:) –

関連する問題