尝试注册用户时出错

时间:2015-02-16 22:29:51

标签: php

所以我正在为我的网站编写注册表单。我已经编写了所有必要的文件,但是当我在注册表单中输入所有正确的详细信息时,页面只是刷新而不是重定向到register-success.php。任何帮助

以下是关于注册过程的所有代码:

<?php

require_once('functions.inc');

//Prevent access if they haven't 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("username", "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['username'])){
            $_SESSON['error'][] = "Username must contain onyl letters and numbers.";
    }

    if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)) {
            $_SESSION['error'][] = "Invalid email 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: register-success.php"));
            } else {
                    error_log("Problem registering user: {$_POST['email']}");
                    $_SESSION['error'][] = "Problem registering account";
                    die(header("Location:register.php"));
            }
    }

    function registerUser($userData) {
            $mysqli = new mysqli (DBHOST, DBUSER, DBPASS, DB);
            if ($mysqli->conntect_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 users where email = '{$email}'";
            $findResult = $mysqli->query($findUser);
            $findRow = $findResult->fetch_assoc();
            if(isset($findRow['id']) && $findRow['id'] != "") {
                    $_SESSION['error'][] = "A user with the email provided already exists.";
                    return false;
            }

            $username = $mysqli->real_escape_string($_POST['username']);

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

            $query = "INSERT INTO users ( create_date, email, password, username) ".
            "VALUES ('NOW(), '{$email}', '{$password}', '{$username}'";
            if ($mysqli->query($query)) {
                    $id = $mysqli->insert_id;
                    error_log("Inserted {$email} as ID {$id}");
                    return true;
            } else {
                    error_log("Problem inserting {$query}");
                    return false;
            }
    } //end function registerUser

&GT?;

我的日志中出现此错误:

  

[2015年2月17日00:03:20欧洲/柏林]问题插入INSERT INTO用户(create_date,电子邮件,密码,用户名)VALUES(NOW(),'123 @123.com','$ 1 $ Xo ..U65。$ A8zl / 2CaTGSs0ZvRPe6wy1','1'

     

[2015年2月17日00:03:20欧洲/柏林]注册用户的问题:123@123.com

1 个答案:

答案 0 :(得分:0)

尝试在registerUser方法中使用它:

$query = "INSERT INTO users (`create_date`, `email`, `password`, `username`) VALUES (NOW(), '{$email}', '{$password}', '{$username}')";