我的登录功能无法匹配数据库中存储的用户名和密码
My login function is unable to match username and password stored in the database
此代码总是 returns 错误的用户名和密码,尽管其正确且相同的功能适用于我的管理员登录系统。前段时间还可以,现在不行了
function login($user,$pass,$accountType){
require('connection.php');
$result=mysqli_query($con,"select * From $accountType");
$regex="/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/";
if(preg_match($regex, $user)){
if(mysqli_num_rows($result)>0){
while($row=mysqli_fetch_assoc($result)){
$username=$row['username'];
$password=$row['password'];
if($user==$username){
if (password_verify($pass,$password)){
if($accountType=='student'){
$_SESSION['student']='$user';
header('Location:studentprofile.php');
exit();
}
elseif($accountType=='teacher'){
$_SESSION['student']='$user';
header('Location:teacherprofile.php');
exit();
}
elseif($accountType=='admin'){
header('Location:admin.html');
exit();
}
}
else
{
$_SESSION['error']="wrong password"."<br>";
}
}
else{
$_SESSION['error']="Wrong username "."<br>";
}
}
}
else{
$_SESSION['error']="No data found";
}
}
else{
$_SESSION['error']="not a valid email,";
}
}
来自 "i have specified varchar(20) for storing password in the database"
密码字段应该很大。 password_hash()
可以生成一些非常长的文本(当前默认为 60 个字符),因此将字段变大,例如 varchar(254)
或 text
将允许所需的长度。 PHP 团队正在向该方法添加更多算法,这意味着散列可以而且将会增长。我们也不想限制我们的用户使用他们选择的密码或密码的能力。最好留点余地改
此代码总是 returns 错误的用户名和密码,尽管其正确且相同的功能适用于我的管理员登录系统。前段时间还可以,现在不行了
function login($user,$pass,$accountType){
require('connection.php');
$result=mysqli_query($con,"select * From $accountType");
$regex="/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/";
if(preg_match($regex, $user)){
if(mysqli_num_rows($result)>0){
while($row=mysqli_fetch_assoc($result)){
$username=$row['username'];
$password=$row['password'];
if($user==$username){
if (password_verify($pass,$password)){
if($accountType=='student'){
$_SESSION['student']='$user';
header('Location:studentprofile.php');
exit();
}
elseif($accountType=='teacher'){
$_SESSION['student']='$user';
header('Location:teacherprofile.php');
exit();
}
elseif($accountType=='admin'){
header('Location:admin.html');
exit();
}
}
else
{
$_SESSION['error']="wrong password"."<br>";
}
}
else{
$_SESSION['error']="Wrong username "."<br>";
}
}
}
else{
$_SESSION['error']="No data found";
}
}
else{
$_SESSION['error']="not a valid email,";
}
}
来自
密码字段应该很大。 password_hash()
可以生成一些非常长的文本(当前默认为 60 个字符),因此将字段变大,例如 varchar(254)
或 text
将允许所需的长度。 PHP 团队正在向该方法添加更多算法,这意味着散列可以而且将会增长。我们也不想限制我们的用户使用他们选择的密码或密码的能力。最好留点余地改