search
LoginSignup
0
Help us understand the problem. What are the problem?

posted at

updated at

PHP ログインハッシュ化

昨日、ハッシュ化について学習したので、共有する

ハッシュ化とは、パスワードをハッシュ化し、第三者にパスワードがわからない
ようにするための方法である

今回は主にPHPのlogin時にパスワードがわからないようにするためにPHPで作成した。

コードの記入方法

vsコード中に(仮)password.php

$s = "test1";

echo password_hash($s, PASSWORD_DEFAULT); 

を作成し、
URLに「localhost」→「保存ファイル名」「〜〜.php」で確認すると

「 $2y$10$XDqnwCgKg3IVqbv.cs/tkuU/RI0usl8Sa7NvVm8JU6zYp0kMNA9Py 」
のような話パスワードが確認できる。

パスワードのコピーを行い、(私は)PHP MY Adminのパスワードカラムにハッシュ化したものを貼り付けた。

loginページに移動後、「username」,「test1」を入力すると、loginその他のlogin機能の実装がうまく
行っていれば、成功すると思います。

ーーーーーーーーーーーーーーーーーーーーー
データベースに直接ハッシュ化する方法

SQLに登録する場合は
①データ接続
②ポストデータを取得する。
③データを登録するSQL
④バインドパラムでセットする
⑤SQL実行
だが

②ポストデータを取得するの箇所をハッシュ化することによりうまく行く



//login_pwをハッシュ化するため$login_pw_nomalを作成する
$login_pw_nomal  = $_POST["login_pw"]; 

//ハッシュ化するため関数を作成
function hh($s){
    return password_hash($s, PASSWORD_DEFAULT); 
}

//ハッシュ化した関数と$login_pw_nomalを合わせる
 $login_pw_hash = hh($login_pw_nomal);

// データを登録するSQL
//prepareメソッドでSQL文を準備し、$stmtの変数へ入れる。
 $stmt = $pdo->prepare('INSERT INTO users(name, login_id,login_pw)
                                   VALUES(:name, :login_id, :login_pw)');

 // バインドパラムでセット。name,login_id,login_pwを作成
 //bindParamでパラメータに値($name,$login_id,login_pw,login_pw_hash)をセット
 $stmt->bindParam( ':name',     $name,     PDO::PARAM_STR);
 $stmt->bindParam( ':login_id', $login_id, PDO::PARAM_STR);
 $stmt->bindParam( ':login_pw', $login_pw_hash, PDO::PARAM_STR);


 // SQL実行
 $res = $stmt->execute();



Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0
Help us understand the problem. What are the problem?