【发布时间】:2016-05-21 14:59:22
【问题描述】:
我正在尝试设置一个会话变量来记录人们何时投票,但 PHP 完全拒绝设置它。代码如下:
elseif (isset($_GET['group']) && isset($_GET['vote']))
{
include_once(_INC.'otherheader.php');
groupVotePage($group, $vote);
$_SESSION[$group] = '1';
echo $_SESSION[$group];
}
什么都没有。函数 groupVotePage 将投票添加到数据库并回显感谢消息。 $group 是被投票的组的名称。我有 session_start();在页面顶部,并尝试在调用的函数中声明变量,将 session_start();到处。会话变量在网站的其他地方使用,所以我知道这不是服务器问题,而且在我尝试过的所有浏览器上都是一样的。
在函数内声明会话变量有效,但仅在函数内有效 - 它不会成为全局变量。
if(!isset($_SESSION[$group])) {
$totalVote=$totalVote+$vote;
$totalNumVotes=$totalNumVotes+1;
$totalRating=round($totalVote/$totalNumVotes);
$totalScore=$totalVote*$totalNumVotes;
...db stuff...
$mysqli->query($query);
echo'Thanks for voting!';
}
else {
echo'You have already voted for this group!';
}
【问题讨论】:
-
你确定它曾经达到那个条件吗?
-
您应该显示
$group的价值所在,并考虑在$_SESSION上执行var_dump。 -
$group 和 $vote 都是用户选择并正确转义的,整个函数像发条一样运行,所以我知道正在传递变量。在函数内声明 session var 有效,但仅在函数内有效 - 它不会成为全局变量。
-
您关于将会话开始无处不在的评论很有趣。由于尝试多次启动会话,我希望看到错误消息。您是否有兴趣确保会话始终只启动一次并且您将看到所有错误?如果是这样,请按照说明操作:Create a simple application bootstrap file。从当前脚本中删除所有
session_start();指令。现在,1)会话总是启动 2)你会看到错误。将notices视为错误并修复它们。然后我们可以修复您当前脚本的问题。 -
也许很有趣?在另一个与您的会话问题类似的问题中,我用简单的代码将一个网站放在一起,用于处理会话:网站:rfv123.eu.pn/tok。 Clear current tok value。 Destroy Session and Session Cookie。 Source code: index.php and token.php。原问题:session php rand other values.
标签: php session-variables