PHP 会话变量与局部变量互换?

2023-12-05

我遇到了一个关于 php.ini 中的会话变量和局部变量的非常奇怪的问题。

我试图弄清楚我是否不了解 php 中的会话,或者这是否是我的主机使用的 php 版本的问题。

这是一个非常简单的代码来演示这个奇怪的问题:

session_start();  
var_dump($kenny);  
var_dump($_SESSION['kenny']);  
$_SESSION['kenny']='def';  
var_dump($kenny);  
var_dump($_SESSION['kenny']);  
$kenny = 'abc';  
var_dump($kenny);  
var_dump($_SESSION['kenny']);  

第一次运行代码时,我得到以下结果(正如人们所期望的):

NULL NULL NULL string(3) "def" string(3) "abc" string(3) "def"

我第二次运行它(当然,没有关闭浏览器),我现在明白了!

string(3) "def" string(3) "def" string(3) "def" string(3) "def" string(3) "abc" string(3) "abc" 

我运行了第三次、第四次、第五次等等,我明白了!

string(3) "abc" string(3) "abc" string(3) "def" string(3) "def" string(3) "abc" string(3) "abc" 

在我看来,会话变量“kenny”和局部变量 $kenny 在多次运行脚本后会成为其中一个的别名。嗯...我真的不认为这就是会话变量和局部变量在 php 中的工作方式。如果我在这里遗漏了什么,请纠正我。

我的虚拟主机正在运行 php 5.2.2。当我在运行 php 5.2.1、5.2.14 和 5.3.1 的其他主机上尝试完全相同的代码时,它们总是给我我所期望的结果:

1st time:

NULL NULL NULL string(3) "def" string(3) "abc" string(3) "def"

此后:

NULL string(3) "def" NULL string(3) "def" string(3) "abc" string(3) "def" 

我检查了 php.net 上的更改日志,但没有找到任何可以解决此问题的内容。但就像我提到的,早期版本(5.2.1)工作正常,所以这让我很困惑。

如果有人运行任何其他版本的 php 5.2.x,请尝试一下,如果您看到同样的问题,请告诉我。或者如果有人对这个问题有任何见解,我真的很感激任何反馈。

太感谢了!


这可能是因为register_globals指令已开启。该页面上没有说$_SESSION包括变量,但它说here:

