我目前正忙于自己的登录脚本,该脚本既简单又安全,足以满足我的目标。它使用 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和用户名是否也在数据库中,但我无法确定这是否安全。我知道它在整个互联网上都有描述,但我没有找到任何来源让我更清楚。