Javascript 随机生成pw作为新用户的默认值,然后让他们稍后使用php更改密码
大家好,我是web开发新手,正在使用php处理我的个人项目。我成功地为新用户生成了9位数的默认pw。我想让管理员对新用户的默认9位pw具有可见性。但是,我不希望管理员对新更改的用户pw具有可见性。假设一个新用户将其密码表单123456789更改为jk1234。我想把密码保存为jk****。但我无法使用下面的代码,因为它也屏蔽了原始的9位密码Javascript 随机生成pw作为新用户的默认值,然后让他们稍后使用php更改密码,javascript,php,html,Javascript,Php,Html,大家好,我是web开发新手,正在使用php处理我的个人项目。我成功地为新用户生成了9位数的默认pw。我想让管理员对新用户的默认9位pw具有可见性。但是,我不希望管理员对新更改的用户pw具有可见性。假设一个新用户将其密码表单123456789更改为jk1234。我想把密码保存为jk****。但我无法使用下面的代码,因为它也屏蔽了原始的9位密码 $masked = str_pad(substr($number, -4), strlen($number), '*', STR_PAD_LEFT
$masked = str_pad(substr($number, -4), strlen($number), '*', STR_PAD_LEFT);
我应该如何解决这个问题
谢谢
编辑!!!!下面的代码工作正常(检查电子邮件地址和pw是否正确)
但是,在我对密码进行如下哈希运算之后
并使用密码更改了我的代码。\u验证,它无法正常工作
(检查我的密码是否为“$2y$10$JMABASEINCXA3ZBXNOGUYW2AWF1THOMB7J7KJ8NW7KL5G64QWM”)
你能告诉我是什么问题吗
if(isset($_POST['email']) && isset($_POST['password'])){
$email=mysqli_real_escape_string($con,$_POST['email']);
$password=mysqli_real_escape_string($con,$_POST['password']);
$res=mysqli_query($con,"select * from employee where email='$email' and password='$password'");
$count=mysqli_num_rows($res);
if($count>0){
$row=mysqli_fetch_assoc($res);
$_SESSION['ROLE']=$row['role'];
$_SESSION['USER_ID']=$row['id'];
$_SESSION['USER_NAME']=$row['name'];
$_SESSION['DEPARTMENT']=$row['department_id'];
if(password_verify($_POST['password'],$password)){
session_regenerate_id();
header('location:index.php');
die();
}
}else{
$msg="Please enter correct login details";
}
}
密码不应以纯文本形式存储,也不应处于任何可以随时解密的状态。这真是糟糕的做法。我还建议您的密码由单词、短语、特殊字符以及数字组成,以提高安全性
请考虑在项目中使用和作为绝对最小值。
密码只能由打算访问该帐户的用户知道。您应该允许您的用户选择自己的密码,并提供一种安全的方式,在用户失去访问权限时自行重置密码 由于密码不能解密,通常的过程是:不要未保存密码,请使用
password\u hash()
和password\u verify()
散列并检查密码。这样你可以保护你的用户,如果有人可以访问数据库(甚至是管理员),他就不知道真正的密码。那么管理员如何访问默认的9位密码?我的计划是管理员只能创建新帐户,并让新用户知道id和默认pw。然后用户可以更改自己的密码。当管理员通过web表单创建用户时,他应该知道该用户的密码,对吗?你打算直接使用phpmyadmin创建一个用户吗?嗯,不要。那是个坏习惯。在任何时候,唯一应该知道用户密码的人就是用户自己。要么让用户在注册时指定密码,要么用一次性使用令牌将其直接踢入“忘记我的密码”流。因为pw是由以下代码随机生成的$number=mt_rand(100000009999999);我认为$number应该保存到phpmyadmin中,以便可以看到默认的PW。非常感谢您的回答!你的链接帮助我了解了整个画面!!
if(isset($_POST['email']) && isset($_POST['password'])){
$email=mysqli_real_escape_string($con,$_POST['email']);
$password=mysqli_real_escape_string($con,$_POST['password']);
$res=mysqli_query($con,"select * from employee where email='$email' and password='$password'");
$count=mysqli_num_rows($res);
if($count>0){
$row=mysqli_fetch_assoc($res);
$_SESSION['ROLE']=$row['role'];
$_SESSION['USER_ID']=$row['id'];
$_SESSION['USER_NAME']=$row['name'];
$_SESSION['DEPARTMENT']=$row['department_id'];
if(password_verify($_POST['password'],$password)){
session_regenerate_id();
header('location:index.php');
die();
}
}else{
$msg="Please enter correct login details";
}
}