我在 PHP
登录和登录系统后的用户验证方面苦苦挣扎。我知道基础知识,但我不确定我是否做对了。我将尝试逐步解释它。
- 我有一个用户名和密码表单。
- 在用户输入他们的登录名和密码后,我正在使用
LDAP
身份验证来授权他们。如果身份验证通过,那么我需要开始新的 session 。 新 session (这是我正在努力的地方)。
if ($validation->ldap_authentication()) { $session = new session(); $session -> login($validation->getUsername(), $validation->logedAs(), $validation->getSID()); if($session->validate_login()) { exit(header('Location:index2.php')); } else { echo 'error'; } }
还有我的 session 类
:
class session
{
public function __construct()
{
if(!isset($_SESSION))
{
session_name(SESSIONNAME);
ob_start();
session_start();
} else {
session_regenerate_id(true) ;
}
}
public function login($sessionUserName, $logedAs, $sid)
{
$_SESSION['logedUserName'] = isset($sessionUserName) ? $sessionUserName : null;
$_SESSION['logedAs'] = isset($logedAs) ? $logedAs : null;
$_SESSION['sid'] = isset($sid) ? $sid : null;
}
public function validate_login()
{
if (!isset($_SESSION['logedUserName']) || (trim($_SESSION['logedUserName']) == '') ||
!isset($_SESSION['logedAs']) || (trim($_SESSION['logedAs']) == '') ||
!isset($_SESSION['sid']) || (trim($_SESSION['sid']) == '')
)
{
return false;
} else {
return true;
}
}
}
- 所以在其他页面中我需要启动一个类
session
(再次)并验证validate_login()
? - 对我来说,它的身份验证看起来很差。
我需要添加和改进什么?
我已经在网上搜索过但找不到答案,也不知道我到底需要改进什么。
最佳答案
我是 PHP 初学者,所以我的回答可能毫无值(value)。
我认为您可以信任存储在 $_SESSION
中的变量,因为只有服务器才能访问它们。所以你可以有一个 bool 值 $_SESSION['loggedIn']
让你知道用户已经成功完成登录过程,并且这个变量可以从任何页面访问。
关于PHP Session 安全关键步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42348071/