php 数据未处理,有人可以查看我的代码吗?

标签 php jquery html mysql ajax

我正在尝试设置一个注册页面,该页面还散列并向散列数据添加盐,但服务器上没有任何处理并且我没有收到控制台错误,有人可以告诉我我哪里出错了吗?

html代码

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script 
src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js">

</script>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="createScript.js"></script>
</head>
    <body>
        <div style="margin-left: 100px;">
            <form method="POST" action="index.html">
                <label>Enter your first name</label><br><br>
                <input type="text" id="firstName" name="firstName"><br><br>
                <label>Enter your last name</label><br><br>
                <input type="text" id="lastName" name="lastName"><br><br>
                <label>Enter a username (this will only be used to login)</label><br><br>
                <input type="text" id="userName" name="userName"><br><br>
                <label>Re-enter that username</label><br><br>
                <input type="text" id="reuserName" name="reuserName"><br><br>
                <label>Enter your email address</label><br><br>
                <input type="email" id="emailAddress" name="emailAddress"><br><br>
                <label>Re-enter your email address</label><br><br>
                <input type="email" id="reemailAddress" name="reemailAddress"><br><br>
                <label>Enter a password</label><br><br>
                <input type="password" id="password" name="password"><br><br>
                <label>Enter the password again</label><br><br>
                <input type="password" id="rePassword" name="rePassword"><br><br>
                <input type="submit" id="register" name="register">
            </form>
        </div>
    </body>
</html>

connect.php代码

<?php
    if (!defined('HOST')) define("HOST", "localhost");
    if (!defined('USER')) define("USER", "root");
    if (!defined('PASSWORD')) define("PASSWORD", "");
    if (!defined('DB')) define("DB", "socialmedia");

    $connect = new mysqli(HOST, USER, PASSWORD, DB);

    if ($connect->connect_error) 
    {
        die("Connection failed: " . $conn->connect_error);
    } 

?> <!-- PHP -->

create.php代码

<?php
require 'connect.php';


