我有一个textarea,我试图在提交表单之前验证某人是否已填写。我正在使用PHP完成所有验证服务器端。
我有两个想法。之一:
1)将表单提交给自己并让字段在同一页面上验证自己,然后重定向到表单将更新我的数据库的页面。我遇到的问题是,由于它是自己发布的,一旦页面重定向,我就无法使用POST值,因为它们不再有效。
2)所以我想我只是在第二页(表单最初设置为发布到的页面)上进行验证。这是我的页面代码,其中'description'是textarea的名称:
session_start();
if(!$_POST['description']){
echo "<script>alert(\"Please fill out all fields\");</script>";
header("location:post_job.php");
}
然后它重定向回到填写表单的页面。我收到了这个错误:
Warning: Cannot modify header information - headers already sent by (output started at siteinfo/site/checkjob.php:4) in siteinfo/site/checkjob.php on line 5
第五行是标题行(因此第四行显然是回声线)。我不明白为什么它会创建该错误,因为我还没有发送标题。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
试试这个
session_start();
if(!$_POST['description']){
echo "<script>alert(\"Please fill out all fields\");";
echo "window.location.href='post_job.php';";
echo "</script>";
}
虽然我必须添加你打算显示你的消息的方式不是很好。在提交表单之前通过Ajax或javascript进行验证是一条很好的选择。如果在客户端系统上禁用了javascript,请将此方式保留为备份计划。
答案 1 :(得分:0)
带有标签的echo将输出发送到浏览器。使用首选的JavaScript方式重定向脚本标记。