网站注册无效

时间:2016-02-14 12:46:59

标签: php html web-services

我正在建立一个网站并使用表格进行注册。我的error_log中没有任何错误。所以我无法理解我的问题究竟在哪里。我把我的代码放在这里也许你可以帮助我。

这段代码是我的注册函数:

 public function storeUser($name, $surname, $email,$age, $sex, $status, $password) 
{
try{
    $uuid = uniqid('', true);

        $hash = $this->hashSSHA($password);
        $encrypted_password = $hash["encrypted"]; // encrypted password
        $salt = $hash["salt"]; // salt
        $stmt = $this->conn->prepare("INSERT INTO users(unique_id, name, surname, email, encrypted_password, age, sex, status, salt, created_at) VALUES(?,?,?,?,?,?,?,?,?,NOW())");
        $stmt->bind_param("sssssssss", $uuid, $name, $surname,  $email, $encrypted_password, $age, $sex, $status, $salt);
        $result = $stmt->execute();
        $stmt->close();

        // check for successful store
        if ($result) 
        {
            $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
            $stmt->bind_param("ssssssssssss", $row_user_id, $row_user_name, $row_surname, $row_user_email, $row_user_encryptedpass, $row_user_salt, $row_age, $row_sex, $row_status , $row_user_createdat, $row_user_uniqueid, $row_user_updatedat);
            $stmt->execute();
            $user = $stmt->get_result()->fetch_assoc();

$user = array(
     'id' => $row_user_id, 
     'name' => $row_user_name,
     'surname' => $row_surname,
     'email' => $row_user_email,
     'encrypted_password' => $row_user_encryptedpass,
     'salt' => $row_user_salt,
     'age' => $row_age,
     'sex' => $row_sex,
     'status' => $row_status,
     'created_at'=>$row_user_createdat,
     'unique_id' => $row_user_uniqueid,
     'updated_at' => $row_user_updatedat,
);
            $stmt->close();
            return $user;
        } 
        else 
        {
            return false;
        }
        }
        catch(Exception $e)
        {
            System.out.println("Exception : " + $e.getMessage());
            }

    }//end of storeUser

    /**
     * Get user by email and password
     */
    public function getUserByEmailAndPassword($email, $password) 
    {

        $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");

        $stmt->bind_param("s", $email);

        if ($stmt->execute()) 
        {
          $stmt->bind_result($row_user_id, $row_user_name, $row_surname, $row_user_email, $row_user_encryptedpass, $row_user_salt, $row_age, $row_sex, $row_status , $row_user_createdat, $row_user_uniqueid, $row_user_updatedat);
          $stmt->fetch();

$user = array(
     'id' => $row_user_id, 
     'name' => $row_user_name,
     'surname' => $row_surname,
     'email' => $row_user_email,
     'encrypted_password' => $row_user_encryptedpass,
     'salt' => $row_user_salt,
     'age' => $row_age,
     'sex' => $row_sex,
     'status' => $row_status,
     'created_at'=>$row_user_createdat,
     'unique_id' => $row_user_uniqueid,
     'updated_at' => $row_user_updatedat,
    );
            $stmt->close();
            return $user;
        } 
        else 
        {
            return NULL;
        }
    }

这是我上面调用的另一个php:

require_once 'include/Functions-reg-log.php';
$db = new DB_Functions();

// json response array
try{
$response = array("error" => FALSE);
if (isset($_POST['first_name']) && isset($_POST['last_name']) && isset($_POST['email']) && isset($_POST['Age']) && isset($_POST['gender']) && isset($_POST['status']) && isset($_POST['password']) && isset($_POST['t_and_c'])) 
{

    // receiving the post params
    $name = $_POST['name'];
    $surname = $_POST['surname'];
    $email = $_POST['email'];
    $age = $_POST['age'];
    $sex = $_POST['sex'];
    $status = $_POST['status'];
    $password = $_POST['password'];


    // check if user is already existed with the same email
    if ($db->isUserExisted($email)) {
        // user already existed
        $response["error"] = TRUE;
        $response["error_msg"] = "User already existed with " . $email;
        echo json_encode($response);
    } 
    else 
    {
        // create a new user
        $user = $db->storeUser($name,$surname, $email, $age, $sex, $status, $password);
        if ($user) {
            // user stored successfully
            $response["error"] = FALSE;
            $response["uid"] = $user["unique_id"];
            $response["user"]["name"] = $user["name"];
        $response["user"]["surname"] = $user["surname"];
            $response["user"]["email"] = $user["email"];
            $response["user"]["age"] = $user["age"];
            $response["user"]["sex"] = $user["sex"];
            $response["user"]["status"] = $user["status"];
            $response["user"]["created_at"] = $user["created_at"];
            $response["user"]["updated_at"] = $user["updated_at"];
            echo json_encode($response);
        } else {
            // user failed to store
            $response["error"] = TRUE;
            $response["error_msg"] = "Unknown error occurred in registration!";
            echo json_encode($response);
        }
    }
} else {
    $response["error"] = TRUE;
    $response["error_msg"] = "Required parameters is missing!";
    $response["name"] = $_Post["name"];
    echo json_encode($response);
}
}catch (Exception $e) {
    System.out.println("Exception : " + $e.getMessage());
}
?>

这是我的html代码,其中包含以下格式:

