【发布时间】: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 年代