我试图创建一个返回布尔值(1或0)的函数,当一个复选框被选中....这里没有问题。我还希望它包含一个会话变量,它为每个复选框增加1。当我在提交表单后回显$_SESSION ['counter']的值时,$_SESSION ['counter']保持为零或我最初设置的值。有人能看出我哪里出错了吗?非常感谢任何帮助提前!
<?php
if(!isset($_SESSION))
{
session_start();
}
$_SESSION['counter']= 0;
function checkbox_boolean ($checkboxID){
$checkboxID= 0;
if(isset($_POST[$checkboxID])){
$checkboxID = 1;
$_SESSION['counter']++;
}
}
if(isset($_POST['submit'])){
echo $_SESSION['counter'];
checkbox_boolean ('slot1');
checkbox_boolean ('slot2');
checkbox_boolean ('slot3');
checkbox_boolean ('slot4');
checkbox_boolean ('slot5');
checkbox_boolean ('slot6');
checkbox_boolean ('slot7');
checkbox_boolean ('slot8');
}
?>
您的代码中有相当多的错误,请参阅建议的编辑
?php
// dont need to test anything just call session_start()
session_start();
// initialise only if not already in existance
if ( !isset( $_SESSION['counter'] ) ) {
$_SESSION['counter'] = 0;
}
function checkbox_boolean ($checkboxID){
// this just destroyed whatever was passed in the $checkboxID parameter
// $checkboxID= 0;
if(isset($_POST[$checkboxID])){
// This does nothing useful
//$checkboxID = 1;
$_SESSION['counter']++;
}
}
if(isset($_POST['submit'])){
echo 'Session counter before = ' . $_SESSION['counter'];
checkbox_boolean ('slot1');
checkbox_boolean ('slot2');
checkbox_boolean ('slot3');
checkbox_boolean ('slot4');
checkbox_boolean ('slot5');
checkbox_boolean ('slot6');
checkbox_boolean ('slot7');
checkbox_boolean ('slot8');
echo 'Session counter after = ' . $_SESSION['counter'];
}
?>
你正在设置
$_SESSION['counter']= 0;
在每次PHP脚本被调用时被置零。不管它之前是什么,这一行总是将它重置为0。
将此更改为仅在它不存在时初始化它。像. .
if (!isset($_SESSION['counter'])) {
$_SESSION['counter']= 0;
}