If register_globals已启用,则 全局变量和$_SESSION条目将自动 引用相同的值 在上一届会议上注册 实例。然而,如果变量是 注册者$_SESSION那么 全局变量可用,因为 下一个请求。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 会话变量与局部变量互换? 的相关文章

  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 使用 servicestack 如何防止 cookie 添加到响应中?

    我可以在事后删除cookie 方法如下 public override void Configure Funq Container container ResponseFilters Add req res dto gt HttpListe
  • setcookie with expire=0 浏览器关闭后不会过期

    我使用setcookie来制作一个过期 0的cookie 从 PHP 文档来看 link http php net manual en function setcookie php cookie 过期的时间 这是一个 Unix 时间戳 所以
  • 在服务器上找不到本地主机或 phpMyAdmin:如何修复?

    我按照安装说明进行操作PHP MySQL and PHPMyAdmin 但是当我尝试访问时http localhost phpmyadmin 我收到此错误 未找到 在此找不到请求的 URL phpmyadmin 服务器 然后我尝试访问loc
  • 获取 YouTube 最高缩略图分辨率

    我想获得 youtube 最高缩略图 maxresdefault jpg 像这个 http i ytimg com vi Cj6ho1 G6tw maxresdefault jpg http i ytimg com vi Cj6ho1 G6
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 PHP/linux 将文件合并为单个 PDF

    我正在研究如何将多个 PDF 合并为一个 PDF 我正在寻找一个图书馆可靠且坚固尽可能 最好有一个库可以保留书签 鬼脚本 http pages cs wisc edu ghost 可以在保存书签的位置进行连接 但我遇到了麻烦 在一种情况下它
  • PDO PHP 连接,致命错误

    我的连接类 firstcode php class DB functions public db function construct try db new PDO mysql localhost dbname xxx charset ut
  • 使用值填充的 Symfony2 自定义字段类型

    这是先前问题的后续问题Symfony2 自定义表单类型或扩展 https stackoverflow com questions 24079288 symfony2 custom form type or extension 我正在尝试为订
  • Laravel Vue 组件只能传递数字?

    在我的 UserMenu vue 中我写道 export default props nameVal data return 并在blade php中
  • 使用 XPATH(和 PHP)从样式属性中选择背景 url

    我只想从此背景图像样式属性中选择 url 这可以通过 XPATH 实现吗 a href http www test com style background image none test a 我有类似的东西 url xpath gt qu
  • 在 PHP 字符串中格式化 MySQL 代码

    是否有任何程序 IDE 可以在 PHP 字符串中格式化 MySQL 代码 例如 我使用 PHPStorm IDE 但它无法做到这一点 它对 PHP 和 MYSQL 执行此操作 但不适用于 php 字符串内的 MYSQL 我已准备好使用新的
  • 如何在 Windows 上安装 Zend 框架

    安装 Zend Framework 就是这么简单 是的 对 好吧 我正在写一本初学者的书 有一件不太详细的事情是最重要的部分 安装该死的东西 浏览了几个小时的快速入门指南后 它只说 下载 Zend 添加包含目录 bla bla 然后就完成了
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • 如何使用更新资源控制器 laravel 4?

    我有带有索引 编辑 更新方法的客户控制器 Route resource customer CustomerController 控制器方法更新 public function update id echo id 我的 HTML 表单
  • 如何处理 REST api 中的 php 通知、警告和错误?

    在 REST API 中 200 响应表明操作成功 PHP 默认情况下直接在响应正文中输出错误消息 而不更改响应代码 在 SPA 中 用户无法直接看到响应文本 因此 当应用程序未按预期工作时 我通过 FireBug 检查响应正文 以检查可能
  • 雄辩的第一个 where 子句

    我想知道 Laravel 如何实现雄辩的语法 以便可以静态调用第一个 where 子句User where User where id 23 gt where email email gt first 他们有吗public static f
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess
  • 矩形超出边界是什么意思

    PPB Graphics2D PaintImageData 矩形超出界限是什么意思 我几乎在我检查的每一段代码中都看到了它 最新的代码是 define my consumer key define my consumer secret oa
  • 如何在 PHP 5.6 中通过 php.ini 设置“verify_peer_name=false”SSL 上下文选项

    案例 我想打开 SSL 连接localhost而 SSL 证书是 FQDN 的问题 问题 没有进行特殊处理就行 下面的程序失败并显示以下消息 PHP Warning stream socket enable crypto Peer cert

