为什么我的SESSION数组在一页上可以正常显示而在另一页上可以空白? [英] Why is my SESSION array OK on one page but empty on another?

查看:63
本文介绍了为什么我的SESSION数组在一页上可以正常显示而在另一页上可以空白?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a class that sets various session variables. After I set the session variable I do a var dump of SESSION and get an output of them all. all good so far. Then I navigate to another page.

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();函数在使用它们的每个页面上运行任何其他代码之前.

I've made sure I'm issuing the start_session(); function before any other code is run on every page that uses them.

另一个要点:php页面,该页面调用在iframe中设置变量的方法.当我在新标签页/窗口中打开页面时,它可以正确设置会话.几乎就像主窗口中有会话变量一样,然后每个iframe都将其自己分开.

Another important point: the php page that calls the method setting the variables within an iframe. when i open the page in a new tab/window it sets the sessions correctly. It's almost like the main window has session variables and then each iframe keeps it own seperate.

有什么想法吗?

比利

推荐答案

有什么想法吗?

Any ideas?

是的.您必须学习调试代码.
如您所见,您的问题无法凭空猜测.因此,该进行手动操作了.

Yes. You have to learn to debug your code.
As you can see, your question cannot be answered out of guesswork. So, it's time for handwork.

  • 首先确保您可以看到发生的任何错误.只需添加一个故意的,看看.如果看不到任何错误,则必须将其打开.
  • 然后创建一个测试脚本,以查看您的会话是否正常工作

  • First make sure you can see any error occurred. Just add an intentional one and see. If you see no errors you have to turn it on.
  • then make a testing script to see if your sessions do work

<? 
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>"; 
?>

如果有效,请使其使用Cookie

if it works, make it to use cookies

<? 
session_start(); 
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
echo "Refreshed ".$_SESSION['counter']++." times.<br>
<a href=".$_SERVER['PHP_SELF'].">refresh</a>"; 
?>

如果它也可行,则必须检查您的代码.
打印出变量,减少代码等

if it works too, you have to check your code.
Print out variables, reduce code, etc

这篇关于为什么我的SESSION数组在一页上可以正常显示而在另一页上可以空白?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