私は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;
}
}
?>
他のすべてのファイルではなく、クラスを含めるだけで十分だといいのですが、そうでない場合は、それらを追加します。