首页 > 解决方案 > 我可以在 HTML 表单的 action 属性中使用 php if else 语句处理表单吗?

问题描述

我正在编写一个表单来创建登录用户名和密码。

如果帐户创建成功,我希望用户被带到实际的登录表单。

我已经对正在传递的变量进行了一系列检查,$errcheck因此程序知道该做什么。如果有错误,$errcheck将设置为1。它的默认值为0.

如果输入字段有错误,将再次显示帐户创建表单,如果一切正常,则会将用户详细信息插入表中并将用户带到登录页面。

但是,每次将信息添加到表格后,我只能让页面重新加载。是否允许我对表单的操作部分进行操作?我继续并包含了我的所有代码,以防有任何问题。谢谢你。

<!DOCTYPE html>
    <head>
        <style>
            .error {color: #FF0000;}
        </style>
    </head>
    <body>
    <?php 
        $busow_namef = $busow_namel= $owner_email = $bus_psswd = $psswd_confirm = "";                
        $busname_ERR = $busowname_ERR = $owneremail_ERR = $psswd_ERR =           
        $psswdconfirm_ERR =  "";
        $errcheck = 0;

        if ($_SERVER["REQUEST_METHOD"]=="POST") {
            //??????????????????? Check Login information ???????????????????
            function test_input($data) {
                $data = trim($data);
                $data = stripslashes($data);
                $data = htmlspecialchars($data);
                return $data;
            }

            if (empty($_POST["busow_namef"])) {
                $busowname_ERR = "Business owner's name is required";
                $errcheck = 1;
            } else {
                $busownamef = test_input($_POST["busow_namef"]);
            }

            if (empty($_POST["busow_namel"])) {
                $busowname_ERR = "business owner's name is required";
                $errcheck = 1;
            } else {
                $busownamel = test_input($_POST["busow_namel"]);
            }

            if (empty($_POST["bus_psswd"]))  {
                $psswd_ERR = "You must enter a password.";
                $errcheck = 1;
            } else if ((mb_strlen($_POST["bus_psswd"])) < 8) {
                $psswd_ERR = "The password must be 8-10 characters long and only include numbers and letters.";  
                $errcheck = 1;
            } else {
                $bus_psswd = test_input($_POST["bus_psswd"]);
            }

            if (empty($_POST["psswd_confirm"])) {
                $psswdconfirm_ERR = "Please confirm password.";
                $errcheck= 1;
            } else if  ($_POST["psswd_confirm"] != $_POST["bus_psswd"]) {
                $psswdconfirm_ERR = "The passwords do not match.";
                $errcheck = 1;
            } else {
                $psswd = test_input($_POST["psswd_confirm"]); 
                $h_psswd = password_hash($psswd, PASSWORD_DEFAULT);
            }

            if (empty($_POST["tandc"])) {
                $checktandc_ERR= "You must accept the terms and conditions.";
                $errcheck= 1;
            } else {
                $tandc = test_input($_POST["tandc"]);
            }

            if (empty($_POST["owner_email"])) {
                $owneremail_ERR = "Please enter an email address.";
                $errcheck = 1;
            } else { 
                 $_POST["owner_email"] = (filter_var($_POST["owner_email"], FILTER_SANITIZE_EMAIL));
            }

            if (filter_var($_POST["owner_email"] , FILTER_VALIDATE_EMAIL)){
                $owneremail = $_POST["owner_email"];
            } else {  
                $owneremail_ERR = "Please enter a valid email address.";
                $errcheck = 1;
            }

            //???????????????? Connect to database ??????????????????????????
            $link = mysqli_connect('domain', 'user', 'passwd'); 
            if (!$link) { 
                die('Could not connect: ' . mysqli_error()); 
            } 

            mysqli_select_db(database, $link); 

            if (!mysqli_select_db(louisville_ky1, $link)) {
                echo "database not selected";
            } else { 
                $sql = "SELECT owner_email FROM 3bus_owners WHERE owner_email = '$owneremail' ";
                $result = mysql_query($sql, $link);
                if (mysql_num_rows($result) > 0 ) {
                    $errcheck = 1;
                    $owneremail_ERR =  "This email is already registered. Please register with another address or click login.";
                } else {
                    $errcheck = 0;
                    $query = "INSERT INTO 3bus_owners (owner_email, h_psswd, busow_namef, busow_namel) VALUES ('$owneremail', '$h_psswd', '$busownamef',    
'$busownamel')";
                    $result2 = mysql_query($query, $link);
               } //end if num rows >0
           }//end connection check

       } // ???????????????????? end if server request method ????????????????
    ?>

    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~Begin HTML FORM~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <h2>Create Business Login</h2>
    <br>
    <form method="post" action="<?php if ($errcheck = 1) { echo  
htmlspecialchars($_SERVER["PHP_SELF"]);
} else { echo 'ownersignin.php'; }?>"> 

        Business Owner's Name:<br> 
        First Name:<br><input type="text" name="busow_namef" value="<?php echo  
$busow_namef;?>">
        <span class="error">* <?php echo $busowname_ERR;?></span>
        <br>
        Last Name:<br><input type="text" name="busow_namel"value="<?php echo   
$busow_namel;?>">
        <span class="error">* <?php echo $busowname_ERR;?></span>
        <br>

        Business Owner's E-mail: *this will be your username for login and does not have to be posted in listing
        <br>
        <input type="text" name="owner_email" size="40"value="<?php echo  
$owner_email;?>">
        <span class="error">*<?php echo $owneremail_ERR;?></span> 
        <br><br>
        Password: <input type="password" name="bus_psswd" size="11" maxlength="10">
        <span class="error">*<?php echo $psswd_ERR;?></span> 
        <br>
        Confirm Password: <input type="password" name="psswd_confirm" size="11" maxlength="10">
        <span class="error">*<?php echo $psswdconfirm_ERR;?></span> 
        <br>
        <br>
        <input type="checkbox" name="tandc">I have read and accept the 
        <a href="/termsandconditions.php" target= "_blank">Terms and 
Conditions</a>.
        <span class="error">*<?php echo $checktandc_ERR;?></span>
        <br>
        <br>
        <input type="submit" name="submit" value="Create Login">
    </form>
</body>

标签: phphtmlformsvalidationaction

解决方案


报名成功后请勿再打印报名表。相反,将用户重定向到登录表单。

在所有验证检查之后,执行:

if (!$errcheck) {
    header("Location: ownersignup.php");
    exit;
}
?>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~Begin HTML FORM~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<h2>Create Business Login</h2>
<br>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
...

推荐阅读