0

这是正确的,当他们尝试访问它而不进入登录页面时,代码会将人重定向到登录页面

<?php

$pass = 'password';

?>
<html>
<head>
<title></title>
</head>
<body>
<?php 

if ( $_POST["pass"] == $pass){
?>

Congrats you have log in!


<?php 

}else{

header("Location: http://signin.com/");
}
?>
</body>
</html>

我最终遇到了“服务器错误网站在检索http://www.test.com时遇到错误它可能因维护而关闭或配置不正确。”

4

5 回答 5

2

header在你已经输出了一些 HTML 之后就不能再调用了。做你的密码检查和重定向。在 HTML 之上

例如:

<?php 
$pass = 'password';
if ( $_POST["pass"] != $pass){
    header("Location: http://signin.com/");
    exit;
}
?>
<html>
<head>
<title></title>
</head>
....

所以 HTML 只会在它们成功时显示。

于 2012-09-08T01:10:07.280 回答
2

您不能将header()任何输出发送给用户:

<?php
    $pass = 'password';
    if ( $_POST["pass"] == $pass)
    {
        ?>
        <html>
        <head>
        <title></title>
        </head>
        <body>

        Congrats you have log in!

        </body>
        </html>

        <?php 
    }
    else
    {
        header("Location: http://signin.com/");
    }
?>
于 2012-09-08T01:10:31.413 回答
1

把 ob_start(); 在顶部和 o​​b_end_flush(); 这可能会解决它。

于 2012-09-08T01:05:39.880 回答
1

在使用 进行重定向之前,您无法输出 html header。编码之前的所有逻辑:

<?php 
$pass = 'password';

if ($_POST["pass"] == $pass)
{
    $message = "Congrats you have log in!";
}
else
{
    header("Location: http://signin.com/");
}
?>  

<html>
<head>
<title></title>
</head>
<body>
    <?php echo $message; ?>
</body>
于 2012-09-08T01:11:53.753 回答
1

这样的事情会更好:

<?php
$pass = 'password';

if ($_POST["pass"] != $pass){
    header("Location: http://signin.com/");
    exit;
    }
?>

<html>
<head>
<title></title>
</head>
<body>
Congrats you have log in!

</body>
</html>

您需要检查用户是否已登录。如果没有,请重定向并退出。如果是,则显示该消息。

于 2012-09-08T01:12:23.910 回答