猿问

是否可以使用 PHP 的password_hash在 SQL 中设置默认用户的密码?

我的旧 PHP 应用程序具有默认管理员用户和由创建数据库的 SQL 创建的 md5 加密密码:insert into users values ( 1, 'admin', MD5('changeMe'), 2 );

有没有一种简单的方法可以使用PHP的passowrd_hash功能在创建表时包含默认用户和加密密码?我问,因为我明白password_hash是一个原生的PHP函数,我认为它在SQL中不会被理解。


繁星淼淼
浏览 80回答 2
2回答

眼眸繁星

我的问题的解决分为三个部分。我的OP寻求一种简单的方法,使用本机PHP函数为管理员用户创建哈希密码,以便在安装应用程序时插入MySQL数据库中。password_hash()(1)根据@Nick和@Tadman的建议,我决定将设置哈希合并到安装程序脚本中,该脚本不仅可以设置哈希,还可以设置其他定义的站点/应用程序变量。创建数据库表时,不是插入用户值,而是将其推迟到紧随其后,管理员用户以插入哈希并将其他定义写入文件的形式输入其凭据:$userpass = $_POST['userpass'];echo password_hash($userpass, PASSWORD_BCRYPT);(2)我问题的第二部分是替换password_hash()'的所有实例,我通过使用我在网上找到的整洁的PHP脚本来递归搜索和替换服务器上的实例来实现这一点。md5()`` with替换了实例后,我需要更改哈希比较方法,并且通过搜索相关文件,我能够替换以下实例:md5()if ($p != $theUser->pwd ) {    return( false );     }跟:if(password_verify($p, $theUser->pwd)) {    // Success!    }else {    // Invalid credentialsecho "Uh oh!";    }(3)解决问题的第三步是发现在md5哈希的开头添加$ 1 $可以使其可读,因此我只需要在已安装的数据库中对管理员用户的旧密码进行一些调整即可。password_hash();感谢那些帮助照亮光明的人,所以我可以找到自己的路。我现在要去发明轮子和切片面包。

慕容森

你可以在php中做这样的事情:$hash = password_hash('changeMe');  //echo $hash;然后在数据库中使用此哈希。
随时随地看视频慕课网APP
我要回答