Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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 - Fatal编程技术网

Php 会话变量未显示在特定页面上

Php 会话变量未显示在特定页面上,php,Php,我不是这里的PHP开发人员 我有一个页面无法显示会话值,即使它们确实存在。我可以在另一页上查看它们,但由于某些原因,它们无法在某一页上看到 编辑: 下面是页面顶部的脚本 <?php require_once('eu_gl.php'); // <- includes session_start() in it if(!session_id()) session_start(); // added this in case, but should not be neede

我不是这里的PHP开发人员

我有一个页面无法显示会话值,即使它们确实存在。我可以在另一页上查看它们,但由于某些原因,它们无法在某一页上看到

编辑: 下面是页面顶部的脚本

<?php
    require_once('eu_gl.php'); // <- includes session_start() in it
    if(!session_id()) session_start(); // added this in case, but should not be needed
?>

会议内容包括:

<?php
/*** Global include file **/

set_time_limit(300);
$time1 = microtime();

define('APP_SESS_NAME', 'EURA');
session_name(APP_SESS_NAME);
session_start();
session_set_cookie_params(0);
//...
?>

如@k102所述,确保您有
会话_start()设置/获取会话变量之前的某个地方<代码>打印(美元会话)还可以方便地显示存在哪些会话信息

我个人会修改您的代码以实现以下目的:

 if (!isset($_SESSION)) session_start();

 if (!isset($_SESSION['count'])) {
      $_SESSION['count'] = 0;
 } else {
      $_SESSION['count']++;
 }

 print_r($_SESSION);

第一点是: 最好试试

 if(session_id() == "" ) session_start();
而不是

if(!session_id()) session_start();
因为会话id不会返回false

php手册:

session_id()返回当前会话或 如果没有当前会话(没有当前会话),则为空字符串(“”) id存在)


第二点是,除非您真的需要sthg,否则session\u start应该是您页面上的第一件事,但我看不出您的代码中有任何原因。

您必须创建2个php文件来检查$\u session,session用于存储变量,以便您可以在网站的所有页面中使用它

test.php:

set_time_limit(300); // Timeout for script
$time1 = microtime(); // What this variable do in your script
define('APP_SESS_NAME', 'EURA'); // set constant APP_SESS_NAME
session_name(APP_SESS_NAME); // name session APP_SESS_NAME
session_start(); // start session
session_set_cookie_params(0); // this line must be called before session_start();

if(!session_id()) session_start(); // Delete this line

$_SESSION['name']= "test"; // set variable session with params name for checking session
test2.php:

define('APP_SESS_NAME', 'EURA'); // set constant APP_SESS_NAME
session_name(APP_SESS_NAME); // name session APP_SESS_NAME
session_start(); // start session
echo $_SESSION['name']; // check session is valid

我想您现在应该了解会话了。

会话的命名似乎是个问题。Tt是在include:session\u name(APP\u SESS\u name)中命名的,那么在其他地方启动它时,我似乎必须使用该会话名称。

该页面上是否有
session\u start()
?是的,它存在于一个使用require()调用的include文件中。您必须向我们展示您正在做什么,设置变量的位置和尝试检索变量的时间。做一个测试用例。@Chev:这是回答这个问题的唯一方法。对你来说,这足够“解决问题”了吗?我想我已经解决了这个问题:会议的命名似乎是个问题。如果它是在include:session\u name(APP\u SESS\u name)中命名的,那么在其他地方启动它时似乎必须使用该会话名称?session\u start()存在于使用require()调用的include文件中。它们的值存在并且设置正确,只是无法在此页面上查看它们。不同之处在于,在此页面上,会话_start()是在包含文件中调用的,这似乎是问题所在?抱歉,但我认为这必须是注释而不是answer@k102:看起来像是我的答案。@Chev:“我不会给你看代码,但我会告诉你。好吧,这就是我的代码的作用:没有错。怎么了?”@Chev:为什么?我试着向你们证明,注释胜过论证是徒劳的。