【发布时间】:2014-05-20 07:31:22
【问题描述】:
我有一个 PHP/mysqli 生成的表单,它在 mysqli 查询中使用 ORDER BY rand() 来随机化决策任务中的选项(使用找到的代码 here)。
我想出了一种方法来验证用户输入以匹配一组预定义的值(请参阅链接问题的答案),如果不满足验证条件,它将触发页面重新加载。但是,这会导致使用不同的随机顺序生成表单表。我想以与使用 php 加载的第一页相同的顺序显示表单表。此外,我想echo 用户在输入字段中输入值(以便用户可以看到她/他输入的内容)。
有没有一种相对简单的方法可以实现这一点?我研究过使用多维数组并将数据存储在$_SESSION 中,但似乎没有一个解决方案适用于这个问题。
【问题讨论】:
-
您可以使用基于 JS 的验证。检查这个:plugins.jquery.com/validate
-
谢谢,我熟悉 jQuery 验证方法。我现在正在寻找服务器端解决方案。
-
您还可以在表单中添加隐藏字段以在其中存储所有必要的信息。
-
而且您绝对不应该在失败后重新加载页面。使用 $_POST 数据来填充用户输入的字段。这也解决了您丢失表单状态的问题。
-
我看不出为什么在会话中存储必要的信息应该不起作用。您可以尝试的另一种方法是使用您自己选择的值(可能通过 PHP 的
rand预先确定)为RAND()函数播种 - 每次相同的种子值都会产生相同的“随机”结果。您可以将该值与您的表单一起传递(或将其放入会话中),如果您必须重新生成相同的表单,则将其传递给 MySQL 的 RAND(),否则您只会得到一个新的随机值。