2013-01-23 116 views
0

我有一個表單提交給intself。如果發佈變量已設置,那麼我希望它們被重定向到employee_profile.php。目前,即使設置了post變量,標題位置也不起作用。有任何想法嗎?php表單驗證和標題位置

<?php 
    $email_error = $password_error = ""; 
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     if (empty($_POST["email"])) { 
      $email_error = "Missing Email"; 
     } else { 
      $email = $_POST["email"]; 
     } 

     if (empty($_POST["password"])) { 
      $password_error = "Missing Password"; 
     } else {   
      $email = $_POST["email"]; 
      $password = $_POST["password"]; 
      header ('Location: employee_profile.php'); 
     } 
    } 
?> 

形式:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST"> 
    Email: <input type="text" name="email" value="<?php echo htmlspecialchars($email);?>"> 
    <span class="error"><?php echo $email_error;?></span><br /> 
    Password: <input type="password" name="password"> 
    <span class="error"><?php echo $password_error;?></span><br /> 
    <input type="submit" value="Submit"> 
</form> 
+0

你可以顯示與表單相對應的代碼嗎? – koopajah

+1

嗯。這個php代碼的文本文件是如何存儲的?取決於你的文本編輯器,但是如果它保存帶有可能影響'header'輸出的BOM(字節順序標記)的文件。同上LF設置(Windows,Unix或Mac)。 – JakeGould

+0

」method =「POST」> Email:「><?php echo $ email_error;?>
Password:< ?跨度類= 「錯誤」>
user1315367

回答

1

PHP的頭(使用HTTP/1.1)重定向需要絕對URL。

嘗試以下操作:

<?php 

// from PHP documentation, see http://php.net/manual/de/function.header.php 
$host = $_SERVER['HTTP_HOST']; 
// or: 
// $host = $_SERVER['SERVER_NAME']; 

$email_error = $password_error = ""; 

if($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(empty($_POST["email"])) { 
     $email_error = "Missing Email"; 
    } else { 
     $email = $_POST["email"]; 
    } 

    if(empty($_POST["password"])) { 
     $password_error = "Missing Password"; 
    } else {   
     $password = $_POST["password"]; 
    } 

    // some additional fixes: finally check if both is valid 
    if($email_error == $password_error) { 
     header("Location: http://$host/employee_profile.php"); 
    } 
} 

?> 
0

你可以嘗試一些像這樣的事情。目前在您的腳本中,即使未設置電子郵件但設置了密碼,也會調用標頭功能。

$email = (isset($_POST['email']) && !empty($_POST['email'])) ? $_POST['email'] : "Missing Email"; 
$password = (isset($_POST['password']) && !empty($_POST['password'])) ? $_POST['password'] : "Missing Password"; 

if($email != "Missing Email" && $password != "Missing Password"){ 
    header ('Location: employee_profile.php'); 
} 

(警告:這裏的電子郵件和密碼傳遞的任何值會得到用戶employee_profile)

也看到,如果你要打印一些東西或致電頭之前有些HTMLS。

它是否會拋出任何錯誤,如果是的話,您還可以在這裏打印錯誤?