2016-11-05 34 views
0

私は、検証が成功したときにリダイレクトするためにPHPヘッダを使用することを考えました。しかし、それは私に壊れているようです。それで私はどのように実装するのですか?条件は、すべての検証が検証された後、リダイレクトされる場合のみです。検証後の成功ページへのリダイレクト

<?php 
     // define variables and set to empty values 
     $nameErr = $lastnameErr = $emailErr = $passwordErr = $confirmpasswordErr = $checkboxErr= ""; 
     $name = $lastname = $email = $password = $confirmpassword = $checkbox = ""; 

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

      if (empty($_POST["firstname"])) { 
       $nameErr = "First Name is required"; 
      }else { 
       $name = test_input($_POST["firstname"]); 
      } 

       if (empty($_POST["lastname"])) { 
       $lastnameErr = "Last Name is required"; 
      }else { 
       $name = test_input($_POST["lastname"]); 
      } 

      if (empty($_POST["email"])) { 
       $emailErr = "Email is required"; 
      }else { 
       $email = test_input($_POST["email"]); 

       // check if e-mail address is well-formed 
       if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
        $emailErr = "Invalid email format"; 
       } 
      } 


      if(!empty($_POST["password"]) && ($_POST["password"] == $_POST["confirmpassword"])) { 
       $password = test_input($_POST["password"]); 
       $confirmpassword = test_input($_POST["confirmpassword"]); 
       if (strlen($_POST["password"]) <= '8') { 
        $passwordErr = "Your Password Must Contain At Least 8 Characters!"; 
       } 
       elseif(!preg_match("#[0-9]+#",$password)) { 
        $passwordErr = "Your Password Must Contain At Least 1 Number!"; 
       } 
       elseif(!preg_match("#[A-Z]+#",$password)) { 
        $passwordErr = "Your Password Must Contain At Least 1 Capital Letter!"; 
       } 
       elseif(!preg_match("#[a-z]+#",$password)) { 
        $passwordErr = "Your Password Must Contain At Least 1 Lowercase Letter!"; 
       } 
      } 
      elseif(empty($_POST["password"])) { 
       $passwordErr = "Password not filled at all"; 
      } 

      elseif(!empty($_POST["password"])) { 
       $confirmpasswordErr = "Password do not match"; 
      } 

     if(!isset($_POST['checkbox'])){ 
     $checkboxErr = "Please check the checkbox"; 
     } 
     else { 
       $checkbox = test_input($_POST["checkbox"]); 

      } 









     } 



     function test_input($data) { 
      $data = trim($data); 
      $data = stripslashes($data); 
      $data = htmlspecialchars($data); 
      return $data; 
     } 
     ?> 

    header('Location: http://www.example.com/'); 
+1

PHPがヘッダーの前に閉じる理由 – shubham715

+0

これは単なる例です。私はあなたがPHPタグの前に置く必要があることを知っている – Joal

答えて

0

セット$エラー= 1任意の条件が失敗した得れば、下のチェックであれば($エラー!= 1)、その後 をリダイレクトし、ヘッダが

-1
    に動作しない場合は、また、javascriptを使用してリダイレクトすることができます
  1. 閉じる "?>" - タブを見てください。ヘッダーはhtmlヘッダーを生成しますが、php関数であり、?php?>括弧内になければなりません。

  2. HTML5の入力検証を使用することを検討してください - は「?>」完全にブラウザが検証

  3. に省略閉鎖をやらせるためにいくつかのコードとサーバーのラウンドトリップを保存します。

  4. filter_input関数を使用して$ _POSTにアクセスし、変数を設定することを検討してください。

関連する問題