2011-12-05 24 views
0

我有一個iframe在我的頁面上顯示一個計時器。當會話結束並且用戶返回時,重要的是定時器必須再次從0開始。這是行不通的,在排除故障後,我意識到我的iframe有另一個sessionid比我的其他頁面。因此,如果用戶註銷並返回,Iframe將繼續使用以前的sessionid。我做錯了什麼,如何讓我的Iframe不使用它自己的會話ID?所以只需在timer.php(Iframe頁面/第二頁面)上總結它,session_id()在註銷並返回時保持不變。我需要它使用與page1相同的會話信息,而不是它自己的。我希望我解釋正確。iframe使用不同的sessionid

PAGE1

if ($_SESSION['auth']) { 
include 'datalogin.php'; 
$sessionId = session_id(); 
$tid = $_SESSION['tid']; 
$userid = $_SESSION['userid']; 
echo "<IFRAME SRC='timer.php?tid=$tid&userid=$userid' WIDTH='100' HEIGHT='50' frameborder='0'></IFRAME>"; 

TIMPER.PHP

<?php 
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); 
session_start(); 
?> 
<head> 
<meta http-equiv="Refresh" content="1; "> 
</head> 
<body> 
<?php 
session_start(); 
$sessionId = session_id(); 
echo $sessionId; 
+0

你可以嘗試session_name而不是session_id –

+0

if iframe iframe(iframe)有不同的sessionid,它不是從你的主頁面提供的同一臺服務器上運行的,我的意思是服務器*地址*,而不是物理服務器,請檢查會話cookie的範圍 – DaveRandom

+0

你真的必須使用iframe嗎? JavaScript框架像jQuery? – ajreal

回答

1

解決方案#1:你可以使用(jQuery的)AJAX,而不是IFRAME(可能不能解決你的問題,我不知道你爲什麼使用iframe)

解決方案#2:你嘗試過使用session_name('Y OUR_SESSION_NAME_HERE');在使用session_start()之後的每個頁面上; ?

解決方案#3:你可以通過PHP的會話ID作爲GET參數(?timer.php TID = $ TID &的userid = $用戶ID & SESS =」 SESSION_ID())到iframe(只要); session_start();