одна из трех сессий php не установлена

0

У меня есть рабочие переменные сеанса имени username и password для входа в систему, но когда я пытаюсь добавить еще один сеанс, чтобы показать attempt входа в систему, он не регистрируется. До сих пор я работаю так:

        // other php above where I do a query 
        session_start(); 
        if ($numrows == 0){ 
                //echo "no users matching that query\n";        
                unset($_SESSION["username"]); 
                unset($_SESSION["password"]);       
                header ("location: welcomepage.php");    
        }   
        else {
                //echo "congradulations, you have loged in\n"; 
                $_SESSION["username"] = $usernameSanitized; 
                $_SESSION["password"] = $passwordHashed;
                header ("location: welcomepage.php");    
        }   
?>

и в моем welcomepage.php меня есть.

<?php
        session_start(); 
        if (isset($_SESSION["username"])&&isset($_SESSION["password"])){
                echo "hello".$_SESSION["username"]."\n"; 
        }    
        else{
                echo "you have not yet logged in"; 
        }   
?>

Это нормально, но по какой-то причине, когда я сталкиваюсь с проблемами, я пытаюсь добавить еще один третий сеанс, чтобы попытаться отметить, где пользователь пытался войти в систему, называемый $_SESSION['attempt'].

В первой части моего кода для входа я добавляю:

        // other php above where I do a query 
        session_start(); 
        $_SESSION["attempt"] = "attempted"; //<----added this line
        if ($numrows == 0){ 
                //echo "no users matching that query\n";        
                unset($_SESSION["username"]); 
                unset($_SESSION["password"]);       
                header ("location: welcomepage.php");    
        }   
        else {
                //echo "congradulations, you have loged in\n"; 
                $_SESSION["username"] = $usernameSanitized; 
                $_SESSION["password"] = $passwordHashed;
                header ("location: welcomepage.php");    
        }   
?>

И затем я добавляю еще одно условие:

<?php
        session_start(); 
        if (isset($_SESSION["username"])&&isset($_SESSION["password"])){
                echo "hello".$_SESSION["username"]."\n"; 
        }   
        else if (isset($_SESSION["attempt"])){ // <--- added this condition
                echo "login with username and password failed";  
                unset($_SESSION["attempt"]);        
        }   
        else{
                echo "you have not yet logged in"; 
        }   
?>

Но когда я вхожу с неправильным именем пользователя или паролем, я всегда направляюсь к "you have not yet logged in". Что мне не хватает?

Благодарю.

  • 0
    Есть ли пробелы перед <?php ?
Теги:
session
isset

1 ответ

0
Лучший ответ

РЕШЕНИЕ:

Я нашел гораздо лучшее решение моей проблемы. Я не знаю, почему мое условие не регистрировало переменную сеанса как isset, но моя цель состояла в том, чтобы отправить переменную в зависимости от состояния входа (сбой или успех). Я сделал это, выполнив следующее:

        // other php code above
        $_SESSION["usermessage"] = "";  // set this depending on outcome         
        if ($numrows == 0){
                //echo "no users matching that query\n";        
                $_SESSION["usermessage"] = "sorry, login failed";     
                unset($_SESSION["username"]); 
                unset($_SESSION["password"]);   
                header ("location: frontpage.php");     
        }   
        else {
                //echo "congradulations, you have loged in\n"; 
                $_SESSION["usermessage"] = "you have logged in!"; 
                $_SESSION["username"] = $usernameSanitized; 
                $_SESSION["password"] = $passwordHashed;
                header ("location: frontpage.php");     
        }   
?>

а также на моем welcomepage.php, я мог бы протестировать условие на основе значения my $_SESSION["usermessage"] если понадобится, но вместо этого я просто отобразил его с разными значениями.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню