【发布时间】:2013-01-24 03:17:26
【问题描述】:
我的复选框有问题,我需要成为棒状表单的一部分,该复选框将通过会话记住,以便用户可以浏览不同的页面,并在返回时记住他们的复选框选择。
如果用户希望他们的交货详细信息与他们在表单顶部输入的帐单详细信息相同,则可以单击该复选框。无需担心我如何将交货详细信息与帐单详细信息分配到相同的位置,就像我在后面的页面中所做的那样。
注意:Javascript 完全不适合这个,无论如何都不需要它,但只是提醒一下 :)。这是一种粘性表单,它会向自己发布直到满足所有条件($flag == "ok"),然后将用户发送到下一页。
我现在将提供我认为相关的代码:
PHP(这部分代码可能不相关,但正如我所见,我将其包括在内,在将用户发送到下一页之前设置最终的$_SESSION['sameasbilling'] 将是什么(order-confirm.php)
if ($flag == "ok"){
$sameasbilling = cleanString($_POST['sameasbilling']);
$_SESSION['sameasbilling'] = $sameasbilling;
if (!headers_sent()){
//send user to next page
header("Location: order-confirm.php");
}else{
echo "Not Sent";
}
}
HTML/PHP
<p>Same as billing address?
<input type="checkbox" id="sameasbilling" name="sameasbilling" value="1"
<?php
if (isset($_POST['sameasbilling'])) {
print ' checked="checked"';
$_SESSION['sameasbilling'] = "1";
} else {
$_SESSION['sameasbilling'] = "";
}
?> />
据我所知,最重要的一段代码在上面我尝试确定是否输出checked='checked'以及是否重置/设置'sameasbilling'会话值。
PS 我已经经历了很多次了,所以我在输入元素中的 IF 语句非常糟糕,但是当你停留在同一页面并收到错误时,现在确实记得你的选择,但是当你移至下一页并返回您的选择不被记住,我知道我根本没有任何代码可以真正做到这一点,但我希望有人能建议我如何实现这一点。
【问题讨论】:
-
看起来你已经回答了这个问题,或者实际上......没有问题。
-
+1 并且在设置
header(Location)后总是exit() -
@soyuka *设置 header("location");例如,您不想死在 header("Content-type") 之后!
-
你说得对,这篇文章实际上没有问号。我现在修改一下。但是我的问题是,如果设置了会话变量并记住它,如果用户取消选中该复选框,我如何让该 IF 语句说明并允许表单更改会话变量。这有意义吗?
-
So: if (!headers_sent()) { //将用户发送到下一页 header("Location: order-confirm.php");出口(); }
标签: php forms validation checkbox