PHP:IF声明问题

时间:2011-08-31 23:02:05

标签: php if-statement

我有一个基本的登录表单,我想添加一些验证。我想出了这些:

$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部分,如果没有错误,它会提交表格?提前致谢

3 个答案:

答案 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向上移动,这样只有在请求方法发布时才会调用它。这解决了你的问题吗?如果没有,请详细描述您的问题。