会话数组重置提交?

时间:2017-07-18 03:45:30

标签: php arrays session

我有 test.php

<html>
<?php
if (!isset($_SESSION))
{
    echo 'session is not yet set';
    session_start();
    $_SESSION['comments'] = array();
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<input type="text" name="comment">
Click the button!
<input type="submit"/>
</form>
<?php

array_push($_SESSION['comments'], $_GET['comment']);
echo 'Current array count: ' . count($_SESSION['comments']) . '<br>';

foreach($_SESSION['comments'] as $comm)
{
    echo $comm.'<br>';
}

?>
</html>

应该发生的是,在文本框中输入的任何文本都应该被推送到会话数组,但每次我点击提交时,打印的是我刚刚输入的文本,而不是附加/存储以前的条目。我只得到1作为数组计数。

每次点击提交时,session is not yet set总会显示在页面顶部,即使我有if条件。

我似乎无法找到错误的原因?

3 个答案:

答案 0 :(得分:1)

你需要这样做:

<?php
 session_start();
if (!isset($_SESSION))
{
?>

否则,您有HTML标记的标题输出,并且会话无法正常启动。

答案 1 :(得分:1)

您应该始终在页面顶部开始会话。

session_start(); //start the session

然后我们可以检查会话是否存在。

if(!isset($_SESSION['user'])){
     // your code
    }else{
     // your code
    }

答案 2 :(得分:0)

session_start();不只是开始一个新会话。如果客户端已经有会话,它将恢复该会话。 PHP Manual
如果您正在使用会话,只需在页面顶部有<div class="col-lg-6 s_panel"> <div class="cont"> <!-- 1st div content --> </div> </div> <div class="col-lg-6 s_panel"> <div class="grid-stack"> <!-- Gridstack content --> </div> </div> ,PHP就可以解除启动或恢复会话。