繁体   English   中英

如何替换 PHP 5.4+ 的 session_register()

[英]How to replace session_register() for PHP 5.4+

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

调用未定义的 function 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()。

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

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

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

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

$_SESSION['ADMIN']

我希望这能帮到您。

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

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

<?

代替

<?php

卫生署

在代码开头添加一个session_start()$_SESSION来操作它或创建它。

这是一种旧思路; 但是,我正在使用旧版 PHP 应用程序,很高兴知道 php.ini 中 short_open_tag 的默认值在 5.2 之后从“开”更改为“关”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM