问题标签 [superglobals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 警告“不要直接访问超全局 $_POST 数组”在 Netbeans 7.4 for PHP
当我使用$_POST、$_GET、$_SERVER时,我在 Netbeans 7.4 for PHP 上收到了这条消息警告。
不要直接访问超全局 $_POST 数组
这是什么意思?我能做些什么来纠正这个警告?
编辑:事件示例代码仍然显示此警告。
php - 有没有办法通过 html 表单传递超全局变量?
根据我目前的经验,当一个脚本被称为 HTML 表单“动作”时,它被分配了一组新的超全局变量。
有没有办法通过 html 表单传递超全局变量?此外,我想知道通过 include/require 语句调用 PHP 脚本与将其作为表单操作调用相比有什么区别。
谢谢!
php - 注销全局?
我很难理解这个功能。我知道 register_globals 是什么以及它从 PHP 中贬值了多长时间,但我正在查看这段代码,我想,里面有什么?...
我不明白的部分是这个......
这个 foreach 循环循环遍历我们定义的 $array 中的每个值,然后内部 foreach 循环从 GLOBALS 中获取一个超级全局数组,无论它是 _REQUEST、_SESSION、_SERVER、_ENV、_FILES 等......检查 $var 是否等于 GLOBAL 变量或不等于。如果是这样,那么我们将取消设置。
但是我仍然很难解决这个问题......
更新 这是我正在试验和调试的代码片段。如果 register_globals 处于打开状态,并且黑客来了,将 ?auth=1 插入到查询字符串中,会发生什么?auth 会从 GLOBALS 中删除还是会被回显?
谢谢你的时间。
php - 检查脚本是否在开发服务器或产品服务器上运行的更好方法
几年来,我一直使用通常推荐的方法来检查页面是本地调用还是远程调用,方法是检查是否$_SERVER['SERVER_ADDR']
等于 127.0.0.1 或为空。这已在其他问题中讨论过,例如this和this。其他超全局变量$_SERVER['REMOTE_ADDR']
也经常被提及。
随着时间的推移,我发现这种方法有时似乎会失败。
我真正想知道的是脚本是在我的开发服务器(xampp、wamp、IDE 调试器...)还是在生产服务器上调用的。这样可以正确设置 Web 根目录之上的脚本路径。虽然这在 99.999% 的情况下都有效,但似乎有时,当 Apache 重定向到 404 页面时,$_SERVER['SERVER_ADDR']
肯定会丢失,并且在生产服务器上运行的脚本通过了“本地”测试。
因此,我正在寻找其他方法。当然,我在 Apache 中可能做错了什么,但无论如何,最好在 php 中进行一个万无一失的测试。
我想到了几个想法,我想知道这些是否安全,或者是否有人有更好的想法。
A. 一个想法是查看当前路径:类似于
B. 另一个想法是检查是否存在具有特定名称的本地文件,但访问文件系统似乎工作量太大。
提前感谢所有见解!
php - 获取 $_GET 和 $_POST 值,但不获取 $_COOKIE 值
我想使用 $_REQUEST,但如果它来自 cookie,我不想要该值。做这个的最好方式是什么?这就是我目前的做法。谢谢
php - 将 CLI 参数注册到 GET 时的全局注册问题
在这里遇到了一个奇怪的人,也许一些更资深的人可以帮助我得出关于到底发生了什么的结论(已经有一个解决方法,但想知道如何解决这个问题,因为它似乎会影响其他人事物)
所以我有一行代码可以检测 CLI 字符串(基于 type[0]),然后继续将 CLI 参数转换并加载到 GET 参数中。
效果很好,您可以通过创建文件并发出类似的东西来测试它
使用上面的行和文件的内容只是一个print_r($_GET);
好吧,当您尝试将其用作 filter_input 我注意到但无法弄清楚原因时,它会变得很奇怪
看起来filter_input_array
一般来说,尝试在 GET 请求上添加任何东西都被放弃了,例如
出于未知原因,什么有效的是
对我来说几乎没有意义=(
我想相信我们的 GET 不知何故没有注册到全球范围内,但我不知道为什么......
我正在为 Saucy 运行 PHP 5.5.8,欢迎输入
php - 如何使用 $_POST 显示提交的数据
我有一个这样命名的输入:
name="ListPassengers[0].Lastname"
我如何显示该值,因为当我使用$_POST['ListPassengers[0].Lastname']
我收到以下错误:
注意:未定义索引:C:\wamp\www\3\res.php 中的 ListPassengers[0].Name
php - 虽然 $_FILE 超全局没有被传递
因此,我正在研究一种文件上传表单,该表单似乎从一个步骤到另一个步骤丢失了超级全局文件中的信息。所以我要做的是在通过验证码验证之前打印出超级全局文件,然后在通过验证码验证后将其打印出来。由于某种方式,我在验证验证码后丢失了信息。我曾尝试将信息存储在 cookie 和会话变量中,但没有成功。就 cookie 方向而言,只有当我在验证码验证之前点击刷新时,它才会将文件超级全局信息保存到 cookie 中。在会话存储方面,它在我验证验证码之前将信息存储在会话变量中,但在验证验证码后会丢失它。各位大侠能帮忙吗,先谢谢了。我的代码如下:
HTML 表单
所以上面的代码是我一直在使用的原始代码。它本质上是在验证验证码后进行文件上传,这就是我失去 $_FILES 超级全局的地方
回答:感谢所有查看我问题的人。问题是验证码是在它自己的页面上设置了 enctype 的形式。因此,$_FILES 超级全局变量被形式 $_FILES 覆盖,这当然没有设置。
php - 传递 $_POST 值以输出单个结果信息
我的目标是创建一个用于INSERT INTO testquiz
(MySQL 表)的通用模板。这将用于存储来自测验者的测验结果和用户信息(姓名和电子邮件是数据库中唯一的用户输入)。我是 PHP/MySQL 的新手,感觉自己只是在磕磕绊绊。
我的问题是我无法让$_POST
测验生成的值出现在数据库中。我知道这些值正在生成,因为它们将显示一个基本的回声。有一个“发送到电子邮件”功能也适用于有效的值。如果我$_POST
通过取消注释第一个注释块手动为数组分配值,我可以让这段代码工作。
我在这里想念什么?
旁注:我也会接受安全建议。谢谢你。
下面的代码(省略用户特定信息):
php - 在一个类中包装超全局变量?
我应该直接叫他们的名字$_GET, $_POST, $_SESSION //etc
,还是应该把他们包在一个班级里?例如对于 POST 超全局,如果未设置某个数组索引,它会返回 false 吗?
假设我有一个 Validator 类。所以我必须像这样遍历每个字段,$_POST['name']
但如果没有设置它会返回一个未定义的索引错误。但是,如果它返回 false 则不会发生。
有没有使用超全局变量的首选方法或最佳实践?