我有一个带有复选框的表单。当用户首次访问该页面时,我希望"选中"复选框。但是,如果他们取消选中该框然后提交页面,我希望它保持未选中状态(如果他们提交选中该页面的页面,则保持选中状态)。
为了确定何时检查并提交表格,我目前正在做:
<input type='checkbox' class='seeAll' name='seeAll' value='true' <?php if ($_POST['seeAll'] == 'true') echo checked; ?>>
这非常适合在需要时选中该框,但是,如果他们以这种方式提交,我将如何确保它保持未选中状态,同时如果他们重新访问页面(例如通过重新输入 URL)也被选中?
谢谢!
我不知道为什么我花了这么长时间才想出这个答案,但是在为此苦苦挣扎之后,我意识到我可以通过$_POST
检查复选框的值,就像我以前所做的那样,并且可以检查用户是否通过提交按钮以外的其他方式到达页面:
<?php if(($_POST['seeAll'] == 'true') || !isset($_POST['submit'])) echo checked; ?>
如果用户提交了表单,那么isset($_POST['submit'])
将是真实的,因此如果是这种情况并且$_POST['seeAll']
为空,则显然用户提交了未选中的框。如果isset($_POST['submit'])
为 false,则用户在没有提交表单的情况下到达页面,我应该选中复选框作为"默认"。
因此,我的整个<input>
标签如下所示:
<input type='checkbox' class='seeAll' name='seeAll' value='true' <?php if(($_POST['seeAll'] == 'true') || !isset($_POST['submit'])) echo checked; ?>>
工作就像我需要的那样!
注意::这与OP的问题不同,因为即使用户离开页面(例如,到 www.facebook.com),然后回到页面,它也会记住复选框的值。OP 希望它只记住页面发布到时复选框的值。
如果你想要一个非永久性的方法,你可以使用 $_SESSION :
<?php
if (!isset($_SESSION)) {
session_start();
}
if ($_POST['seeAll'] == 'true' || !isset($_SESSION['seeAll'])) {
$_SESSION['seeAll'] = true;
} else {
$_SESSION['seeAll'] = false;
}
?>
<form method="POST">
<input type='checkbox' class='seeAll' name='seeAll' value='true'
<?php if ($_SESSION['seeAll']) echo 'checked'; ?>
/>
<input type='submit'/>
</form>
参见:http://php.net/manual/en/session.examples.basic.php
一种解决方案是同时使用 $_SESSION[""]
和 $_POST[""]
。(请参阅下面的说明和代码)
解释
- 如果未设置
$_SESSION["loadcount"]
,请将其设置为 0。 - 每
if (isset($_POST["submit"]
,$_SESSION["load count"]
增加+1。 - 在输入类型="复选框"的"选中"选项中,回显 PHP。如果
if ($_SESSION["loadcount"] == 0)
回声"选中"。(将复选框设置为初始选中状态。 - 否则,如果
(isset($_POST["agree"]
回显"已检查",则记住用户检查的状态。(记住用户设置的已检查状态。
法典
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php // session_firstload.php
// Check if $_SESSION is not set, set $_SESSION loadcount to 0
if (!isset($_SESSION["loadcount"]))
$_SESSION["loadcount"] = 0;
// When the user submits using POST Method
if (isset($_POST["submit"]))
{
// Increase $_SESSION["loadcount"] by +1
$_SESSION["loadcount"] = $_SESSION["loadcount"] + 1;
}
// Echoing for Debugging / Understanding
echo $_SESSION["loadcount"];
?>
<form action="session_firstload.php" method="post">
<input id="agree" type="checkbox" name="agree"
<?php
// If Check the Checkbox is $_SESSION["loadcount"] == 0
// Else 'remember' with (isset($_POST["agree"]
if ($_SESSION["loadcount"] == 0)
echo "checked";
else
{
if (isset($_POST["agree"]))
echo "checked";
}
?>
>I Agree<br>
<input type="submit" name="submit">
</form>
</body>
</html>