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 会话变量与局部变量互换? 的相关文章

  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带
  • 我可以让 swagger-php 在查询字符串上使用数组吗?

    我使用 Swagger php 当我定义查询字符串上的参数时 它可以是一个数组 但据我所知 它不支持这种查询字符串 https api domain tld v1 objects q 1 q 5 q 12 我相信这会被设定in the co
  • 所有 PHP 相等比较都是对称的吗?

    Is a b总是等价于 b a 我认为在 JavaScript 中 由于强制转换 有一些奇怪的情况并非如此 I think ide https stackoverflow com questions 4752579 are all php
  • Laravel Auth:attempt() 不会持久登录

    我在网上找到了许多有类似问题的资源 但似乎没有一个解决方案可以解决我的问题 当我使用以下代码登录用户时 一切看起来都很好 email Input get email password Input get password if Auth a
  • 选择一组数字以达到最小总数的算法

    给定 一组数字n 1 n 2 n 3 n x 还有一个数字M 我想找到最好的组合 n a n b n c n gt M 该组合应达到达到或超过 M 所需的最小值 没有其他组合可以提供更好的结果 将在 PHP 中执行此操作 因此可以使用 PH
  • MVP - 演示者应该使用 Session 吗?

    我正在为网页使用模型 视图 演示者模式 演示者应该知道会话还是应该只有视图知道它 我想我的意思是像会话这样的概念与视图的体系结构非常相关 所以它们应该仅限于视图使用吗 否则 如果我想在不同架构的类似页面上重用演示者 会发生什么 或者我不需要
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • 编辑 HTACCESS 文件以防止直接访问特定文件夹中的特定文件

    我试图阻止直接访问子文件夹中的特定文件 我意识到这个论坛上有很多描述类似问题的主题 但是 我的似乎有点尴尬 由于我已经存在 HTACCESS 文件 这是文件的文件路径 www example com PRINCIPAL PROJECTS m
  • 使用 PHP PayPal REST API 退款?

    我正在开发一个集成到 PayPal 的 REST API 中的 PHP 应用程序 我正确处理了事务并将事务 ID 保存到 MySQL 数据库中 我现在正在尝试退款 但无法让它停止给出 传入 JSON 请求未映射到 API 请求 错误 有人对
  • 访问sendBeacon发送的数据

    文档表明sendBeacon通过发送其数据HTTP POST request 但在 PHP 中 POST变量似乎是一个空数组 这是我的 JavaScript 代码 navigator sendBeacon beacon log php My
  • Mysqli 更新抛出 Call to a member function bind_param() 错误[重复]

    这个问题在这里已经有答案了 我有一个 70 80 字段表单 需要插入到表中 因此我首先根据表单中的输入名称在数据库中创建了一个表 而不是手动创建一个巨大的插入语句 这是我使用的代码创建 更改表 function createTable ar
  • hibernate sessionfactory如何管理session?

    我刚刚得到了Hibernate Session和Connection之间的关系 但现在 我又遇到了一个问题 hibernate sessionfactory如何管理session 在以下代码段中 DAO 类的 save 方法 Session
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 如何删除文件

    我们有一个脚本 scripts ourscript php和一个文件 media movie1 flv 当我们运行时 我们如何删除这个文件ourscript php Using unlink http php net manual en f
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 使用 PHP 将 latin1_swedish_ci 转换为 utf8

    我有一个数据库 里面充满了类似的值 Dhaka 应该是 Dhaka 因为我在创建数据库时没有指定排序规则 现在我想修复它 我无法从最初获取数据的地方再次获取数据 所以我在想是否可以在 php 脚本中获取数据并将其转换为正确的字符 我已将数据
  • 如果产品重量超过1000克,如何以公斤为单位显示

    在 Storefront 主题中 我使用下面的代码将格式化重量从 1000g 更改为 1kg add action woocommerce after shop loop item title show weight 10 function

随机推荐

  • 无法在 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