Php 会话变量未显示在特定页面上
我不是这里的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
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:为什么?我试着向你们证明,注释胜过论证是徒劳的。