会话变量在iframe中显示错误的值

时间:2013-09-13 13:08:38

标签: php

我的index.php有问题。我有一个将在compute.php上提交的表单,其中compute回显index.php中iframe内的会话变量的值。这是我的代码:

的index.php

<script type="text/javascript"> 
function reply_click(){
document.getElementById('iframe').src=('compute.php');
}
</script>

<? session_start(); ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"  
onSubmit="reply_click(); return false"> 
<table cellspacing=0 cellpadding=10 width=320 border="0">
<tr><td>
<button type='submit' id='1' name='form_submit'>Compute</button> 
</td></tr>
</table>
</form>

<?php 
if(isset($_POST['form_submit']))
    { 
        session_start();
        $_SESSION['val']="8";
    }
?>  
<iframe id="iframe"></iframe>

compute.php

<?php 
session_start(); 
$val=$_SESSION['val'];
echo($val);

?>

正如你在我的代码中看到的,每当提交表单时,会话变量被初始化为8.而iframe src将是compute.php,据说显示为8.但问题是iframe什么也没显示。我的onSubmit事件有问题吗?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

首先,您不需要session_start()之后的第二个isset($_POST['form_submit'])

其次,您需要将第一个session_start()一直移至顶部,然后再向浏览器输出,如javascript。

像:

<? session_start(); ?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table cellspacing=0 cellpadding=10 width=320 border="0">
<tr><td>
<button type='submit' id='1' name='form_submit'>Compute</button>
</td></tr>
</table>
</form>

<?php
if(isset($_POST['form_submit'])) {
   $_SESSION['val']="8";
}
?>

<iframe id="iframe"></iframe>

<?php
if(isset($_POST['form_submit'])) {
    // drop out of php and echo the javascript
?>

<script type="text/javascript">
document.getElementById('iframe').src=('compute.php');
</script>

<?php
    }
?>

答案 1 :(得分:0)

您在表单的onSubmit函数中的“return false”表示您的表单永远不会被提交,因此您的会话值永远不会被设置。

答案 2 :(得分:0)

你的问题是:

if(isset($_POST['form_submit']))

永远不会成真。当您点击该按钮时,您将iframe设置为正确的网址,但您说return false;以阻止该网页重新加载。但这也可以防止任何发布请求。所以永远不会设置$ _POST。

相关问题