随机推荐

  • 无法在 mule 中创建动态文件入站端点

    我得到一个文件路径作为 xml 内 mule 的输入 使用 XPATH 表达式 我能够提取路径 我想从该路径读取特定文件 我尝试如下定义文件入站端点 但它似乎不起作用
  • 将 MongoDB 3.6 成员添加到 3.4 副本集时出现“同步源没有功能兼容版本”错误

    我正在尝试将集群从 MongoDB 3 4 迁移到 3 6 添加使用 MongoDB 3 6 的新成员时 初始同步失败并出现以下错误 同步源在 src mongo db repl replication coordinator impl c
  • Android WebView loadUrl JavaScript 无法正常工作 API <=18(但可在 API >=19 中工作)

    问题 我需要做什么才能使 webView loadUrl javaScript 在 API 18 或更低版本中工作 与 API 19 或更高版本相比 问题描述 我正在使用 WebView 进行聊天 首先我像这样加载 HTML webView
  • 时间戳转换[重复]

    这个问题在这里已经有答案了 我的下面的函数不会将日期转换为定义的格式 val oldFormat new SimpleDateFormat yyyy MM dd HH mm ss SSSSSS val newFormat new Simpl
  • 自动解锁 Windows 用户会话

    最近 我一直在开发 CredentialProvider 以便自动解锁 触发器可以是任何事件 例如计时器结束 Windows Vista 或更新版本 用户会话 为此 我阅读了一些关于该主题的有用文章 即 GINA 和这种新架构之间的变化 h
  • 使用 C/C++ 高效地反序列化由浮点数、标记和空行组成的字符串

    我有类似于以下内容的大字符串 some text token 24 325973 20 638823 1 964366 0 753947 1 290811 3 547422 0 813014 3 547227 0 472015 3 7233
  • cv::RotatedRect 中非零像素的数量

    正如标题所说 我试图找到 cv Mat 的某个区域 即 RotatedRect 内 的非零像素数 对于常规矩形 可以简单地在 ROI 上使用 countNonZeroPixels 然而 ROI 只能是规则的 非旋转的 矩形 另一个想法是绘制
  • 带有 IntelliJ 和 Tomcat 的 Java-ee REST 服务器

    我正在尝试使用 Java ee 实现 REST 服务器 API 如下所示this教程 我使用 Tomcat 而不是 Glassfish 我可以开发一个servlet WebServlet name hello urlPatterns pub
  • Java HTTP 服务器

    我想在本地实现一个 Java HTTP 服务器 我的意思是服务器计算机将在我的控制之下 我预计向其发送请求的客户端不会超过 20 个 我想知道如何去做 我应该使用 J2EE servlet 容器 例如 Apache Tomcat 吗 我可以
  • 如何在重绘时保存先前绘制到画布上的对象?

    每次重绘 SurfaceView 时 之前绘制的内容都会被擦除 如何保存它们的状态 以便我的循环将新对象添加到屏幕上而不删除旧对象 用一个画Bitmap Bitmap mDrawBitmap Canvas mBitmapCanvas Pai
  • 如何从命令行中的脚本运行函数?

    我有一个具有一些功能的脚本 我可以直接从命令行运行其中一个函数吗 像这样的东西吗 myScript sh func 好吧 虽然其他答案是正确的 你当然可以做其他事情 如果你有权访问 bash 脚本 你可以修改它 然后简单地将特殊参数放在最后
  • 超时期限未过,但仍然超时(参见代码)?

    好的 在大约 3 4 分钟的搅拌后 我不断收到此错误 Timeout expired The timeout period elapsed prior to completion of the operation or the server
  • 如何在空手道功能中循环数组值

    我正在尝试循环空手道功能文件中的数组值 在Feature1 feature Scenario1中 我在数组 UUID1 UUID2 UUID3 中有一些值 我想调用另一个功能文件 Feature2 feature 有一个代码来调用DELET
  • QUnit,断言不行吗?

    抱歉 如果这是显而易见的 但是如果我们想断言某个方法返回 false QUnit 中是否有 notOK 或等效函数 我看不出有什么办法可以否定 OK文档 I tried ok 但这没有用 你可以使用 ok method expected t
  • 在通过 HomeBrew 安装的 macOS 上设置 ANTLR 的 CLASSPATH

    下列的这个问题 我通过 HomeBrew 安装了 ANTLR brew install antlr 它安装在 usr local Cellar antlr
  • 遍历组并为每个 R 创建绘图

    我正在尝试映射 循环鸢尾花数据集中的物种列 为每个物种创建一个图 下面的脚本返回三个图表 但所有图表都绘制了相同的数据 并且不按物种划分 地图函数似乎忽略了species list 只查看整个数据帧 一直在尝试不同的方法 但无法使任何工作发
  • Swift 3 和 Swift 4 中的 WebService API 方法?

    我是新来的SwiftiOS 和我想在单独的类中创建一个单独的方法 例如NSObject 的 Web 服务 以便我可以在任何 ViewController 中使用它并解析任何类型的JSON响应使用NSURLSession and Alamof
  • 用于自动化 ncurses 类型 telnet 会话的跨平台解决方案

    背景 我在网络和电信领域的部分工作涉及当传统硬件无法在其他接口中提供简单的解决方案时自动执行 telnet 会话 许多旧设备只能通过工艺端口 RS 232 串行端口 SNMP 或 Telnet 进行访问 有时 telnet 是访问特定信息的
  • 将数组从 JSON 文件导入到 Typescript 文件中

    我有一个 JSON 文件 其中包含一个数组对象 如下所示 VergiNo XXXXXXX VergiNo YYYYYY VergiNo ZZZZZZ 我将此 JSON 文件导入到我的 Typescript 文件中 import as fir
  • PHP 会话变量与局部变量互换?

    我遇到了一个关于 php ini 中的会话变量和局部变量的非常奇怪的问题 我试图弄清楚我是否不了解 php 中的会话 或者这是否是我的主机使用的 php 版本的问题 这是一个非常简单的代码来演示这个奇怪的问题 session start v