<div class="row">
              <div class="col-xs-6 col-sm-6 col-md-6">
                <div class="form-group form-actions">
                  <input type="text" name="first_name" id="first_name" class="form-control input-lg" placeholder="First Name" tabindex="1">
                </div>
              </div>
              <div class="col-xs-6 col-sm-6 col-md-6">
                <div class="form-group">
                  <input type="text" name="last_name" id="last_name" class="form-control input-lg" placeholder="Last Name" tabindex="2">
                </div>
              </div>
            </div>
            <div class="form-group">
              <input type="email" name="email" id="email" class="form-control input-lg" placeholder="Email Address" tabindex="3">
            </div>
             <div class="form-group">
              <input type="age" name="Age" id="Age" class="form-control input-lg" placeholder="Age" tabindex="4"  >

            </div>
              <div class="col-xs-2 col-sm-2 col-md-2"> <span class="radio">
                <input type="radio" name="gender" id="male" class="o-hidden" value="1"  tabindex="5" align="middle">Male   
                </span> </div>
                <div class="col-xs-10 col-sm-10 col-md-10"> <span class="radio">
                <input type="radio" name="gender" id="female" class="o-hidden" value="0" tabindex="6"  align="middle">Female
                </span> </div>
                <div class="col-xs-2 col-sm-2 col-md-2"> <span class="radio">
                <input type="radio" name="status" id="female" class="o-hidden" value="1"  tabindex="7" >Enduser
                </span> </div>
                <div class="col-xs-3 col-sm-3 col-md-3"> <span class="radio">
                <input type="radio" name="status" id="female" class="o-hidden" value="0" tabindex="8" >Company
                </span> </div>
                <div class="col-xs-2 col-sm-2 col-md-2"> <span class="radio">
                <input type="radio" name="status" id="female" class="o-hidden" value="10" tabindex="9" >Both
                </span> </div>
            <div class="row">
              <div class="col-xs-6 col-sm-6 col-md-6">
                <div class="form-group">
                  <input type="password" name="password" id="password" class="form-control input-lg" placeholder="Password" tabindex="10">
                </div>
              </div>
              <div class="col-xs-6 col-sm-6 col-md-6">
                <div class="form-group">
                  <input type="password" name="password_confirmation" id="password_confirmation" class="form-control input-lg" placeholder="Confirm Password" tabindex="11">
                </div>
              </div>
            </div>
            <div class="row">
              <div class="col-xs-1 col-sm-1 col-md-1"> <span class="button-checkbox">
                <input type="checkbox" name="t_and_c" id="t_and_c" class="o-hidden" value="1" tabindex="12" >
                </span> </div>
              <div class="col-xs-11 col-sm-11 col-md-11">
                <p>By clicking <strong class="label label-primary">Register</strong>, you agree to the <a href="#" data-toggle="modal" data-target="#t_and_c_m">Terms and Conditions</a> set out by this site, including our Cookie Use.</p>
              </div>
            </div>
            <hr class="colorgraph">
            <div class="row">
              <div class="col-xs-6 col-md-6">
                <input type="submit" value="Register" class="btn btn-primary btn-block btn-lg" tabindex="13">
              </div>
              <div class="col-xs-6 col-md-6"><a href="#" class="btn btn-success btn-block btn-lg" tabindex="14" >Sign In</a></div>
            </div>
          </form>
        </div>
      </div>

这是我得到的错误来自我的php:

{"error":true,"error_msg":"Unknown error occurred in registration!"}

这就是我得到的全部。 更新: 我改变了一小部分代码,现在我得到了这个:

    public function storeUser($first_name, $last_name, $email,$Age, $gender, $status, $password) 
    {
    try{
        $uuid = uniqid('', true);
        $hash = $this->hashSSHA($password);
        $encrypted_password = $hash["encrypted"]; // encrypted password
        $salt = $hash["salt"]; // salt
        $stmt = $this->conn->prepare("INSERT INTO users VALUES(?,?,?,?,?,?,?,?,?,NOW())");
        $stmt->bind_param("sssssssss", $uuid, $name, $surname,  $email, $encrypted_password, $age, $sex, $status, $salt);
        $result = $stmt->execute();
        $stmt->close();

        // check for successful store
        if ($result) 
        {
            $stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
            $stmt->bind_param("s",$row_user_email);
            $stmt->execute();
            $user = $stmt->get_result()->fetch_assoc();

$user = array(
     'id' => $row_user_id, 
     'name' => $row_user_name,
     'surname' => $row_surname,
     'email' => $row_user_email,
     'encrypted_password' => $row_user_encryptedpass,
     'salt' => $row_user_salt,
     'age' => $row_age,
     'sex' => $row_sex,
     'status' => $row_status,
     'created_at'=>$row_user_createdat,
     'unique_id' => $row_user_uniqueid,
     'updated_at' => $row_user_updatedat,
);
            $stmt->close();
            return $user;
        } 
        else 
        {
            return false;
        }
        }
        catch(Exception $e)
        {
            System.out.println("Exception : " + $e.getMessage());
            }

    }//end of storeUser

错误: 致命错误:在第63行的/home/eberrybox/public_html/home/include/Functions-reg-log.php中的非对象上调用成员函数bind_param()

更新2: 我添加了这个:  die(“Errormessage:”。$ stmt-&gt; error);

我得到了这个: 注意:尝试在第73行的/home/eberrybox/public_html/home/include/Functions-reg-log.php中获取非对象的属性 ERRORMESSAGE:

1 个答案:

答案 0 :(得分:0)

我认为它失败的原因是由于第二个查询中出现了复制/粘贴错误:

$stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("ssssssssssss", $row_user_id, $row_user_name, $row_surname, $row_user_email, $row_user_encryptedpass, $row_user_salt, $row_age, $row_sex, $row_status , $row_user_createdat, $row_user_uniqueid, $row_user_updatedat);
$stmt->execute();

在此查询中,您不需要绑定这么多参数。试试这个:

$stmt = $this->conn->prepare("SELECT * FROM users WHERE email = ?");
$stmt->bind_param("s", $row_user_email);
$stmt->execute();
相关问题