dsmnedc798226 2015-09-17 13:45
浏览 96
已采纳

我的php显示验证错误,但IS不显示

I am in the early stages of making a registration page for my website. However, the basic form I have created is being validated by javascript and php to ensure the right data will be entered. Even when the javascript is showing no errors and allowing the form to submit, the PHP errors are still being flagged and stopping it. below is the code for the php and html form. Any help will be greatly appreciated, these things are normally a lot easier than anticipated but its driving me crazy as it isnt showing any syntax errors just the errors that i have set up for the user. The include files just have the mysql password and some basic functions for checking phone numbers. Thanks in advance HTML

<?php require_once("functions.inc"); ?>
<head>
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="register.js"></script>
    <link rel="stylesheet" href="form.css">
    <title>A Form</title>
</head>

<body>

    <form id="userForm" method="POST" action="register-process.php">
        <div>
            <fieldset>
                <legend>Registration Information</legend>
                <div id="errorDiv">
                    <?php 
                        if (isset($_SESSION['error']) && isset($_SESSION['formAttempt'])){
                            unset($_SESSION['formAttempt']);
                            print "errors encountered<br>
";
                            foreach ($_SESSION['error'] as $error) {
                                print $error . "<br>
";
                            }//end foreach
                        } // end if
                    ?>
                </div>

                 <label for="fname">First Name:* </label>
                <input type="text" id="fname" name="fname">
                <span class="errorFeedback errorSpan" id="fnameError">First Name is required</span>
                <br>

                 <label for="name">Last Name:* </label>
                <input type="text" id="lname" name="lname">
                <span class="errorFeedback errorSpan" id="lnameError">Last Name is required</span>
                <br>

                <label for="email">Email Address:* </label>
                <input type="text" id="email" name="email">
                <span class="errorFeedback errorSpan" id="emailError">Email is required</span>
                <br>

                <label for="password1">Password:* </label>
                <input type="password" id="password1" name="password1">
                <span class="errorFeedback errorSpan" id="password1Error">Password is required</span>
                <br>

                <label for="password2">Varify Password:* </label>
                <input type="password" id="password2" name="password2">
                <span class="errorFeedback errorSpan" id="password2Error">Password's do not match</span>
                <br>

                <label for="addr">Address: </label>
                <input type="text" id="addr" name="addr">
                <br>

                <label for="city">City: </label>
                <input type="text" id="city" name="city">
                <br>

                <label for="state">State: </label>
                <select name="state" id="state">
                    <option></option>
                    <option value="AL">Alabama</option>
                    <option value="CA">California</option>
                    <option value="CO">Colorado</option>
                    <option value="FL">Florida</option>
                    <option value="IL">Illinois</option>
                    <option value="NJ">New Jersey</option>
                    <option value="NY">New York</option>
                    <option value="WI">Winconsin</option>
                </select>
                <br>

                <label for="zip">ZIP: </label>
                <input type="text" id="zip" name="zip">
                <br>

                <label for="phone">Phone Number: </label>
                <input type="text" id="phone" name="phone">
                <span class="errorFeedback errorSpan" id="phoneError">Format: xxx-xxx-xxxx</span>
                <br>
                <br>

                <label for="work">Number Type:</label>
                <input class="radioButton" type="radio" name="phoneType" id="work" value="work">
                <label class="radioButton" for="work">Work</label>
                <input class="radioButton" type="radio" name="phoneType" id="home" value="home">
                <label class="radioButton" for="home">Home</label>
                <span class="errorFeedback errorSpan phoneTypeError" id="phoneTypeError">Please Choose an option.</span>
                <br>

                <input type="submit" id="submit" name="submit">
            </fieldset>
        </div>
    </form>

</body>

PHP register process.php

    <?php

require_once('functions.inc');

//prevent access if they havent submitted the form!!
if (!isset($_POST['submit'])) {
    die(header("location: register.php"));
}

$_SESSION['formAttempt'] = true;

if (isset($_SESSION['error'])) {
    unset($_SESSION['error']);
}

$_SESSION['error'] = array();

$required = array("fname","lname", "email", "password1", "password2");                   

//check required fields!
foreach ($required as $requiredField) {
    if (!isset($_POST[requiredField]) || $_POST[$requiredField] == "") {
        $_SESSION['error'][] = $requiredField . " is required.";
    }
}

if (!preg_match('/^[\w .]+$/',$_POST['fname'])) {
    $_SESSION['error'][] = "Name must be letters and numbers only.";
}
if (!preg_match('/^[\w .]+$/',$_POST['lname'])) {
    $_SESSION['error'][] = "Name must be letters and numbers only.";
}

if (isset($_POST['state']) && $_POST['state'] != "") {
    if (!isValidState($_POST['state'])) {
        $_SESSION['error'][] = "Please choose a valid state";
    }
}

if (isset($_POST['zip']) && $_POST['zip'] != "") {
    if (!isValidZip($_POST['zip'])) {
        $_SESSION['error'][] = "ZIP code error";
    }
}


