我的数据库名称密码中有一列,我只想在发布到数据库之前对密码进行哈希或加密。我的php提交文件中有这样的代码。
<?php
session_start();
include('config.php');
$ID=$_POST['ID'];
$name=$_POST['name'];
$password=$_POST['password'];
$department=$_POST['department'];
$email=$_POST['email'];
$ID_arr=array();
$name_arr=array();
$password_arr=array();
$dept_arr=array();
$email_arr=array();
$i = -1;
++$i;
$ID_arr[$i]= $_POST['ID'];
$name_arr[$i]= $_POST['name'];
$password_arr[$i]= $_POST['password'];
$dept_arr[$i]= $_POST['department'];
$email_arr[$i]= $_POST['email'];
$j=0;
while ( $j <= $i)
{
$ID = $ID_arr[$i];
$name = $name_arr[$i];
$password = $password_arr[$i];
$department = $dept_arr[$i];
$email = $email_arr[$i];
$sql = "INSERT INTO `employee`. `admin` (ID ,name ,password ,department
,email) VALUES (
'$ID' ,'$name' ,'$password' ,'$department' ,'$email'
)";
$result = mysql_query($sql);
if(!$result){
die('invalid query:'.mysql_error());
}
else
echo ("<tr><td>" . "You have been succesfully registered..." . "</td></tr>");
header('Refresh:5; url=adminlogin.php');
die;
}
?>
我可以知道加密功能应放在哪里吗?或者以任何方式加密密码?
答案 0 :(得分:3)
答案 1 :(得分:1)
如果你有PHP&gt; = 5.5.0那么:
$password = password_hash('the password');
如果您有旧版本的PHP,请使用compatibility library。包含lib/password.php
文件,然后照常使用the documentation。
答案 2 :(得分:0)
首先,忘记md5 。如果您使用PHP&gt; = 5.1.2,则可以使用hash()函数。
从你所看到的代码:
...
$j=0;
while ( $j <= $i)
{
$ID = $ID_arr[$i];
$name = $name_arr[$i];
$password = $password_arr[$i];
$department = $dept_arr[$i];
$email = $email_arr[$i];
...
您只需要对$ password进行以下操作:
$password = hash('sha256', $password_arr[$i]);
但是,使用sha256时,必须确保数据库表中的密码字段长度为64或更长,e varchar(64)或char(64)。请看以下问题的答案作为指南:
另外,在你的config.php中你可以定义一个slat,比如$ salt,它将是一个固定的字符串,可以添加到每个密码中:
//in your config.php
...
$salt = 'jhfdkjdhfTyhdh3365@jdh69kkshhQAAAiyeg'// some ungussed string
...
// in your hash code:
$password = hash('sha256', $salt.$password_arr[$i]);
答案 3 :(得分:-1)
如果您的密码是变量,请尝试使用类似
的内容$input=mysqli_real_escape_string($con, $_POST['password']);
$password = md5($input);
让你的SQL像
UPDATE table SET password='$password';
未经测试的代码......
来自实际手册。