我送登录状态=失败,回到我的登录page.Here是我的代码 -传值到另一个PHP
header("location:index.php?login=fail");
但通过URL喜欢 -
http://localhost/303/index.php?login=fail
发送
有什么方法可以在不显示URL的情况下传递值?以及如何在第二页上获得这个值?
我送登录状态=失败,回到我的登录page.Here是我的代码 -传值到另一个PHP
header("location:index.php?login=fail");
但通过URL喜欢 -
http://localhost/303/index.php?login=fail
发送
有什么方法可以在不显示URL的情况下传递值?以及如何在第二页上获得这个值?
您通过GET请求,这就是为什么它会出现在URL传递该值。为了传递一个值而不在URL中显示它,你想通过一个POST请求来传递它。
为了做到这一点,您不希望将该值“返回”到您的登录页面。相反,无论php表单在点击“登录”按钮后处理登录用户的过程,都将决定显示用户的内容。
<form method="post" action="checkLogin.php">
Username:
<input type="text" name="username" maxlength="25" />
Password:
</td><td><input type="password" name="password" />
<input type="submit" name="submit" value="Login">
</form>
为了:
$_POST['username'];
将获得与您通过POST传递的名称为“用户名”的价值 -
在PHP后的变量可以通过全局$ _ POST对象来访问动态保存并向用户显示错误,可以将它们存储在会话中,例如有一个名为“errors.php”的文件。
<?php
if (isset($_SESSION['errors']))
{
echo $_SESSION['errors'];
}
unset($_SESSION['errors'])
?>
而在你的PHP检查登录,这样做:
session_start();
$_SESSION['errors'] = "Invalid username or password.";
然后重定向到登录页面(不传递任何变量)和你的表格上总是有这一领域:
<?php include("errors.php"); ?>
如果您没有任何错误,则不会显示任何内容,并且登录页面看起来很正常。
注意:在任何使用session_start()的php表单中,它都是第一件事。
他要求重定向 – 2010-05-14 12:47:59
但是在标题( - )中我怎样才能指定method =“Post”? – nectar 2010-05-14 12:54:32
你不会在标题中指定任何东西 - 如果你将它们重定向回登录页面或“索引”或其他东西 - 在该页面上有<?php include(“errors.php”)?>。然后,无论您存储在会话中的任何错误都会显示在那里。会话中的值存储在服务器上,您不需要传递它们。 – 2010-05-14 12:55:59
其他方法是使用会话或隐藏字段但你你在做什么是很好的目的。您可以在以后检索这样的值:
if ($_GET['login'] === 'fail')
{
// failed.......
}
有几种方法来完成你的任务
不知道你是否会依赖于可变知道,如果用户成功loged或没有,但请记住,你永远不应该依赖无论是$ _GET还是$ _POST变量,因为它们都可以被用户操纵。使用$ _SESSION来存储那种信息 – 2010-05-14 13:06:39
@Gonçalo什么样的信息?简单的错误信息?你在开玩笑 – 2010-05-14 13:15:46
@Shrapnel不,不是简单的错误信息。您用来了解登录是否成功的信息。我不知道Piyush是否想隐藏登录变量,所以用户不能将登录名更改为true,并绕过一些“if”...我只是建议他,让一个var POST赢得' t使用户难以改变它 – 2010-05-14 21:49:47