У меня есть столбец в моем пароле с именем базы данных, я просто хочу хэшировать или шифровать пароль перед отправкой в базу данных. У меня есть код, подобный этому в моем файле отправки 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; } ?>
Могу ли я узнать, куда следует поместить функцию шифрования? Или любой способ зашифровать пароль?
Вы можете использовать функцию MySQL PASSWORD
а также функцию PHP crypt
.
Пример функции MySQL:
INSERT INTO table VALUES (PASSWORD('abcd'));
Если у вас PHP> = 5.5.0, то:
$password = password_hash('the password');
Если у вас более старая версия PHP, используйте библиотеку совместимости . Включите файл lib/password.php
а затем используйте документацию как обычно.
Прежде всего, забудьте md5 . Если вы используете PHP> = 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 = hash('sha256', $password_arr[$i]);
Однако, используя sha256, вы должны убедиться, что поле вашего пароля в таблице базы данных имеет длину 64 или более по длине i, 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]);
Если пароль является переменной, попробуйте использовать что-то вроде этого
$input=mysqli_real_escape_string($con, $_POST['password']); $password = md5($input);
И пусть ваш SQL будет чем-то вроде
UPDATE table SET password='$password';
непроверенный код …
из фактического руководства.