【问题标题】:How to keep the infromation filled in the form after invalid input输入无效后如何保留表单中填写的信息
【发布时间】:2022-01-10 13:28:17
【问题描述】:

我正在尝试开发一个 PHP 页面来与 MySQL 交互。为了在输入无效后保留表单中的值,我尝试使用 session_cache_limiter('private, must-revalidate') 函数和 header('Cache-control: private, must-revalidate')。但是,这两个功能都不起作用。 页面刷新后,表单中的所有内容都消失了。我不知道问题出现在哪里。谢谢你的帮助! 这是 session_cache_limiter 函数代码,我将它添加在 PHP 代码块的最开始,在 session_start 函数之前。

<?php
    session_cache_limiter('private, must-revalidate'); 
    session_start();
?>
<!DOCTYPE HTML>
<html>
...
</html>

对于标头函数,当发生无效输入时,我将其添加到 if-else 结构中。所以代码是:

...
<body>
<?php
if(preg_match('/[A-Z][a-z]*\s[A-Z][a-z]*/',$_REQUEST['name']) != 1){
            header('Cache-control: private, must-revalidate');
            echo "<script>alert('invalid name!')</script>";
            
        }else if(preg_match('/[\w]+(\.[\w]+)*@[\w]+\.[\w]+/i',$_REQUEST['email']) != 1){
            header('Cache-control: private, must-revalidate');
            echo "<script>alert('invalid email!')</script>";
            
        }else{
          ...(the pdo request for MySQL)...
        }
...
?>
</body>
...

我没有尝试将这两个功能混合在一起,而是分别实现它们。我希望就问题所在以及如何解决这些问题寻求一些帮助。谢谢一百万!

【问题讨论】:

  • 那些标题与您的目标无关。如果要重新显示输入的数据,必须在正确的位置回显。还可以考虑在表单中的字段旁边回显错误消息,以便用户可以一次看到所有错误消息。使用警报有点 1990 年代

标签: php html mysql


【解决方案1】:

1.您可以使用ajax,所以提交后页面不会重新加载。 2.您可以保存会话填写的数据。 3.您可以将数据填充保存为cookie。

只推荐第一个,但所有的都可以。

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 2014-07-12
    • 2013-07-05
    • 1970-01-01
    • 2019-08-24
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多