Php 登入登记表格问题
我正在为我的网站制作登录/注册表格。当我以新用户名注册为新用户时,尽管该用户名看起来好像已经存在,即使数据库是空的。我将试着让您了解这方面的代码,但我不确定问题出在哪里 在register.php中,它检查用户输入是否与数据库中的任何内容匹配,它将输出正确的错误消息,如果不匹配,它将转到register函数将用户注册到数据库中。谢谢:) 和寄存器函数Php 登入登记表格问题,php,forms,login,registration,Php,Forms,Login,Registration,我正在为我的网站制作登录/注册表格。当我以新用户名注册为新用户时,尽管该用户名看起来好像已经存在,即使数据库是空的。我将试着让您了解这方面的代码,但我不确定问题出在哪里 在register.php中,它检查用户输入是否与数据库中的任何内容匹配,它将输出正确的错误消息,如果不匹配,它将转到register函数将用户注册到数据库中。谢谢:) 和寄存器函数 public function register($username, $password, $email, $firstName, $lastN
public function register($username, $password, $email, $firstName, $lastName, $accountType){
global $bcrypt; // making the $bcrypt variable global so we can use here
$time = time();
$ip = $_SERVER['REMOTE_ADDR']; // getting the users IP address
$email_code = $email_code = uniqid('code_',true); // Creating a unique string.
$password = $bcrypt->genHash($password);
$query = $this->mysqli->prepare("INSERT INTO `users` (`username`, `password`, `email`, `ip`, `time`, `email_code`, `firstName`, `lastName`, `accountType`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ");
$query->bind_param('ssssissss',$username, $password, $email, $ip, $time, $email_code, $firstName, $lastName, $accountType);
$query->execute();
}
我相信您的问题在于
公共功能用户存在($username)
-
$rows
没有设置为查询中的值,而是在$query->fetch()
成功时返回true
。阅读手册中的-
在调用mysqli_stmt_fetch()之前,应用程序必须绑定所有列
试着把它改成-
public function user_exists($username) {
$query = $this->mysqli->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
$query->bind_param('s', $username);
$query->execute();
// Bind the results
$query->bind_result($count);
while($rows = $query->fetch()){
if($count == 1){
return true;
}else{
return false;
}
}
}
您还需要为
公共功能电子邮件执行此操作($email)
问题出在哪里?你期望的输出是什么?您得到的是什么输出?数据库中有0个信息,但当我尝试注册时,它读取到用户名存在,即使数据库为空。我得到“该用户名已存在”。显示您的数据库结构
public function register($username, $password, $email, $firstName, $lastName, $accountType){
global $bcrypt; // making the $bcrypt variable global so we can use here
$time = time();
$ip = $_SERVER['REMOTE_ADDR']; // getting the users IP address
$email_code = $email_code = uniqid('code_',true); // Creating a unique string.
$password = $bcrypt->genHash($password);
$query = $this->mysqli->prepare("INSERT INTO `users` (`username`, `password`, `email`, `ip`, `time`, `email_code`, `firstName`, `lastName`, `accountType`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ");
$query->bind_param('ssssissss',$username, $password, $email, $ip, $time, $email_code, $firstName, $lastName, $accountType);
$query->execute();
}
$rows = $query->fetch();
public function user_exists($username) {
$query = $this->mysqli->prepare("SELECT COUNT(`id`) FROM `users` WHERE `username`= ?");
$query->bind_param('s', $username);
$query->execute();
// Bind the results
$query->bind_result($count);
while($rows = $query->fetch()){
if($count == 1){
return true;
}else{
return false;
}
}
}