我正在玩小练习来理解会话和帖子,但不能让他们一起表现。你能帮忙吗?
场合
我有以下几页
在第1页上,我有一个输入表单。输入是一个复选框,例如:
<input type="checkbox" name="test" >
我希望能够在没有收到错误的情况下到达第1页
我希望复选框的未选中状态为 value of 0
,所选状态为 value of 1
无论分配了什么值(通过复选框),我希望该值存储在可以从第1页到第2页的会话中和回来。
存储会话值后,我想选择或取消选中第1页上的复选框来更改值,允许我从第1页使用新值第2页和返回。
以下是我的代码(不起作用):
Page 1
注意:我将此代码与表单放在同一页面上。 checkbox name="test"
if (isset($_POST['test']))
{
$_SESSION['test'] = $_POST['test'];
}
if (empty($_SESSION['test']))
{
$_SESSION['test'] = 0;
}
else
{
$_SESSION['test'] = 1;
}
var_dump($_SESSION['test']);
第2页
var_dump($_SESSION['test']);
先谢谢你的帮助。
更新
如果您想查看这两个页面的完整代码,我已在此处发布:
第1页:
http://www.diigo.com/item/note/17zt6/ux45
第2页:
答案 0 :(得分:1)
<?php
session_start();
if (isset($_POST['submit']) && isset($_POST['test']))
{
$_SESSION['test'] = true; // sets the session if the checkbox was set
} elseif (isset($_POST['submit']) && !isset($_POST['test'])) {
if (isset($_SESSION['test'])) unset($_SESSION['test']);
}
$checked = '';
if (isset($_SESSION['test'])) {
$checked = 'checked="checked"'; // check the checkbox by default if the session is set
}
echo '<input type="checkbox" name="test" '.$checked.'>';
echo '<input type="submit" name="submit" value="Submit">';
答案 1 :(得分:0)
为什么不使用if (!isset($_SESSION['test']))
代替if (empty($_SESSION['test']))
?
答案 2 :(得分:0)
将此代码用于page1.php
<?php
session_start();
if(isset($_POST['submit']))
{
if (isset($_POST['test']))
{
$_SESSION['test'] = $_POST['test'];
}
else
{
$_SESSION['test'] = 0;
}
}
if (empty($_SESSION['test']))
{
$_SESSION['test'] = 0;
$checked = '';
}
else
{
$_SESSION['test'] = 1;
$checked = 'checked="checked"';
}
var_dump($_SESSION['test']);
?>
<!DOCTYPE html>
<html>
<head>
<title>Page 1</title>
</head>
<body>
<form action="page1.php" method="post">
Test:
<input type="checkbox" name="test" <?php echo $checked; ?>>
<input type="submit" name="submit" value="Test!">
</form>
<br />
<a href="page2.php">Continue</a>
</body>
</html>