我正在做一个 PHP 课程的作业,我被困在它的最后一部分。
任务是创建一个简单的登录表单并使用会话以及硬编码的用户名和密码(即没有数据库)。
我遇到的问题是处理登录的类,尤其是会话。有很多代码,我不知道我可以删除什么,因此我把它放在 Pastebin 上,希望没关系。
事情是内置在类中的单元测试通过了,除了 nr。4,检查用户是否登录的那个。问题似乎是 $_SESSION[$this->loginSession] 没有设置,这就是我需要帮助的地方。
变量 $loginSession 在类的开头声明,当用户键入正确的用户名和密码时,应将其设置为“isLoggedIn”,但这不会发生(没有错误消息)。
我的课是:
<?php
class LoginHandler {
private $loginSession;
public function IsLoggedIn() {
if($_SESSION[$this->loginSession] == "isLoggedIn") {
return true;
}
else {
return false;
}
}
public function DoLogin($username, $password){
if ($username != null && $password != null){
switch ($username){
case "hello";
if ($password == "1234"){
$_SESSION[$this->loginSession] == "isLoggedIn";
return true;
}
else return false;
case "hello2";
if ($password == "12345"){
$_SESSION[$this->loginSession] == "isLoggedIn";
return true;
}
else return false;
}
}
else {
return false;
}
}
public function DoLogout(){
unset($_SESSION[$this->loginSession]);
}
public function Test() {
$this->DoLogout();
// Test 1: Check so you're not logged in.
if($this->IsLoggedIn() == true){
echo "Test 1 failed";
return false;
}
// Test 2: Check so that it's not possible to login with wrong password.
if ($this->DoLogin("hello", "4321") == true){
echo "Test 2 failed";
return false;
}
// Test 3: Check that it's possible to log in.
if ($this->DoLogin("hello", "1234") == false){
echo "Test 3 failed";
return false;
}
// Test 4: Check that you're logged in
if ($this->IsLoggedIn() == false){
echo "Test 4 failed";
return false;
}
return true;
}
}
?>
我希望包含类而不是所有其他文件就足够了,否则我会把它们放上去。