LoginSignup
0
0

More than 1 year has passed since last update.

PHP ログインハッシュ化

Last updated at Posted at 2022-09-22

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

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

今回は主に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();

 $stmt->bindParam( ':login_pw', $login_pw_hash, PDO::PARAM_STR);

の「 PDO::PARAM_STR 」がなぜSTRなのか???

「 PDO::PARAM_STR」 」
SQL CHAR, VARCHAR, または他の文字列データ型を表します。

「 PDO::PARAM_INT 」
SQL INTEGER データ型を表します

ハッシュ化は数値だけでなく、文字列も入ってくるため、「 INT ではなく STR 」を使用する。

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0