如何让form标签中的action属性正常工作?

时间:2016-06-24 14:26:31

标签: php html forms validation

我知道标签表单有一个名为action的属性,我知道动作是如何工作的,这就是我使用它的方式

<form method="post" action = "registerd.php">
</form>

registerd.php页面也存在。 现在我正在使用php验证在标签表单中进行一些验证,但为什么它跳转到registerd.php页面而不首先验证值? 有没有其他解决方案,而不是使用PHP代码末尾的标题,如:

header("location : registerd.php")

这是我写的整个代码 非常感谢您提前

<div id = "content">
            <?php
                $fnameErr = "";
                $lnameErr = "";
                $idErr = "";
                $placeErr = "";
                $dateErr = "";
                $emailErr = "";
                $pswErr = "";
                $file;
                $content = "";
                function test_input($data) {
                    $data = trim($data);
                    $data = stripslashes($data);
                    $data = htmlspecialchars($data);
                    return $data;
                }
                if(isset($_POST['register'])){
                    if(isset($_POST['firstname'])){
                        if(!empty($_POST['firstname'])){
                            if(strlen($_POST['firstname'])>1){
                                if(preg_match("/[a-zA-Z]+/", $_POST['firstname'])==1){
                                    $firstname = test_input($_POST['firstname']);
                                    $content .= "firstname:";
                                    $content .= $firstname; 
                                    $content .= " ";
                                }
                                else{   
                                    $fnameErr = "your first name should only include letters";
                                }
                            }
                            else{
                                $fnameErr = "your first name must be at least 2 characters";
                            }
                        }
                        else{
                            $fnameErr = "enter your first name";
                        }
                    }
                    else{
                        $fnameErr = "enter your first name";
                    }
                    if(isset($_POST['lastname'])){
                        if(!empty($_POST['lastname'])){
                            if(strlen($_POST['lastname'])>3){
                                if(preg_match("/[a-zA-Z]+/", $_POST['lastname'])==1){
                                    $lastname = test_input($_POST['lastname']);
                                    $content .= "lastname:";
                                    $content .= $lastname;
                                    $content .= " ";
                                }
                                else{
                                    $lnameErr = "your last name should only include letters";
                                }
                            }
                            else{
                                $lnameErr = "your last name must be at least 2 characters";
                            }
                        }
                        else{
                            $lnameErr = "enter your last name";
                        }
                    }
                    else{
                        $lnameErr = "enter your last name";
                    }

                    if(isset($_POST['idnum'])){
                        if(!empty($_POST['idnum'])){
                            if(strlen($_POST['idnum'])==10){
                                if(preg_match("/[0-9]{10}/", $_POST['idnum'])==1){
                                    $idnum = test_input($_POST['idnum']);
                                    $content .= "ID_No.:";
                                    $content .= $idnum;
                                    $content .= " ";
                                }
                                else{
                                    $idErr = "your ID number should only include digits";
                                }
                            }
                            else{
                                $idErr = "your ID number must be 10 digits";
                            }
                        }
                        else{
                            $idErr = "enter your ID number";
                        }
                    }
                    else{
                        $idErr = "enter your ID number";
                    }
                    if(isset($_POST['placeOfBirth'])){
                        if(!empty($_POST['placeOfBirth'])){
                            if(strlen($_POST['placeOfBirth'])>2){
                                if(preg_match("/[a-zA-Z]+/", $_POST['placeOfBirth'])==1){
                                    $placeOfBirth = test_input($_POST['placeOfBirth']);
                                    $content .= "placeOfBirth:";
                                    $content .= $placeOfBirth;
                                    $content .= " ";
                                }
                                else{
                                    $placeErr = "your place of birth should only include digits";
                                }
                            }
                            else{
                                $placeErr = "your place of birth must be at least 3 letters";
                            }
                        }
                    }   
                    if(isset($_POST['date'])){
                        if(!empty($_POST['date'])){
                            $date = test_input($_POST['date']);
                            $content .= "date:";
                            $content .= $date;
                            $content .= " ";
                        }
                        else{
                            $dateErr = "enter your date of birth";
                        }
                    }
                    else{
                        $dateErr = "enter your date of birth";
                    }


                    if(isset($_POST['email'])){
                        if(!empty($_POST['email'])){
                                $email = test_input($_POST['email']);
                                $content .= "email:";
                                $content .= $email;
                                $content .= " ";
                        }
                        else{
                            $emailErr = "enter your email";
                        }
                    }
                    else{
                        $emailErr = "enter your email";
                    }

                    if(isset($_POST['password'])){
                        if(!empty($_POST['password'])){
                                if(preg_match("/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$/", $_POST['password'])==1){
                                    $password = test_input($_POST['password']);
                                    $content .= "password:";
                                    $content .= $password;
                                    $content .= " ";
                                }
                                else{
                                    $pswErr = "your password should have numbers, uppercase<br/> & lowercase letters";
                                }
                        }
                        else{
                            $pswErr = "enter your password";
                        }
                    }
                    else{
                        $pswErr = "enter your password";
                    }
                    if(file_exists($email.".txt")){
                        echo(
                            "<script>
                                alert('this email already exists!');
                            </script>"
                            );
                        $firstname = $lastname = $idnum = $date = $placeOfBirth = $password = "";
                    }
                    else{
                        $file = fopen($email.".txt","a+") or die("Unable to open file!");
                        fwrite($file, $content);
                        fclose($file);
                        header("location: registered.php");
                    }
                }
            ?>
            <fieldset id = "fieldset">
                <legend><h1 class = "reg" >Register Form</h1></legend>
                <form method="post" action="#" enctype = "multipart/form-data">
                <table class = "table">
                    <tr>
                        <td  class = "labels">
                            <p class = "star">*</p> First Name
                        </td>
                        <td><input class = "inclass" type="text" required="required" placeholder="Please enter your first name" id = "firstname" name="firstname" onclick = "colorBorder(this.id)"/></td>
                    </tr>
                    <td  class = "err">
                        <span>
                                <?php
                                    echo $fnameErr;
                                ?>
                        </span>
                    </td>
                    <tr>
                        <td class = "labels"><p class = "star">*</p> Last Name</td>
                        <td><input class = "inclass" type="text" required="required" placeholder="Please enter your last name" name="lastname" id = "lastname" onclick = "colorBorder(this.id)"/></td>
                    </tr>
                    <td  class = "err">
                        <span>
                                <?php
                                    echo $lnameErr;
                                ?>
                        </span>
                    </td>
                    <tr>
                        <td class = "labels">Gender</td>
                        <td>
                            <input class = "inclass" type="radio" name="gender" value="0" /><p class = "radio" >Male</p>
                            <input class = "inclass" type="radio" name="gender" value="1" /><p class = "radio" >Female</p>
                        </td>
                    </tr>
                    <tr>
                        <td class = "labels"><p class = "star">*</p> ID Number</td>
                        <td><input class = "inclass" type="text" id="idnum" required="required" placeholder="Please enter your ID number" name="idnum" onclick = "colorBorder(this.id)"/></td>
                    </tr>
                    <td  class = "err">
                        <span>
                                <?php
                                    echo $idErr;
                                ?>
                        </span>
                    </td>
                    <tr>
                        <td class = "labels">Place of Birth</td>
                        <td><input class = "inclass" type="text" placeholder="Please enter your place of birth" name="placeOfBirth" id = "place" onclick = "colorBorder(this.id)"/></td>
                    </tr>
                    <td  class = "err">
                        <span>
                                <?php
                                    echo $placeErr;
                                ?>
                        </span>
                    </td>
                    <tr>
                        <td class = "labels"><p class = "star">*</p> Date Of Birth</td>
                        <td><input class = "inclass" type="date" id = "date" name="date"/></td>
                    </tr>
                    <td  class = "err">
                        <span>
                                <?php
                                    echo $dateErr;
                                ?>
                        </span>
                    </td>
                    <tr>
                        <td class = "labels"><p class = "star">*</p> Email</td>
                        <td><input class = "inclass" type="email" required="required" placeholder="Please enter your email" name="email" id = "email" onclick = "colorBorder(this.id)"/></td>
                    </tr>
                    <td  class = "err">
                        <span>
                                <?php
                                    echo $emailErr;
                                ?>
                        </span>
                    </td>
                    <tr>
                        <td class = "labels"><p class = "star">*</p> Passwords</td>
                        <td><input class = "inclass" type="password" required="required" placeholder="Please enter your password" name="password" id = "password" onclick = "colorBorder(this.id)"/></td>
                    </tr>
                    <td  class = "err">
                        <span>
                                <?php
                                    echo $pswErr;
                                ?>
                        </span>
                    </td>
                    <tr>
                        <td><input type="submit" name="register" value="register" class="save"/></td>
                        <td><input type="reset" name = "reset" id = "reset"/></td>
                    </tr>
                </table>
                </form>
            </fieldset>
        </div>

