“header()” php 函数是不是取消设置全局变量?

     2023-02-24     10

关键词:

【中文标题】“header()” php 函数是不是取消设置全局变量?【英文标题】:Does "header()" php function unset global variables?“header()” php 函数是否取消设置全局变量? 【发布时间】:2011-11-08 16:13:05 【问题描述】:

我正在开发一个包含 html 表单的 php 脚本。

如果并非所有字段都以正确的方式填写,脚本将发出错误信号并重定向回同一页面,其中 header 函数使用 get 方法将错误变量设置为 yes:

header("Location: registration_page.php?error_empty=yes");

我的脚本有一个错误处理部分,它突出显示包含错误的字段,但我想保持正确填写字段的值。

我正在实现这个功能,正如我在另一个问题中发现的那样:

How can I keep a value in a text input after a submit occurs?

但问题是,当页面重新打开时,表单将不包含旧值。

我的问题是:有人知道标头函数是否取消设置 $_REQUEST 数组中的全局变量吗?

你知道我可以采用什么样的解决方案吗?也许是会话?

提前致谢,

马特奥!

【问题讨论】:

【参考方案1】:

$_COOKIES 将保持不变,但 $_POST$_GET 将被销毁,因为客户端正在移动到新页面。如果需要保留,则必须先将它们存储到$_SESSION,然后再调用重定向。

session_start();
$_SESSION['last_post'] = $_POST;
header("Location: http://example.com");
exit();

// On the redirected page, use the stored POST values and unset them in $_SESSION
session_start();
if (empty($_POST) && isset($_SESSION['last_post'])) 
  $post = $_SESSION['last_post'];
  unset($_SESSION['last_post']);

else $post = $_POST;

【讨论】:

会话开始后我应该什么时候销毁它?什么时候字段都填写成功了? @Matteo session_destroy() 在脚本执行完成时被隐式调用。除非您有理由在脚本完成之前关闭会话,否则您不需要调用它。 session_destroy()删除会话变量。我只是断开当前脚本与会话的连接。 @Matteo 请参阅上面关于在使用后取消设置 $_SESSION 存储的帖子【参考方案2】:

有人知道标头函数是否取消设置 $_REQUEST 数组中的全局变量吗?

不,它没有。 Cookie ($_COOKIE) 将保留。

显然$_GET 将包含您在重定向中的任何内容(例如:$_GET['error_empty'] = 'yes') and$_POST` 将是空的,因为您没有发布。

所以$_REQUEST 将是$_COOKIE 和您设置的新$_GET 参数的组合。


无论如何,您可能不应该使用$_REQUEST。准确指定您希望请求参数的位置...

【讨论】:

【参考方案3】:

它没有,但它确实提出了一个新请求。新请求意味着新的$_REQUEST 不一定包含所有旧数据。 $_COOKIE 仍然存在,但 $_GET$_POST 将是新的意思,$_REQUEST 将反映这一点。 ($_FILES 也将为空,当它不在 `$_REQUEST 中时,它是另一个用户提供的值将被重置)。

如果您想恢复表单,您需要将所有变量放在标题中的url中,或者使用$_SESSIONsetcookie然后从$_GET$_SESSION$_COOKIES.

【讨论】:

所以旧值将无法再访问?这就是为什么如果使用命令 结果将为空? $_FILES 很久以前就从 $_REQUEST 中删除了。 没错。因为$_REQUEST依赖于浏览器的输入,如果浏览器发出新的请求,那么$_REQUEST就会被清空。 @Null 我的措辞不好。固定。

在php中取消设置变量

...到静态变量之前,这个def似乎很完美...“如果静态变量在函数内部是unset(),unset()只会在函数其余部分的上下文中销毁该变量。随后的调用将恢复变量的先前值。”这个定义对我来说似乎不是一个好定义, 查看详情

取消设置 php 参考

...发布时间】:2010-12-3023:12:24【问题描述】:所以我有这个函数,它返回一个对传入数组的特定点的引用。我想调用unset,然后从数组/引用中删除结果,但调用unset只会删除引用,而不是原始数组中的数据。有什么想法吗?【问题... 查看详情

PHP函数中使用的变量会在函数执行后自动取消设置吗?

】PHP函数中使用的变量会在函数执行后自动取消设置吗?【英文标题】:ArevariablesusedinPHPfunctionsautomaticallyunsetafterfunctionexecution?【发布时间】:2011-07-3011:55:36【问题描述】:我有一个关于PHP函数中使用的变量/数组的问题。执行函... 查看详情

为啥不会/如何对 PHP 会话变量进行排序而不是取消设置

