如何在PHP页面之间传递信息?
例如,我有一个PHP脚本来处理来自表单的登录输入,然后是一个单独的PHP脚本来处理用户的进一步输入。但是,我希望第二个PHP文件从登录表单接收输入。从本质上讲,我不希望为登录运行两次相同的脚本。
答案 0 :(得分:7)
您正在寻找POST和GET变量,它是在HTML表单的method参数中完成的:
<强>的login.php 强>
<form name="myform" action="secondpage.php" method="post">
<div>Username: <input type="text" name="username" value="" /></div>
<div>Password: <input type="password" name="password" value="" /></div>
</form>
然后在这另一页:
<强> secondpage.php 强>
$username = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
if ($username != '') {
// do your validations here
}
当你使用GET方法时,参数在URL中可见,所以假设我们在login.php中更改method =“GET”,你最终会得到类似secondpage.php?username = jsmith&amp;密码= 1234。然后,您可以使用$_GET['username']
获取值。
使用POST可以发送更大量的数据(URL大小为vague limit),并且在URL中不可见。你应该注意到它仍然以明文形式发送,所以这并不意味着它是安全的。
POST和GET是出于不同目的。应该使用GET来提取您将来可能想要再次提取的信息,这些信息对于这一瞬间并不特殊。拥有mypage.php?product = 123非常有用,因为您可能希望将此URL发送给朋友。当您修改数据状态时,应使用POST:更新产品,创建新用户,删除文章等。这是你想要发生的事情。
总之,我只是想补充一点,通常你不一定要使用另一个PHP脚本来避免一些代码运行。因此,在不知道项目细节的情况下,我可以说你可能想要做同样的事情来从相同的代码中受益(例如表单的HTML)。
请注意它是简化代码。
<强>的login.php 强>
<?php
$error = false;
$username = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
// if, and only if something was posted... so not on first display
if ($username != '') {
// do your validations here
if ($properlyLogged) {
session_start();
$_SESSION['loggedAt'] = time();
header('Location: http://localhost/secondpage.php');
exit();
} else {
$error = true;
}
}
?>
<?php if($error): ?>Login failed. Please try again.<?php endif; ?>
<form name="myform" action="login.php" method="post">
<div>Username: <input type="text" name="username" value="<?php echo($username) ?>" /></div>
<div>Password: <input type="password" name="password" value="" /></div>
</form>
<强> secondpage.php 强>
<?php
session_start();
if (!isset($_SESSION['loggedAt'])) {
// if not properly logged in, return user to login
header('Location: http://localhost/login.php');
exit();
}
?>
You are now logged in!
希望这就是你要找的东西!
答案 1 :(得分:4)
您可以使用GET或POST方法在页面之间传递信息。 GET会将您希望传递的信息附加到URL上的查询字符串,例如:
loginprocess.php?id = JSmith&amp; pword = HelloThere(这不是私人信息的推荐)
另一种方法是通过POST发送信息,以便它在查询字符串中隐藏。
此处可以看到更多示例:http://www.tizag.com/phpT/postget.php
答案 2 :(得分:1)
如果数据不是那么大,您可以将用户重定向到第二页,并通过URL传递数据(GET变量)。否则,只需在同一页面中运行seconds方法,并使用函数对数据进行最终解析,可以按照上述用户的建议进行解析。
答案 3 :(得分:1)
只是前面写的一小部分:GET(参数化URL)的限制是一个完整的URL,这意味着1024个字符。如果您需要更多,则必须使用post。
答案 4 :(得分:0)
您可以利用PHP会话在PHP脚本之间共享数据。下面的基本示例,请阅读更多here。
<强>的login.php:强>
<?php
// initializes the session //
session_start();
// save user name and password to session //
$_SESSION["username"] = 'someuser';
$_SESSION["password"] = 'somepassword';
$_sESSION["valid"] = true;
?>
<强> secondpage.php:强>
<?php
// start session handler //
session_start();
// check for a valid session //
if (!isset($_SESSION["valid"])) header("Location: login.php\n\n");
// continue page code here //
?>