if ($_SERVER ['REQUEST_METHOD'] == 'POST') {                                            

        //Check for input
        if((isset($_POST['firstName'])) && (!empty($_POST['firstName'])) &&
        (isset($_POST['lastName'])) && (!empty($_POST['lastName'])) &&
        (isset($_POST['userName'])) && (!empty($_POST['userName'])) &&
        (isset($_POST['reuserName'])) && (!empty($_POST['reuserName'])) &&
        (isset($_POST['emailAddress'])) && (!empty($_POST['emailAddress'])) &&
        (isset($_POST['reemailAddress'])) && (!empty($_POST['reemailAddress'])) &&
        (isset($_POST['password'])) && (!empty($_POST['password'])) &&
        (isset($_POST['rePassword'])) && (!empty($_POST['rePassword']))) {      

            //Check first name
            if(isset($_POST['firstName'])==0 || $_POST['firstName']==" ") {

                //Error
                ob_start();
                echo "Please enter a valid first name";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['firstName']);
            }//End of first name failure

            else {
                //Continue
                $firstName = mysqli_real_escape_string($connect, $_POST['firstName']);
            }//End of first name success

            //Check last name
            if(isset($_POST['lastName'])==0 || $_POST['lastName']==" ") {

                //Error
                ob_start();
                echo "Please enter a valid last name";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['lastName']);
            }//End of last name failure

            else {
                //Continue
                $lastName = mysqli_real_escape_string($connect, $_POST['lastName']);
                $fullName = mysqli_real_escape_string($connect, $firstName . " " . $lastName);
            }//End of last name success

            //Check username
            if(isset($_POST['userName'])==0 || $_POST['userName']==" ") {

                //Error
                ob_start();
                echo "Please enter a valid username";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['userName']);
            }//End of username failure

            else {
                //Continue
                $userName = mysqli_real_escape_string($connect, $_POST['userName']);
            }//End of usernamesuccess

            //Check reusername
            if(isset($_POST['reuserName'])==0 || $_POST['reuserName']==" ") {
                //Error
                ob_start();
                echo "Please enter a valid username";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['reuserName']);
            }//End of reusername failure
            elseif ($_POST['userName'] === $_POST['reuserName']) {
                //Error
                ob_start();
                echo "Please enter matching usernames";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['reuserName']);
            }
            else
            {
                //Continue
                $reuserName = mysqli_real_escape_string($connect, $_POST['reuserName']);
                $hashedUserName = mysqli_real_escape_string($connect, hash('sha512', $userName));
            }//End of reusername success

            //Check email
            if(!filter_var($_POST['emailAddress'], FILTER_VALIDATE_EMAIL)) {
                //Error
                ob_start();
                echo "Please enter a valid email address";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['emailAddress']);
            }//End of email failure

            else {
                //Continue
                $emailAddress = mysqli_real_escape_string($connect, $_POST['emailAddress']);
            }//End of email success

            //Check reemail
            if(!filter_var($_POST['reemailAddress'], FILTER_VALIDATE_EMAIL)) {
                //Error
                ob_start();
                echo "Please enter a valid email address";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['reemailAddress']);
            }//End of reemail failure
            elseif ($_POST['emailAddress'] === $_POST['reemailAddress']) {
                //Error
                ob_start();
                echo "Please enter matching email addresses";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['reemailAddress']);
            }
            else {
                //Continue
                $reemailAddress = mysqli_real_escape_string($connect, $_POST['reemailAddress']);
            }//End of reemail success                   

            //Check password
            if(isset($_POST['password'])==0 || $_POST['password']==" ") 
            {
                //Error
                ob_start();
                echo "Please enter a valid password";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['password']);
            }//End of password failure
            else
            {
                //Continue
                $password = mysqli_real_escape_string($connect, $_POST['password']);
            }//End of password success

            //Check repassword 
            if(isset($_POST['rePassword'])==0 || $_POST['rePassword']==" ") 
            {
                //Error
                ob_start();
                echo "Please enter a valid password";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['rePassword']);
            }//End of repassword  failure
            elseif ($_POST['password'] === $_POST['rePassword']) {
                //Error
                ob_start();
                echo "Please enter matching passwords";
                exit;
                ob_end_flush();

                //Free Resources
                unset($_POST['rePassword']);
            }
            else
            {
                //Continue
                $rePassword = mysqli_real_escape_string($connect, $_POST['rePassword']);
                $hashPassword = mysqli_real_escape_string($connect, hash('sha512', $password));
                $saltedHashPassword = mysqli_real_escape_string($connect, hash('sha512', $userName . "" . $password));
            }//End of repassword success  

            //Insert data into users database
            $sql = "INSERT INTO users(idusers, name, username, hashedusername, email, password, unsaltedhashpassword, saltedhashpassword)
             VALUES ('$fullName', '$userName', '$hashedUserName', '$email', '$password', '$hashedPassword', '$saltedHashPassword');";

            if($connect->query($sql) === TRUE)
            {
                ob_start();
                echo "<script type='text/javascript'>alert('New contact created.');</script>";
                ob_end_flush();
            }//End of INSERT success
            else 
            {
                ob_start();
                echo "<script type='text/javascript'>alert('Error: ' . $sql . $connect->error;');</script>";
                ob_end_flush();
            }//End of INSERT Failed

        }//Check Data
    }//Get Post
?>
<html>
<head>
    <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    <script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="createScript.js"></script>
</head>
</html>

javascript代码

$(document).ready(function(){
     $("#register").click(function(){   
          firstName=$("#firstName").val();
          lastName=$("#lastName").val();
          userName=$("#userName").val();
          reuserName=$("#reuserName").val();
          emailAddress=$("#emailAddress").val();
          reemailAddress=$("#reemailAddress").val();
          pass=$("#password").val();
          rePassword=$("#rePassword").val();
          $.ajax({
           type: "POST",
           url: "create.php",
            data: 
            "firstName="+firstName+
            "&lastName="+lastName+
            "&userName="+userName+
            "&reuserName="+reuserName+
            "&emailAddress="+emailAddress+
            "&reemailAddress="+reemailAddress+
            "&password="+pass+
            "&rePassword="+rePassword,
           success: function(html){    
            if(html=='true')    {
             console.log("Submitted!");
            }
            else if(html=='false'){
             console.log("Error!");
            }
            else{
             console.log("Error!"+html);
            }
           },
           beforeSend:function()
           {
           },
           error: function(e)
           {
                console.log("Error!");
                console.log(e);             
           }
          });
        return true;
    });
});