if (isset($_POST['phone']) && $_POST['phone'] != "") {
    if (!preg_match('/^[\d]+$/', $_POST['phone'])) {
        $_SESSION['error'][] = "Phone numbner should be digits only.";
    } else if (strlen($_POST['phone']) < 10 ) {
        $_SESSION['error'] = "Phone number should be at least 10 digits.";
    }
    if (!isset($_POST['phoneType']) || $_POST['phoneType'] == "") {
        $_SESSION['error'][] = "Please choose a phone type.";
    } else {
        $validPhoneTypes = array("work","home");
        if (!in_array($_POST['phoneType'], $validPhoneTypes)) {
            $_SESSION['error'][] = "Please choose a valid phone type";
        }
    }
}

if (!filter_var($_POST['email'],FILTER_VALIDATE_URL)) {
    $_SESSION['error'][] = "Invalid e-mail address!";
}

if ($_POST['password1'] != $_POST['password2']) {
    $_SESSION['error'] = "Passwords do not match";
}

//Final Disposition
if (count($_SESSION['error']) > 0) {
    die (header("Location: register.php"));
} else {
    if (registerUser($_POST)) {
        unset($_SESSION['formAttempt']);
        die(header("Location: success.php"));
    } else {
        error_log("problem registering user: {$_POST['email']}");
        $_SESSION['error'][] = "Problem registering account";
        die(header("Location: register.php"));
    }
}

The extension is the rest of the process php file, i have commented where the errors are coming from.... Thanks Again..

if (count($_SESSION['error']) > 0) {
    die (header("Location: register.php"));
} else {
    if (registerUser($_POST)) {
        unset($_SESSION['formAttempt']);
        die(header("Location: success.php"));
    } else {
        error_log("problem registering user: {$_POST['email']}"); // THIS IS WHERE THE ERROR IS COMNING FROM
        $_SESSION['error'][] = "Problem registering account";
        die(header("Location: register.php"));
    }
}

function registerUser($userData) {
    $mysqli = new mysqli(DBHOST,DBUSER,DBPASS,DB);
    if ($mysqli->connect_errno) {
        error_log("Cannot connect to MySQL: " . $mysqli->connect_error);
        return false;
    }
    $email = $mysqli->real_escape_string($_POST['email']);
    //Check for an existing user
    $findUser = "SELECT id from Customer where email = '{$email}'";
    $findResult = $mysqli->query($findUser);
    $findRow = $findResult->fetch_assoc();
    if (isset($findRow['id']) && $findRow['id'] != "") {
        $_SESSION['error'][] = "A user with that email already exists";
        return false;
    }

    $lastname = $mysqli->real_escape_string($_POST['lname']);
    $firstname = $mysqli->real_escape_string($_POST['fname']);

    $cryptedPassword = crypt($_POST['password1']);
    $password = $mysqli->real_escape_string($cryptedPassword);

    if (isset($_POST['addr'])) {
        $street = $mysqli->real_escape_string($_POST['addr']);
    } else {
        $street = "";
    }

    if (isset($_POST['city'])) {
        $city = $mysqli->real_escape_string($_POST['city']);
    } else {
        $city = "";
    }

    if (isset($_POST['state'])) {
        $state = $mysqli->real_escape_string($_POST['state']);
    } else {
        $state = "";
    }

    if (isset($_POST['zip'])) {
        $zip = $mysqli->real_escape_string($_POST['zip']);
    } else {
        $zip = "";
    }

    if (isset($_POST['phone'])) {
        $phone = $mysqli->real_escape_string($_POST['phone']);
    } else {
        $phone = "";
    }

    if (isset($_POST['phoneType'])) {
        $phoneType = $mysqli->real_escape_string($_POST['phoneType']);
    } else {
        $phoneType = "";
    }

    $query = "INSERT INTO Customer (email,create_date,password,last_name,first_name,street,city,state,zip,phone,phone_type) " . "VALUES ('{$email}',NOW(),'{$password}','{$lastname}','{$firstname}'" . ",'{$street}','{$city}','{$zip}','{$phone}','{$phoneType}')";
    if ($mysqli->query($query)) {
        $id = $mysqli->insert_id;
        error_log("inserted {$email} as ID {$id}");
        return true;
    } else {
        error_log("Problem inserting {$query}");
                $_SESSION['error'][] = "HERE"; // THIS IS WHERE THE ERROR IS COMNING FROM
        return false;
    }
}
?>
  • 写回答

1条回答 默认 最新

  • dongqiulei1987 2015-09-17 18:27
    关注

    Your query has a bug in it. Column count isn't the same as value count. You forgot to pass in $state.

    $query = "INSERT INTO Customer (email,create_date,password,last_name,first_name,street,city,state,zip,phone,phone_type) " . "VALUES ('{$email}',NOW(),'{$password}','{$lastname}','{$firstname}'" . ",'{$street}','{$city}','{$state}', '{$zip}','{$phone}','{$phoneType}')";
        if ($mysqli->query($query)) {
            $id = $mysqli->insert_id;
            error_log("inserted {$email} as ID {$id}");
            return true;
        } else {
            error_log("Problem inserting {$query}");
            error_log("Problem inserting {$mysqli->error}"); // log the error
            $_SESSION['error'][] = "HERE"; // THIS IS WHERE THE ERROR IS COMNING FROM
            return false;
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题