我有一个基本的登录表单,我想添加一些验证。我想出了这些:
$errors = array();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(0 === preg_match("/.+@.+\..+/", $_POST['email'])){
$errors['email'] = "Please enter a valid email address";
}
if(0 === preg_match("/.{6,}/", $_POST['password'])){
$errors['password'] = "Please enter you correct password";
}
if(0 === count($errors)){
// SUBMIT THE FORM, <form action='auth.php' method='post'...
}
}
那么,我怎样才能完成最后一个IF部分,如果没有错误,它会提交表格?提前致谢
答案 0 :(得分:4)
我认为您正在尝试在需要JavaScript的情况下使用PHP。
如果您正在谈论实际在HTML页面上提交<form>
元素,那么您需要JavaScript。在这种情况下,PHP仅在提交表单时触发。
但是,如果您的意图不是提交表单元素而是基于经过验证的表单执行任务(或一系列任务),那么您只需要适当地包含您的逻辑。
例如:
if( count($errors) > 0 ){
// THERE IS A PROBLEM, RETURN THE ERRORS
include( 'myHTML.html' );
exit();
}
// If the above didn't fire, then we have no errors
echo( "Wonderful! Now we can add this information to a database, or something." );
答案 1 :(得分:2)
我想如果此代码在auth.php
中,那么您已经提交了表单。
以这种方式思考:无论如何都提交表单,但如果有错误则停止提交。您的流程可能如下所示:
<强> form.php的强>
<?php
if($_GET['error']){ echo '<p>There was a problem with your input</p>'; }
?>
<form method="post" action="auth.php">
<input ... />
<button type="submit">Submit</button>
</form>
<强> auth.php 强>
$errors = array();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(0 === preg_match("/.+@.+\..+/", $_POST['email'])){
$errors['email'] = "Please enter a valid email address";
}
if(0 === preg_match("/.{6,}/", $_POST['password'])){
$errors['password'] = "Please enter you correct password";
}
}
if(0 === count($errors)){
// do your form action as normal
}
else {
header('Location: form.php?error=1');
exit();
}
答案 2 :(得分:0)
我没有看到问题。您应该做的唯一事情就是将if-part向上移动,这样只有在请求方法发布时才会调用它。这解决了你的问题吗?如果没有,请详细描述您的问题。