php session 别的页面,php – 为什么我的SESSION数组在一个页面上可以正常但在另一个页面上为空?...

我有一个设置各种会话变量的类.在设置会话变量后,我执行了一个SESSION的var转储并获得它们的输出.到目前为止都很好.然后我导航到另一个页面.

session_start(); // i call this right after opening the php tag

var_dump($_SESSION); // i call this after setting the variables

这次它是空的?

设置我的会话

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))

{

$_SESSION['atid'] = $row['autotaskid'];

$_SESSION['bmsid'] = $row['bmsid'];

$_SESSION['shavlikid'] = $row['shavlikid'];

$_SESSION['cpid'] = $row['cpid'];

}

试图在另一个页面上使用变量

$autotaskid = $_SESSION['atid'];

$tsql = "SELECT COUNT(tblBackupArchive.StatusID) AS total, tblBackupArchive.StatusID ".

"FROM tblBackupArchive INNER JOIN ".

"tblBackup ON tblBackupArchive.BackupID = tblBackup.BackupID ".

"GROUP BY tblBackupArchive.StatusID, tblBackup.ClientID ".

"HAVING (tblBackup.ClientID = " . $autotaskid . ")";

结果是

Undefined index: atid in C:\Program File...

我已经确定我发出了start_session();在使用它们的每个页面上运行任何其他代码之前的函数.

另一个重点:调用方法的php页面在iframe中设置变量.当我在新的标签/窗口中打开页面时,它会正确设置会话.这几乎就像主窗口有会话变量,然后每个iframe保持独立.

有任何想法吗?

比利

PHP 代码如下: ``` <?php // 设置 session 的有效期为 60 秒 ini_set('session.gc_maxlifetime', 60); // 开启 session session_start(); // 连接数据库 $db = new mysqli('localhost', 'username', 'password', 'database'); // 设置 session 存储在数据库中 session_set_save_handler( function() { return true; }, function($sid) { return $db->query("DELETE FROM sessions WHERE id = '$sid'"); }, function($sid, $data) { $expiry = time() + ini_get('session.gc_maxlifetime'); $data = $db->real_escape_string($data); return $db->query("REPLACE INTO sessions (id, expiry, data) VALUES ('$sid', $expiry, '$data')"); }, function($sid) { $result = $db->query("SELECT data FROM sessions WHERE id = '$sid'"); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); return $row['data']; } return ''; }, function($sid) { $expiry = time(); return $db->query("DELETE FROM sessions WHERE id = '$sid' OR expiry < $expiry"); } ); ``` 其中,我们使用了 PHP 的 ini_set 函数来设置 session 的有效期为 60 秒,然后使用 session_start 函数开启 session。接着,我们使用 session_set_save_handler 函数来设置 session 存储在数据库中。在这个函数中,我们需要传入五个回调函数,分别是: - open:打开 session 存储区,一般返回 true。 - close:关闭 session 存储区,一般返回 true。 - read:从 session 存储区中读取数据,返回数据字符串。 - write:将数据写入 session 存储区。 - destroy:销毁 session 存储区中的数据。 我们在上面的代码中使用了 MySQL 数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值