iam*_*esy 0 php session-variables
我有一个设置各种会话变量的类.在设置会话变量后,我执行了一个SESSION的var转储并获得它们的输出.到目前为止都很好.然后我导航到另一个页面.
session_start(); // i call this right after opening the php tag
var_dump($_SESSION); // i call this after setting the variables
Run Code Online (Sandbox Code Playgroud)
这次它是空的?
设置我的会话
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'];
}
Run Code Online (Sandbox Code Playgroud)
试图在另一个页面上使用变量
$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 . ")";
Run Code Online (Sandbox Code Playgroud)
结果是
Undefined index: atid in C:\Program File...
Run Code Online (Sandbox Code Playgroud)
我已经确定我发出了start_session(); 在使用它们的每个页面上运行任何其他代码之前的函数.
另一个重点:调用方法的php页面在iframe中设置变量.当我在新的标签/窗口中打开页面时,它会正确设置会话.这几乎就像主窗口有会话变量,然后每个iframe保持独立.
有任何想法吗?
比利
有任何想法吗?
是.您必须学会调试代码.
正如您所看到的,您的问题无法通过猜测来回答.所以,现在是手工的时候了.
然后制作一个测试脚本,看看你的会话是否有效
<?
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Refreshed ".$_SESSION['counter']++." times.<br>
<a href=".$_SERVER['PHP_SELF'].'?'.session_name().'='.session_id().">refresh</a>";
?>
Run Code Online (Sandbox Code Playgroud)如果有效,请使用cookies
<?
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Refreshed ".$_SESSION['counter']++." times.<br>
<a href=".$_SERVER['PHP_SELF'].">refresh</a>";
?>
Run Code Online (Sandbox Code Playgroud)
如果它也有效,你必须检查你的代码.
打印变量,减少代码等