このコードは常に間違ったユーザー名とパスワードを返しますが、その正しい同じ機能は私の管理者ログインシステムでも機能します。しばらく前は機能していましたが、現在は機能しません。
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,";
}
}
コメント から「データベースにパスワードを保存するためにvarchar(20)を指定しました」
パスワードフィールドは大きくする必要があります。はpassword_hash()
非常に長いテキスト(現在のデフォルトは60文字)を生成する可能性があるため、フィールドを大きくすると、varchar(254)
またはなど、text
必要な長さになります。PHPチームは、メソッドにアルゴリズムを追加しています。これは、ハッシュが大きくなる可能性があることを意味します。また、ユーザーが選択したパスワードやパスフレーズを使用する能力を制限したくありません。変更の余地を残すのが最善です
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加