Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话变量未在页面之间持久化_Php_Post_Session Variables - Fatal编程技术网

PHP会话变量未在页面之间持久化

PHP会话变量未在页面之间持久化,php,post,session-variables,Php,Post,Session Variables,我有一个变量,我想在页面之间持久化。我试着用POST设置它,当它不起作用时,我使用了会话。然而,在任何一种情况下,当我转到新页面时,变量都会丢失 以下是设置变量时的代码: $_SESSION['filename'] = $boardName; $debug->alert_code_info($_SESSION['filename']); 作为调试测试,我使用这行代码检查它是否持续: $debug->alert_code_info($_SESSION['filename']); 你

我有一个变量,我想在页面之间持久化。我试着用POST设置它,当它不起作用时,我使用了会话。然而,在任何一种情况下,当我转到新页面时,变量都会丢失

以下是设置变量时的代码:

$_SESSION['filename'] = $boardName;
$debug->alert_code_info($_SESSION['filename']);
作为调试测试,我使用这行代码检查它是否持续:

$debug->alert_code_info($_SESSION['filename']);
你可以在上面几行中用POST代替SESSION,我也试过了,但它也不起作用


为什么这些变量不能在页面之间持久存在?

确保您有
会话_start()

是的,
$\u POST
可以。那样的话,请通读这篇文章

$\u POST是一个数组,用于将从HTTP POST请求接收的数据存储到特定页面。它不像$\u会话变量那样在页面间持续存在

PHP有“页面范围”。这意味着,当脚本运行时,将创建所有变量,当脚本完成时,将处理所有变量。它没有持久性。在没有输出缓冲(整个主题本身)的情况下,只要访问页面并生成输出,脚本就会完成。这个模型非常接近HTTP的设计方式

如前所述,您需要一些其他形式的持久性来在页面之间携带变量。会话、数据库和数据存储、缓存、cookie和共享内存都在php应用程序中经常使用

哪一个是合适的,需要进一步理解为什么需要持久性

您还可以使用url参数的标准web机制(自动放置在$\u GET superglobal中)、POST变量(自动放置在$\u POST superglobal中)或COOKIE(自动放置在$\u COOKIE superglobal中)将变量从一个页面/脚本传递到另一个页面/脚本

其中一些是连接的,因为php会话默认使用服务器使用的cookie来标识返回的客户端

关于您关于POST变量的特定问题,只要针对您的脚本发布了一个表单,POST变量将在$\u POST中可用。一种常用的技术是利用隐藏的表单字段,或者在存在多表单进程或错误处理时设置表单字段的值

需要明确的是,PHP没有持久性,这与在应用服务器下运行的一些其他语言(例如带有J2EE服务器的Java)不同。在J2EE中,可以创建对象,这些对象将跨任意数量的页面请求存在于应用程序服务器中。在某些实现中,PHP具有一些较小的持久性功能,如数据库池,但该语言没有任何固有的功能


一旦您清楚了页面范围,并且基本上没有什么东西可以超越一个HTTP请求/响应,您的持久性选项就应该更清晰

您是否在每个页面的顶部都有session_start()?可能不是这样,但请记住https。。。还有http。。。被认为是不同的站点。POST与会话完全不同。帖子只出现在一个页面中,不会在一页到另一页之间持久存在。这就解释了为什么使用SESSION它不起作用-有什么原因可以解释为什么使用POST它不起作用吗?答案是正确的。您可以使用$GLOBALS或$\会话在php中持久化数据server@HimeshSuthar-
$GLOBALS
不会持久存在,它只是一个全局可用的“超全局”数组,通常应该避免使用<代码>$\u会话
$\u COOKIE
当然以不同的方式持续存在。