】为啥不会/如何对PHP会话变量进行排序而不是取消设置【英文标题】:Whywon\'t/HowcansortPHPsessionvariablesnotunsetting为什么不会/如何对PHP会话变量进行排序而不是取消设置【发布时间】:2014-02-1313:52:24【问题描述】:似乎在我所有的... 查看详情

通过引用取消设置 PHP

】通过引用取消设置PHP【英文标题】:PHPUnsetviaReferences【发布时间】:2011-01-0421:33:33【问题描述】:我一直在阅读有关引用的PHP手册,但有些事情让我感到困惑。它说引用不是指向内存地址的指针,而是...相反,它们是符号表别... 查看详情

vscode如何取消自动补全代码?

...入<td>,他就会制动补充变为<td></td>,如何取消这种自动补全代码的怎么取消电脑自动锁屏,步骤如下1、第一步:点“开始”,然后点“控制面板”(不会的朋友,请看图哈)2、在控制面板窗口中,点第一个“系统... 查看详情

迭代期间取消设置数组值是不是会节省内存?

】迭代期间取消设置数组值是不是会节省内存?【英文标题】:Doesunsettingarrayvaluesduringiteratingsaveonmemory?迭代期间取消设置数组值是否会节省内存?【发布时间】:2011-06-0803:10:44【问题描述】:这是一个简单的编程问题,因为我... 查看详情

关于php unset函数的问题

】关于phpunset函数的问题【英文标题】:Questionsaboutphpunsetfunction【发布时间】:2011-09-0805:59:01【问题描述】:我对@9​​87654321@有疑问如何取消设置所有变量。我应该使用unset($var1,$var2,$var3,...)还是存在任何其他简单的方法?在函... 查看详情

jQuery:取消设置/删除函数事件的最佳实践?

】jQuery:取消设置/删除函数事件的最佳实践?【英文标题】:jQuery:bestpracticeforunsetting/removingfunctionevents?【发布时间】:2011-12-1900:10:36【问题描述】:我正在使用jQuery插件CloudZoom,并且我已经更改了初始化,以便在用户单击“放... 查看详情

如何在php中取消设置全局变量?

...这是我的php代码。我见过几个类似的问题。他们使用unset函数取消设置全局变量。我希望每次用户打开网址时,都会提示用户名和密码,输入用户名密码后,如果正确则下载文件并删除用户名和密码,如果错误则删除用户名和密... 查看详情

使用 $variable 作为索引取消设置 PHP SIMpleXML 节点

】使用$variable作为索引取消设置PHPSIMpleXML节点【英文标题】:UnsettingPHPSImpleXMLnodewith$variableasindex【发布时间】:2012-08-1202:33:51【问题描述】:在使用变量索引而不是数字索引时,我在取消设置SimpleXML节点时遇到问题。这是我调用... 查看详情

PHP 类取消设置/清除私有数组变量

...问题描述】:我正在尝试创建一个错误记录类,我有一些函数可以设置各种输出方法,例如DB、文件、返回和屏幕。我希望将所有错误都存储到一个数组中,当调用__destruct()时,我想阻止客户端等待数据和有关用户遇到的错误的... 查看详情

在php中检测一个变量是不是设置需要使用啥函数

strstr判断是否在目标字符串是否在检测的字符中出现,出现会返回位置的下标。参考技术Aisset 查看详情

大家好,请问一下在android程序中怎么取消全屏?

...LSCREEN);上面这个方法是设置全屏,但是,设置好了,我想取消全屏?设置成一般默认设置,怎么设置?谢谢!getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);追问getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);好像在程序... 查看详情

PHP - 在foreach循环中取消设置数组元素[重复]

】PHP-在foreach循环中取消设置数组元素[重复]【英文标题】:PHP-Unsettingarrayelementinaforeachloop[duplicate]【发布时间】:2013-10-2322:38:27【问题描述】:您好,我正在尝试使用foreach循环删除数组元素,但它什么也没做。我需要索引完全... 查看详情

如何用php设置utf-8编码

...内容重新输入进去。要输出UTF8格式时,加上以下语句:header(”Content-Type:text/html;charset=UTF-8″)php用UTF-8总结:php文件本身必须是UTF-8编码。不像Java会生成class文件,避免这个问题php要输出头:header(”Content-Type:text/html;charset=UTF-8″)... 查看详情

php中检测一个变量是不是有设置的函数是啥

PHP的isset()函数一般用来检测变量是否设置格式:boolisset(mixedvar[,mixedvar[,...]])功能:检测变量是否设置返回值:若变量不存在则返回FALSE若变量存在且其值为NULL,也返回FALSE若变量存在且值不为NULL,则返回TURE同时检查多个变量时... 查看详情

php刷新当前页面?

...页面的确切网址?或者有什么功能可以做到这一点?所以header(\'location:???\');【问题讨论】:【参考方案1】:header(\'Location 查看详情