使用$ _GET将变量传递到多个页面

时间:2018-10-28 09:47:06

标签: php

我设法使用GET方法(登录页面)工作

if(isset($_POST['login'])){
    $username = $_POST['username'];
    $password = $_POST['password'];
    $url = "Dailyplanner.php?username=" . $username . "password=" . $password;

我想要

上的变量的页面
$username = $_GET['username'];
$password = $_GET['password'];
$url = "DailyPlanner.php?username=" . $username. "password=" . $password;
echo "$username $password";

现在,除了两件事之外,它还可以正常工作。

数字1:

加载页面时,正确显示$username$password的值,但是由于某些原因,它指出第3行的密码是未定义的变量。

数字2:

我想访问多个页面的变量,所以我将其复制到想要的页面并使用以下代码

$username = $_GET['username'];
$password = $_GET['password'];
$url = "(the page i want).php?username=" . $username. "password=" . $password;
echo "$username $password";

错误仅表示用户名和密码未定义,并且不会像我希望的那样更改url。只是想知道是否有人可以提供帮助。对不起,如果我在学习PHP,这很痛苦。谢谢。

3 个答案:

答案 0 :(得分:0)

我也是新手,我有一些建议:

首先,我认为您需要检查$_POST['username']$_POST['password'],而不仅仅是$_POST['login']

第二:如果您想要在所有视图中都可用的内容,则可以使用会话:see this link

希望获得帮助

答案 1 :(得分:0)

1)您缺少?username=" . $username. " password=" . $password来获取查询,这就是未定义密码的原因

2)这种传递此类易受攻击数据的方法是完全不正确的,因为它在地址面板中显示了密码,而在引荐来源标头中显示的则是最差的,此外,您还必须修改每个链接以保持跨站点传递数据。

您无需存储整个凭据,只需在会话中授权并存储用户ID,密码就永远不能以原始格式存储在任何地方

答案 2 :(得分:-1)

根据我的评论,您应该使用$_SESSION而不通过URL传递此类信息。

登录后

if(isset($_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    session_start();
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;
    //redirect to your dashboard page or authenticated page
}

然后在每个页面上执行此操作

different_page.php

session_start();
if(isset($_SESSION['username'])) {
   //user is logged in
   echo $_SESSION['username'];
}

我不建议将密码保存在会话变量中。如果您要确定登录用户,请使用某种令牌,将其存储在会话和登录用户的数据库中,然后检查两个令牌都匹配的每个页面。

//if user credentials check out, generate token and append to session global
$_SESSION['token'] = bin2hex(openssl_random_pseudo_bytes(16));

然后在每个页面上,代替上面的标记检查