2011-10-17 237 views
0

我试图在php中创建一个计时器。它位于iframe上,以便iframe可以定期刷新。我在将会话变量载入iframe时遇到了麻烦。如果我在页面上(在iframe上方)回显会话变量,它显示正确,但不希望在iframe中回显。请帮忙。将变量传递给Iframe

第1页

<?php 
session_start(); 
.... 
if ($_SESSION['auth']) { 
$d=getdate(); 
$h=$d['hours']; 
$m=$d['minutes']; 
$s=$d['seconds']; 
$_SESSION['h']=$h; 
$_SESSION['m']=$m; 
$_SESSION['s']=$s; 
$_SESSION['m12']=-1; 
echo "<a href='http://localhost/index.php?option=com_content&view=article&id=50&tid=$tid'>Continue</a>"; 
?> 

第2页

<IFRAME SRC="timer.php" WIDTH=450 HEIGHT=100></IFRAME> 

timer.php

<head> 
<meta http-equiv="Refresh" content="1; "> 
<?php 
session_start(); 
?> 
</head> 
<body> 
<?php 
$hourin=$_SESSION['h']; 
$minin=$_SESSION['m']; 
$secin=$_SESSION['s']; 
echo $secin . " "; 
+4

这也许不能直接解决您的问题,但你是什么(或似乎)试图做使用Javascript更容易(更好)实现。您不需要额外的PHP文件或会话来制作计时器。 – Kokos 2011-10-17 12:26:28

+0

+1科科斯,这可以很容易地用js做得更漂亮和更好。 – OptimusCrime 2011-10-17 12:34:41

回答

0

timer.php,将session_start()移动到脚本的第一行。会话需要cookie,这些cookie设置在标题中,除非启用了输出缓冲,否则在发送内容后无法修改。

这可能无法解决问题,但无论如何都要这样做,因为它可以避免您稍后可能遇到的其他问题。

如果这样不能解决问题,请在page1的末尾和timer.php的正文中向我们显示var_dump($_SESSION);的结果。

+0

我已将它更改为timer.php中的以下内容,但仍然没有运气: ` <?php session_start(); ? > ` 我会尝试var_dump并回报 – Wilest 2011-10-17 12:43:15

0

我认为如果您将iframe url中的变量作为get值传递,它可能会解决您的问题。例如,在第2页创建的iframe链接为:

<IFRAME SRC="timer.php?h=<?php echo $h; ?>&m=<?php echo $m; ?>&s=<?php echo $s; ?>" WIDTH=450 HEIGHT=100></IFRAME> 

和timer.php

<?php 
$hour = $_GET['h']; 
$min = $_GET['m']; 
$sec = $_GET['s']; 
... 
?>