在PHP中将值从页面传递到另一个

时间:2010-05-14 12:40:43

标签: php

我发送登录状态=失败,返回我的登录页面。这是我的代码 -

header("location:index.php?login=fail");

但是通过网址发送,如 -

http://localhost/303/index.php?login=fail

有没有办法传递值而不显示在URL中?以及如何在第二页上获得此值?

3 个答案:

答案 0 :(得分:1)

您通过GET请求传递该值,这就是它出现在URL中的原因。为了传递值而不在URL中显示它,您希望通过POST请求传递它。

为了做到这一点,您不希望将值“返回”到登录页面。相反,无论php表单在处理用户点击“登录”按钮后登录的过程,都会决定向用户显示什么。

在PHP中,post变量可以通过全局$ _POST对象访问 -

$_POST['username'];

将获得您通过POST传递的名称“username”的值:

<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>

为了动态保存并向用户显示错误,您可以将它们存储在会话中,例如有一个名为“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表单中,它都是表单中的第一件事。

答案 1 :(得分:0)

其他方式是使用会话隐藏字段,但您正在做的事情是正常的。您可以稍后检索这样的值:

if ($_GET['login'] === 'fail')
{
  // failed.......
}

答案 2 :(得分:0)

有几种方法可以完成您的任务

  • 现代AJAX方式。使用AJAX发送表单。在密码正确之前不会重新加载页面。显示的错误到位。需要javascript。
  • Post/Redirect/Get模式。使用常规POST发送表单。没有重定向错误,显示在原位。
  • 会话,当我们在会话中存储错误时