0

現在、私は自分のログイン スクリプトで忙しくしています。このログイン スクリプトは、シンプルでありながら、自分の目標に十分に適合する安全なものです。MySQL を使用してユーザー名とパスワードを保存します。ここで、セッションを使用して、多くのチュートリアルで見られるように、ユーザーがログインしているかどうかを確認できるようになりました。これまでのところ、私はこれに行き着きましたが、これが適切で安全な方法であるかどうかはわかりません.

<?php

$db = new PDO('mysql:host=HOST;dbname=DATABASE;charset=UTF-8', 
              'USERNAME', 
              'PASSWORD',
              array(PDO::ATTR_EMULATE_PREPARES => false,
              PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

if(isset($_POST['username']) && isset($_POST['password'])){
  $select = $db->prepare("SELECT id, username FROM vwo5_users WHERE username=:username AND password=:password");
  $select->execute(array(':username' => $_POST['username'], ':password' => $_POST['password']));
  $amount = $select->rowCount();
  $result = $select->fetch(PDO::FETCH_ASSOC);
  $user_id = $result['id'];
  $user_name = $result['username'];


  if($amount >= 1){
    session_start();
    $_SESSION['user_id'] = $user_id;
    $_SESSION['user_name'] = $user_name;
    echo 'Logged in';
  }
  else{
    echo 'Wrong login data';
  }  
}
else{
    header('Location: dbtestform.php');
}

?>

次に、セキュリティで保護されたページで、セッションのIDユーザー名がデータベースでも一緒になっているかどうかを確認しますが、これが安全かどうかを判断することはできません。私はそれがインターネット全体で説明されていることを知っていますが、私が見つけた情報源はそれをより明確にしてくれませんでした.

4

1 に答える 1