在构建登录功能时遇到问题,无法存储会话(php)


Having problems building my login-function, cant store sessions (php)

我是初学者。现在我正在尝试建立一个简单的登录/注册系统来学习。

它曾经起过作用,但现在不行了,我不知道哪里出了问题。慢慢地,我的代码变成了意大利面条。

我想要什么:登录后启动会话的LOGIN系统。但会话不工作!请注意,所有的回声都很难看,但只是为了让我现在检查一下!

我的HTML代码:

//Check if class responds
$user->classtest();
session_start();
//Login-Function
if($user->checkSession()) { 
echo "Session is okay";
} else {
    if(isset($_POST['uname']) && isset($_POST['upass'])) {
    $name = $_POST['uname'];
    $pass = $_POST['upass'];
        if($user->checkPW($name,$pass)) {
        $user->startSession($name,$pass);
        } else {
        echo "Your Login is wrong, please try again";
        $user->loginForm();    
        }
    } else {
    echo "<br>You are not logged in. Please login!";    
    $user->loginForm();
    }
}

以下是类中的函数:启动会话:

    public function startSession($uname,$upass) {
    $userData = $this->getUserData($uname);
    session_start();
    $_SESSION['username'] = $userData[0]["username"];
    $_SESSION['password'] = $userData[0]["password"];
        echo "<br>You are logged in and we started the session ";
        echo "<br>Username: " . $_SESSION['username'] . "<br>";
        echo "<br>Password: " . $_SESSION['password'] . "<br>";    
        return true;    
}

以及我的功能,应该检查是否有会话:

 public function checkSession() {
    if(isset($_SESSION['username']) && isset($_SESSION['password'])) {
        return true;
    } else {
        return false;
    }
}

现在,尽管我的startSession函数在提交登录表单后正确地给了我$_SESSION['username]],但checkSession((函数总是给我false。

抱歉代码不完美等等。我是一个真正的初学者,还在想办法!

您调用checkSessionBEFORE您曾经调用session_start(),这意味着$_SESSION将为空,并且您的isset()调用将失败。

只需在文件顶部使用session_start();初始化会话。

或者,如果必要的话,在类的构造函数中:

function __construct() { session_start(); }

请注意在初始化会话(或设置cookie(之前有输出。