我有 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条件。
我似乎无法找到错误的原因?
答案 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就可以解除启动或恢复会话。