0

自分自身に送信するフォームがあります。投稿変数が設定されている場合は、それらをemployee_profile.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>
4

2 に答える 2

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");
    }
} 

?>
于 2013-01-23T16:12:04.677 に答える
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 に取得します)

ヘッダーを呼び出す前に、何かまたはいくつかのhtmlを印刷しているかどうかも確認してください。

エラーがスローされている場合は、ここにエラーを出力できますか?

于 2013-01-23T16:37:13.370 に答える