У меня есть рабочие переменные сеанса имени 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"
. Что мне не хватает?
Благодарю.
РЕШЕНИЕ:
Я нашел гораздо лучшее решение моей проблемы. Я не знаю, почему мое условие не регистрировало переменную сеанса как 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"]
если понадобится, но вместо этого я просто отобразил его с разными значениями.
<?php
?