PHP单选按钮和会话

时间:2012-01-14 16:36:56

标签: php session cookies

确定, 我有两个单选按钮'A'和'B',用户可以选择其中任何一个, 默认选择按钮'A'被选中,但当用户进入我的网站并选择'B'时,选择更改为按钮'B',但问题是,

当用户移动到我的网站中的另一个页面时,选择会回到默认状态? 怎么解决? 它可以在缓存和会话的帮助下完成吗?如果是,那么如何:?

这是按钮,

<form name="f1" method="POST" action="<?php echo $PHP_SELF;?>">
<span>Family filter:</span>
<ul>
<li><input type="radio" name="r1" value="o" onClick="submit();" <?php echo ($_SESSION['r1'] == "o") ? 'checked="checked"' : ''; ?><?php echo ($_POST['r1'] == 'o' ) ? 'checked="checked"' : ''; ?> />On</li>
<li><input type="radio" name="r1" value="p" onClick="submit();" <?php echo ($_SESSION['r1'] == "p") ? 'checked="checked"' :''; ?><?php echo ($_POST['r1'] == 'p') ? 'checked="checked"' : ''; ?> />Off</li>
</ul>
</form>



<?php
session_start();

//我不知道在这里要写什么才能让它起作用:S     ?&GT;

当我打开页面时,两个按钮都被取消选中我怎么能这样做,默认情况下,当没有选中时,按钮'A'仍然被选中

2 个答案:

答案 0 :(得分:2)

您需要将_POST变量转换为_SESSION变量。它首先工作,因为您允许POST或SESSION变量设置检查:

<?php echo ($_SESSION['r1'] == "o") ? 'checked="checked"' : ''; ?><?php echo ($_POST['r1'] == 'o' ) ? 'checked="checked"' : ''; ?>

但这是不必要的。在页面的最顶部,你应该有这个:

<?php
session_start();
if (isset($_POST['r1'])){
    $_SESSION['r1']=$_POST['r1'];
}
?>

然后低于你只需要

<?php echo ($_SESSION['r1'] == "o") ? 'checked="checked"' : ''; ?>

额外注意事项:确保session_start()调用发生在页面的最开头,并且它发生在您希望会话变量可用的每个页面的最顶部

答案 1 :(得分:0)

session_start();
$_SESSION['r1'] = $_REQUEST['r1'];

当您向php脚本提交选择时,您需要获取/发布/请求变量并在启动会话后将其存储到会话变量中。然后在每个php文件中,您可以添加session_start()语句,并且您将能够使用该脚本中的所有会话变量。您还可以设置会话cookie,以便在用户关闭浏览器session_set_cookie_params(0);或使用session_destroy();命中注销按钮时使其过期。存储会话变量后,您可以在所有页面上使用它来设置单选按钮的“已检查”属性。