【问题标题】:Is there a way to call a variable that is initialised later in PHP?有没有办法调用稍后在 PHP 中初始化的变量?
【发布时间】:2021-06-12 05:14:03
【问题描述】:

我有这段代码:

session_start();
$_SESSION["username"] = 'bob';
echo $_SESSION["username"];

if ($_SERVER['REQUEST_METHOD']=='POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

我想用 $username 替换它说“bob”的地方(在第 6 行初始化)。 这可能吗?

【问题讨论】:

  • $_SESSION['username'] = $_POST['username']; 很好
  • 这样做没有任何意义。如果用户名由 post 值设置,那么您应该将其保存到那里的会话中。

标签: php variables session


【解决方案1】:

使用assigning by reference,仅要求在将$username 变量分配给$_SESSION['username'] 之前声明它:

$username = 'bob';
$_SESSION["username"] =& $username; //mind the &
$username = 'foo';
echo $_SESSION["username"]; // 'foo'

也就是说,我建议不要采用这样的方法。考虑改用$_SESSION["username"] = $_POST['username']

【讨论】:

  • 通过使用$_SESSION["username"] = $_POST['username'] 我得到这个“警告:未定义的数组键“用户名””。
  • 这只是一个例子。您可能仍需要应用原始帖子中显示的 if 语句条件。我的意思是不鼓励使用引用。需要更改时直接设置$_SESSION['username']是首选。
【解决方案2】:

不,你不能那样做。

但也许您可以将代码更改为:

session_start();
$_SESSION["username"] = 'bob';

if ($_SERVER['REQUEST_METHOD']=='POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];
    // code
}

echo $_SESSION["username"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    相关资源
    最近更新 更多