如何在不给它赋值的情况下创建 SESSION 变量? [php]

How to create a SESSION variable without giving it a value? [php]

基本上我的问题如下:

我正在尝试创建一个会话变量 这样就可以发生这样的事情

if(username == false) 
{
  $_SESSION['error messages'] = 'username missing';
}

问题是,虽然没有错误,但我希望 $_SESSION['error messages'] 为空。 但是如果我不做这样的事情:

$_SESSION['error messages'] = 'garbage';
if(username == false) 
{
  $_SESSION['error messages'] = 'username missing';
}

它说 $_SESSION['error messages'] 没有定义

在我需要它之前,如何让这个变量为空?

谢谢

使用下面的代码

if(username==false) {
    $_SESSION['error messages']='username missing';
}

希望对您有所帮助

首先,为了保存一条错误信息,使用如下:

if (empty($username)) {
    $_SESSION['error messages'][] = 'username missing';
}

最好保留一组错误消息。这样,如果你有多个错误,你可以很容易地遍历它们,计算它们,等等。

然后,当您想要显示错误消息时,请执行以下操作。

if (isset($_SESSION['error messages']) && is_array($_SESSION['error messages'])) {
  foreach ($_SESSION['error messages'] as $errorMessage) {
     // Do something with the error message, for instance:
     printf ("The following error occured: <em>%s</em><br>", $errorMessage);
  }

  // Next, clear the error messages so that they do not pop up on the next page request.
  unset($_SESSION['error messages']);
}

将使用 $_SESSION['error messages'] 的代码包装在 isset() 中确保您不会收到有关未定义索引的错误消息。

像这样初始化你的会话变量

$_SESSION['error messages'] = null;
if($username == false) {
    $_SESSION['error messages'] = 'username missing';
}

您可以初始化任何其他类型的变量,而不仅仅是会话变量

尝试

$_SESSION['error messages'] = 'garbage';
if(username == false) 
{
  $_SESSION['error messages'] = 'username missing';
}

你错过了 if 条件中的 ==。

要检查 $_SESSION['error message'] 是否已设置,请使用:

if(!isset($_SESSION['error message'])){
    $_SESSION['error message'] = '';
}

如果尚未设置,将创建一个空会话变量。

但是您可能在代码中的某处访问这个会话变量,而您不需要,所以只访问当你确实需要它时变量,到处都是空变量并不是很整洁。

您最好更改您的代码,这样它就不会尝试访问未设置且也不需要的内容,而不是将空变量设置为 "hack" 您的代码以使其正常工作。