用户.sql

CREATE TABLE IF NOT EXISTS `users` (
  `idusers` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) NOT NULL,
  `username` varchar(45) NOT NULL,
  `hashedusername` varchar(128) NOT NULL,
  `email` varchar(45) NOT NULL,
  `password` varchar(45) NOT NULL,
  `unsaltedhashpassword` varchar(128) NOT NULL,
  `saltedhashpassword` varchar(128) NOT NULL,
  PRIMARY KEY (`idusers`),
  UNIQUE KEY `idusers_UNIQUE` (`idusers`),
  UNIQUE KEY `username_UNIQUE` (`username`),
  UNIQUE KEY `hashedusername_UNIQUE` (`hashedusername`),
  UNIQUE KEY `email_UNIQUE` (`email`),
  UNIQUE KEY `saltedhashpassword_UNIQUE` (`saltedhashpassword`)
)

提前感谢您的帮助!

最佳答案

这可能对您有帮助:

从表单中删除您的操作标签,因为它正在将数据提交到 index.html,这是错误的。

将您的 .click() 更改为:

$("#register").click(function(e){
        e.preventDefault();

          firstName=$("#firstName").val();
          lastName=$("#lastName").val();
          userName=$("#userName").val();
          reuserName=$("#reuserName").val();
          emailAddress=$("#emailAddress").val();
          reemailAddress=$("#reemailAddress").val();
          pass=$("#password").val();
          rePassword=$("#rePassword").val();
          $.ajax({
           type: "POST",
           url: "create.php",
            data: 
            "firstName="+firstName+
            "&lastName="+lastName+
            "&userName="+userName+
            "&reuserName="+reuserName+
            "&emailAddress="+emailAddress+
            "&reemailAddress="+reemailAddress+
            "&password="+pass+
            "&rePassword="+rePassword,
           success: function(html){    
            if(html=='true')    {
             console.log("Submitted!");
            }
            else if(html=='false'){
             console.log("Error!");
            }
            else{
             console.log("Error!"+html);
            }
           },
           beforeSend:function()
           {
           },
           error: function(e)
           {
                console.log("Error!");
                console.log(e);             
           }
          });
        return true;
    });

我刚刚添加了 e.preventDefault(),因为您的按钮类型是 "submit",因此它会提交表单。在 ajax 调用中,您无需重新加载或重定向到任何页面即可保存数据或发送数据。 ajax 为您完成。

这应该会保存您的数据,因为您已经创建了 create.php

You can also add onsubmit="return false" attribute in your form if e.preventDefault() is not your choice. Or Change the button type from submit to button and this won't submit your form.

PS:如果您觉得合适,请尝试将表格序列化,这样您就可以省去自己准备数据的困惑。如果需要,试试这个:

 url : "page_url.php",
 data : $('#your_form_id').serialize(),

这对您有用,您可以摆脱那些 .val() 代码行。

干杯!

关于php 数据未处理,有人可以查看我的代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50400082/

相关文章:

求和多列的 PHP 和 MYSQL 查询

javascript - 如何在数据表中显示多个筛选下拉列表?

javascript - 提交后如何收到成功消息

php - 当测试外部Mysql连接时,我得到CDbConnection failed to open the DB connection

php - 在 Smarty 中连接变量和字符串以包含文件

php - 将mysql数据显示为数组

javascript - Selenium Webdriver 自动完成文本框

javascript - 找到目标元素外部的文本?

jquery - 如何使用 jQuery 从多个 <td> 中获取其中一个 <td> 的值?

html - 如何使这个下拉菜单在导航栏下方全宽?