我有一个简单的登录表单,在用户输入用户名和密码后,它会将用户发送到下面的页面。此页面验证用户名和密码是否正确,然后将它们发送到站点。除了我尝试在会话中存储“userid”的部分之外,这一切都有效。我想存储用户 ID,以便我可以运行查询并使用用户的相关信息填充站点的其余部分。您可能会说,我对此仍然很陌生,因此我们将不胜感激。
<?php
session_start();
if($_SERVER['REQUEST_METHOD']=='POST'){
try{
$con = new PDO('mysql:host=localhost;dbname=DBNAME','USERNAME','PASSWORD');
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}catch (Exception $e){
die('Cannot connect to database. Details:'.$e->getMessage());
}
$query = $con->prepare("SELECT 1 FROM userprofile WHERE username=:username && password=:password");
$query->bindParam(":username", $_POST['myusername']);
$query->bindParam(":password", $_POST['mypassword']);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
if(!empty($result)){
$_SESSION['loggedin']=1;
$_SESSION['myusername']=$_POST['myusername'];
$_SESSION['userid'] = ("SELECT id FROM userprofile WHERE username=:username && password=:password");
exit(header('Location: index.php'));
}else{
exit(header('Location: login.php'));
}
}else{
exit(header('Location: login.php'));
}
?>
另一个简单的问题:将我的数据库名称、用户名和密码存储在此页面上是否安全?即使这只是一个与服务器对话并且从未显示的页面,有人可以访问此信息并登录到我的数据库吗?