3

データベース名のパスワードに列があり、データベースに投稿する前にパスワードをハッシュまたは暗号化したいだけです。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;
}
?>

暗号化機能をどこに配置すればよいか教えてください。または、パスワードを暗号化する方法はありますか?

4

4 に答える 4

1

PHP >= 5.5.0 を使用している場合:

$password = password_hash('the password');

古いバージョンの PHP を使用している場合は、互換性ライブラリを使用してください。lib/password.phpファイルをインクルードしてから、通常どおりドキュメントを使用します。

于 2013-08-13T04:13:43.567 に答える
0

まず、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 に次のように設定するだけです。

$password = hash('sha256', $password_arr[$i]);

ただし、sha256 を使用する場合は、データベースのテーブルのパスワード フィールドの長さが 64 以上、つまり varchar(64) または char(64) であることを確認する必要があります。ガイドとして次の質問の回答を見てください。

また、config.php で $salt などのスラットを定義することもできます。これは、すべてのパスワードに追加される固定文字列になります。

//in your config.php
...
$salt = 'jhfdkjdhfTyhdh3365@jdh69kkshhQAAAiyeg'// some ungussed string
...
// in your hash code:

 $password = hash('sha256', $salt.$password_arr[$i]);
于 2013-08-13T04:18:57.243 に答える
-1

パスワードが変数の場合は、次のようなものを使用してみてください

$input=mysqli_real_escape_string($con, $_POST['password']);
$password = md5($input);

そして、あなたのSQLを次のようにしましょう

UPDATE table SET password='$password';

テストされていないコード...

実際のマニュアルより。

http://php.net/manual/en/function.md5.php

于 2013-08-13T04:03:23.507 に答える