Php 如何在点击浏览器后退按钮时保持单选状态?

Php 如何在点击浏览器后退按钮时保持单选状态?,php,Php,我正在处理一份带有多台收音机的多步骤调查表 它们有一些默认状态 用户对其进行操作以选择其首选项 现在,客户端希望在点击浏览器后退按钮或侧导航器链接时,指向调查前几个阶段的一组链接,以显示用户先前选择的无线电状态 以下是导航器的外观: <ul> <li><a href="index.php?site=form1">Step1</a></li> <li><a href="index.php?site=form2">S

我正在处理一份带有多台收音机的多步骤调查表

它们有一些默认状态

用户对其进行操作以选择其首选项

现在,客户端希望在点击浏览器后退按钮或侧导航器链接时,指向调查前几个阶段的一组链接,以显示用户先前选择的无线电状态

以下是导航器的外观:

<ul>
<li><a href="index.php?site=form1">Step1</a></li>
<li><a href="index.php?site=form2">Step2</a></li>
<li><a href="index.php?site=form3">Step3</a></li>
</ul>
只有一个$u会话在整个调查过程中收集数据


我知道我可以直接从$\u会话加载信息,但当请求来自导航器链接/返回按钮时,我需要替换默认状态。

有两种主要方法,基本上你是说,收音机的选定状态需要保存在表单的不同页面之间

因此,当您返回到以前所在的页面但未提交时,选择应保持不变

有两种关键方法,服务器端使用PHP,客户端使用Javascript

PHP

您可以在网站上设置任何链接以提交表单,并保存电台选择,然后在创建表单时可以检查以前选择的值

此信息可以保存在$\u会话中,但他们需要在每次更改页面时提交表单。您可以更改链接来完成此操作

Javascript

您可以编写一些javascript来记住选择的内容,并将其作为cookie存储在用户浏览器中,这可以在用户每次单击按钮时更新。当页面加载时,javascript将检查cookies或本地存储,并加载前面的选项

当他们完成并提交表单时,您将清除javascript

基本示例

$('form input[type=radio]:checked')

一旦我有了更多信息,我将在发布表单后进一步充实这个答案,您可以在会话中保存值。当再次访问上一页或甚至第一次加载它时,读取会话的值并检查指定的无线电。如果您第一次访问页面,会话中将没有数据,因此不会检查任何人


您还可以使用JavaScript和Cookie生动地存储选定的值。

一个非常简化的解决方案:

<?php
   session_start(); // this needs to be at the top of all pages using $_SESSION (before anything else) else $_SESSION will always be empty
   if($_POST['vehicle']){
      $_SESSION['checkbox1'] = $_POST['vehicle'];
   }
print_r($_SESSION); // remove this line after testing. It will show you the contents of the $_SESSION, which is handy for seeing when variables are set within it
?>

<!DOCTYPE html>
<html>
<body>
<form action="" method="post">
   <input type="checkbox" name="vehicle" value="Bike"<?php if($_SESSION['checkbox1'] == "Bike"){ echo " checked"}?>>I have a bike<br />
   <input type="checkbox" name="vehicle" value="Car"<?php if($_SESSION['checkbox1'] == "Car"){ echo " checked"}?>>I have a car <br />#
   <input type="submit" value="Go" />
</form>
</body>
</html>
您可以在隐藏的输入区域中添加在第一页生成的唯一id,当发布该id时,该id可能构成会话变量名的一部分。从那里,信息将在$\u会话中以该变量名编制索引,以便更容易地将数据提取出来或按原样创建新的表单会话


希望我没有失去你。

你的意思是,如果他们浏览任何一页,他们的选择都应该被记住吗?服务器端还是用户端?本地存储可能是你最好的选择。@Pez Cuckow:我是说用户端。Madara Uchiha:好主意,但不确定检查用户对它的支持有多容易。单选按钮上已经有默认状态。1.如何用$\u会话中的信息替换它们?2.如何检测来自调查后期州的请求?我想用你的想法。您能建议我如何使用$\u会话中的信息更改checked=checked状态吗?我尝试了您的解决方案。问题是,在我的多步骤中,$_POST['vehicle']总是在form1第一步中起作用。我只能在下一页显示它,然后当我恢复时,它又是空的。我必须承认我不明白为什么这个变量在返回时重置。我忘了启动会话;在PHP代码的顶部,然后再执行其他操作。请查看编辑后的代码:S的新秀失误,哈哈不,我已经犯了。会议进行得很顺利。只是作为一种多形式,我使用action=/index.php?site=form2,所以form1上没有会话集