【问题标题】:unset($_SESSION["valid_user"]) error [closed]unset($_SESSION["valid_user"]) 错误 [关闭]
【发布时间】:2014-10-12 16:37:56
【问题描述】:

我正在尝试通过以下方式取消注册我的会话:

unset($_SESSION["valid_user"])

它给了我以下错误信息:

解析错误:语法错误,第 7 行 D:\xampp\htdocs\compartElinks\logout.php 中出现意外的“未设置”(T_UNSET)

这是我的代码:

<?

// include function files for this application
require_once("bookmark_fns.php");
session_start();
$old_user = $_SESSION["valid_user"];  // store  to test if they *were* logged in
$result_unreg = unset($_SESSION['valid_user']);
$result_dest = session_destroy();

...

完整代码:http://pastebin.com/NBP7C3th

如何解决?

【问题讨论】:

  • 检查它上面的行并确保它的末尾有一个分号。
  • 显示其余代码。
  • 调用unset的返回结果为void。由于它不返回任何内容,因此尝试将返回结果分配给变量是没有意义的。它是一种语言结构,我相信这可能是您的问题。

标签: php function unset


【解决方案1】:
$result_unreg = unset($_SESSION['valid_user']);

unset 没有返回值 (void) 并且不能分配给变量。

它是一种语言结构,就像isset()include

您可能在 cmets 中读到过,PHP 中有一些函数与普通函数不同。 A list of them can be found here..

这些词在 PHP 中具有特殊的含义。其中一些代表事物 看起来像函数,有些看起来像常量,等等 - 但是 它们不是,真的:它们是语言结构。你不能使用任何 以下单词中的常量、类名、函数或方法 名字。使用它们作为变量名通常是可以的,但可能会导致 混乱。

【讨论】:

  • 是的,但是 include() 和 isset() 有返回值,可以捕获和检查。 unset 被记录为返回 void,但它并没有说你不能有一个(毫无意义的)return-assign 构造使用它。
  • 没错,马克。当然$x = IreturnVoid(); 有效。我认为蜜蜂特殊 function 和返回 void 的组合会导致错误。
  • 是的。 $foo = echo 'bar' 发出同样的错误。但 echo 是一种语言结构, unset 似乎是一个适当的功能。 unset $bar 失败,而 echo $bar 工作正常。一定会喜欢 PHP 对内部一致性的极度投入......
  • 刚刚尝试过,unset $bar; ...需要习惯这些。
猜你喜欢
  • 2015-12-06
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-27
  • 1970-01-01
相关资源
最近更新 更多