【问题标题】:unable to set $_SESSION variable with PHP variable无法使用 PHP 变量设置 $_SESSION 变量
【发布时间】:2012-11-19 01:40:00
【问题描述】:

这是我设置会话变量的地方。

function validateUser()
{
session_regenerate_id (); //this is a security measure
$_SESSION['user'] = $_POST['username'];
$_SESSION['valid'] = 1;
$_SESSION['firstname'] = $firstname;
$_SESSION['lastname'] = $lastname;
}

这就是 print_r ($_SESSSION) 的回声。

Array ( [user] => aboshart [valid] => 1 [firstname] => [lastname] => )

如果我回显 $firstname 和 $lastname 我会得到正确的值。我做错了什么?

【问题讨论】:

  • $_SESSION 变量通常被认为是可信的,因为它是开发人员指定值是什么数据。您通过不清理或验证 $_POST['username'] 将 $_SESSION var 设置为未经清理的用户提供的 var 请在意外使用 $_SESSION['user'] 之前这样做,它可能会像在数据库查询中那样造成伤害。从您的 PHP 代码注释来看,我假设您想要一个安全的应用程序。

标签: php


【解决方案1】:

您没有将 $firstname 或 $lastname 传递给函数。

function validateUser($firstname, $lastname)
{
    session_regenerate_id (); //this is a security measure
    $_SESSION['user'] = $_POST['username'];
    $_SESSION['valid'] = 1;
    $_SESSION['firstname'] = $firstname;
    $_SESSION['lastname'] = $lastname;
}

$_POST 和 $_SESSION 应该在范围内,但其他不在范围内

【讨论】:

  • 他说了什么;另外,作为一项规则,请查看错误日志以获取通知和警告。
  • 谢谢!这正是我所需要的。 $_POST 变量只是为了证明 validateUser 函数正在设置会话变量。我不会在实时代码中使用它。
猜你喜欢
  • 1970-01-01
  • 2017-09-12
  • 1970-01-01
  • 2021-01-01
  • 2012-08-30
  • 2021-11-29
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多