3 个答案:

答案 0 :(得分:2)

在register.php上记下你的php验证码,如果值不是验证,则使用标题功能重定向到你的表单页面。

header("location : form.php")

答案 1 :(得分:1)

下面采用的方法绕过了isset的多余用法。这也意味着在检查是否设置了提交按钮值之后检查所有合并到代码的一部分的$_POST['data']变量。函数function test_input($data) {...}被完全删除,因为上面提到的部分也做了完全相同的事情...为了简洁起见,Multiline String-Concatenation被压缩到一行......似乎也有一些无关的{{1}遍布整个地方的条款。这些被忽略了,因为它们可能为原始海报服务(尽管不太可能)。最后,确保将表单发回到Current,Executing Script(考虑到Form Data的处理在同一个脚本中);我们将保留表单EMPTY的if(){...}else{...}属性:意味着表单会自动回发给自己 - 当前脚本。

action

答案 2 :(得分:1)

我相信你的问题的解决方案是将你的代码,一个文件中的HTML(“form.php”),另一个文件中的PHP验证(“validate.php”)分开:

  • “form.php”将收集数据,表单的“动作”将执行“validate.php”。
  • “validate.php”将验证数据,如果没有发现错误,它会“标题”为“registered.php”,如果发现错误,它会将消息存储在$ _SESSION中,并将“header”存储回“form.php” “,将显示消息。

示例:

<强> form.php的

<?php
session_start(); // NECESSARY TO USE $_SESSION.
?>
<html>
  <body>
    <form action="validate.php" method="post">
      Enter 0 or 1 : <input type="text" name="num"/>
      <br/>
      <input type="submit" value="Submit"/>
    </form>
<?php
// CHECK IF THERE IS ERROR MESSAGE FROM VALIDATION.
if ( isset( $_SESSION[ "err_msg" ] ) )
   { echo $_SESSION[ "err_msg" ];
     unset( $_SESSION[ "err_msg" ] ); // VERY IMPORTANT : DESTROY ERROR MESSAGE.
   }
?>
  </body>
</html>

<强> validate.php

<?php
session_start(); // NECESSARY TO USE $_SESSION.
if ( isset( $_POST[ "num" ] ) ) // IF CALLED FROM "FORM.PHP"
     { $num = $_POST[ "num" ];
       if ( ( $num == "0" ) || ( $num == "1" ) ) // VALIDATE NUMBER.
            header( "Location: registered.php" ); // NO ERROR.
       else { $_SESSION[ "err_msg" ] = "Number must be 0 or 1."; // MESSAGE.
              header( "Location: form.php" ); // ERROR.
            }
     }
else header( "Location: form.php" ); // WASN'T CALLED FROM "FORM.PHP".
?>

使用给定名称创建两个文件并复制粘贴以前的代码,然后运行“form.php”。

您必须在“validate.php”中粘贴所有大量验证。您的验证有很多消息,我建议您在每条消息后插入一个“标题”,然后立即添加“退出”(因为“标题”不会​​停止执行脚本)。