Php 登录时页面重定向
下面的脚本工作正常,它允许用户登录 在他们登录后,这行代码要求他们单击链接以转到members.php页面Php 登录时页面重定向,php,Php,下面的脚本工作正常,它允许用户登录 在他们登录后,这行代码要求他们单击链接以转到members.php页面 die("You are now logged in. Please <a href='members.php'>" ."click here</a> to continue.<br /><br />"); die(“您现在已登录。请继续。”; 有没有办法让页面在他们登录后自动重定向到members.php <?php // log
die("You are now logged in. Please <a href='members.php'>" ."click here</a> to continue.<br /><br />");
die(“您现在已登录。请继续。
”;
有没有办法让页面在他们登录后自动重定向到members.php
<?php // login.php
include_once 'header.php';
echo "<div class='main'><h3>Please enter your details to log in</h3>";
$error = $user = $pass = "";
if (isset($_POST['user']))
{
$user = sanitizeString($_POST['user']);
$pass = sanitizeString($_POST['pass']);
$pass_hash = md5($pass);
if ($user == "" || $pass == "")
{
$error = "Not all fields were entered<br />";
}
else
{
$query = "SELECT user,pass FROM members
WHERE user='$user' AND pass='$pass_hash'";
if (mysql_num_rows(queryMysql($query)) == 0)
{
$error = "<span class='error'>Username/Password
invalid</span><br /><br />";
}
else
{
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
die("You are now logged in. Please <a href='members.php'>" . "click here</a> to continue.<br /><br />");
}
}
}
echo <<<_END
<form method='post' action='login.php'>$error
<span class='fieldname'>Username</span><input type='text'
maxlength='16' name='user' value='$user' /><br />
<span class='fieldname'>Password</span><input type='password'
maxlength='16' name='pass' value='$pass' />
_END;
?>
<br />
<span class='fieldname'> </span>
<input type='submit' value='Login' />
</form><br /></div></body></html>
是的,有:
header('Location: members.php');
exit;
请记住包括退出
,这样即使在处理标头时出现问题,代码也会停止运行
另外请注意,这需要在进行任何输出之前进行
顺便说一句,我没有检查过你的任何代码,除了我在上面提到的,在你有die()行的地方,你可以这样做
ob_clean();
header('Location: http://www.example.com');
exit;
如果标题给您带来困难,您可以使用以下替代(元)方法: 如果您目前有
die(“您现在已登录…
do:
echo "You are not logged in. You will be redirected in 5 seconds...";
echo "<meta http-equiv=Refresh content=5;url=http://www.yoursite.com/members.php>";
有几种方法可以做到这一点。其中一种可能会给您带来麻烦,因为您正在使用会话,并且输出的内容超出了它应该到达的位置。
ob\u clean
?此外,您的代码将无法运行。您缺少一个撇号。我在尝试使用该代码时遇到此错误:警告:无法修改标头信息-标头已由发送(输出开始于/home/as1609/public_html/mysite/header.php:3)在/home/as1609/public_html/mysite/login.php的第32行,当我尝试使用该代码时,我发现这个错误:警告:无法修改头信息-头已经由发送(输出开始于/home/as1609/public_html/mysite/header.php:3)正如我指出的,在第32行的/home/as1609/public_html/mysite/login.php中,在发送此头文件之前,您需要确保没有其他输出,甚至连“空格”都没有"。您需要将第3行上的echo
移到其他地方开始。@Fred ii-您认为代码是正确的吗?如果是,您需要调试。虽然这里不是为了完全保护和简化OP的代码,但给出的答案应该向他们指出正确的解决方案,并提供相关信息来支持。如果有什么问题,您想说什么删除此行:echo“请输入您的详细信息以登录”但我仍然得到了错误。我不确定是否需要删除其他内容以避免错误。@Fred ii-是的,当然,分数最终毫无意义-一个毫无价值的“虚拟”奖励。我积极使用汇编程序编程,因为我非常喜欢它的功能和速度。对我来说,任何使用逻辑的东西都是好的。我还坚持这样的观点,在我拥有的少数人中众所周知,加拿大人是世界上最善良的人之一。你也不例外。干杯。不过不要再劫持这个帖子了。。。
echo "You are not logged in. You will be redirected in 5 seconds...";
echo "<meta http-equiv=Refresh content=5;url=http://www.yoursite.com/members.php>";
<?php
ob_start();
// login.php
include_once 'header.php';
echo "<div class='main'><h3>Please enter your details to log in</h3>";
$error = $user = $pass = "";
...
$_SESSION['user'] = $user;
$_SESSION['pass'] = $pass;
// die("You are now logged in....
// keep the http:// and replace with your website address
header('Location: http://www.example.com/members.php');
exit;
...