6

登录到我的一个网站时,我突然收到以下错误:

调用未定义的函数 session_register()

经过一些研究,我发现 session_register() 在 PHP 5.4 之后已被弃用。我检查了我的主机控制面板,果然它说我正在运行的当前版本是 PHP 5.4.19。我认为他们只是强制升级,这就是为什么这个问题似乎突然发生的原因。

我浏览了几篇 Stack Overflow 帖子并查看了 PHP 文档的链接。据我所知, session_register() 已弃用,应改为 $_SESSION 。

问题是,这两个都已经出现在我的代码中。这是我的 index.php 文件中的代码:

  53 <? if ($username) {
  54    session_register("ADMIN");
  55    $_SESSION['ADMIN'] = $username;
  56 ?>

所以我希望只删除第 54 行(已弃用的部分)然后它应该可以工作,但事实并非如此。当我这样做时,它破坏了代码。

根据我在此处此处阅读的其他帖子,他们似乎在说我在上面第 55 行看到的代码本身就可以解决问题。所以我有点困惑为什么它不起作用。如果有人能告诉我应该使用什么代码,我将由衷地感激。脚本的开发者并没有真正提供支持。

注意:另外,是的,页面顶部调用了 session_start()。

4

4 回答 4

5

可能缺少对session_start的调用,session_register会自动执行此操作,因此您要做的就是确保在使用$_SESSION全局之前已调用 session_start 。

您可以在此处查看更多信息http://www.php.net/manual/en/function.session-register.php

如果在调用此函数之前未调用 session_start(),则将对 session_start() 进行不带参数的隐式调用。$_SESSION 不会模仿这种行为,并且在使用前需要 session_start()。

于 2013-09-17T21:03:33.753 回答
2

因为session_register('ADMIN') 在当前会话中使用该名称注册全局变量,所以可能在您的代码中您有 $ADMIN 变量,找到它们并将它们替换为:

$_SESSION['ADMIN']

我希望这能帮到您。

于 2013-09-17T21:26:24.113 回答
1

看起来我忽略了显而易见的事情。只需删除旧的 session_register 代码,我就走在了正确的轨道上。

但请注意我发布的原始代码开始

<?

代替

<?php

多哈

于 2013-10-01T22:59:46.207 回答
0

session_start()在代码的开头添加 a并$_SESSION对其进行操作或创建。

于 2013-09-17T21:03:45.193 回答