저는 PHP 과정에서 과제를 진행하고 있으며 마지막 부분에 갇혀 있습니다.
할당은 간단한 로그인 양식을 만들고 하드 코딩 된 사용자 이름과 비밀번호 (즉 no db)와 세션을 사용하는 것입니다.
내가 문제가되는 것은 로그인 및 세션을 처리하는 클래스입니다. 많은 코드가있어서 내가 제거 할 수있는 것을 모르기 때문에 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;
}
}
?>
내가 그렇지 않으면 내가 그들을 놓을 게요,이 클래스가 아닌 다른 모든 파일을 포함 충분 바랍니다.
어디에서 전화 하시겠습니까? 여기에 선언 만 있습니다 ... 더 많은 문맥을 제공하십시오. – antonpug