![](/img/trans.png)
[英]Issue with session_register & session_is_registered & PHP 5.4+
[英]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.