2013-01-23 5 views
0

나는 폼을 제출하고 있습니다. 게시물 변수가 설정된 경우 employee_profile.php으로 리디렉션해야합니다. 현재 게시물 변수가 설정된 경우에도 헤더 위치가 작동하지 않습니다. 어떤 아이디어?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 코드는 어떻게 저장됩니까? 텍스트 편집기에 의존하지만 BOM (바이트 순서 표시)을 사용하여 파일을 저장하면 '헤더'출력에 영향을 줄 수 있습니다. LF 설정 (Windows, Unix 또는 Mac)이있는 Ditto. – JakeGould

+0


비밀번호 : ? 스팬 클래스 = "오류">
<입력 유형 = 게시하지 않습니다>
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를 인쇄하는 경우

도 참조하십시오.

오류가 발생하면 여기에 오류를 인쇄 할 수 있습니까?