У меня есть сеанс, который запускается, если пользователь входит в систему, но может быть нажата определенная часть кода с запросом переменных сеанса, которые могут еще не существовать, есть ли еще способ проверить переменную здесь или есть другой способ go об этом.
PHP выполняет скрытие поля, если пользователь не является администратором, но эта проверка может произойти до того, как пользователь войдет в систему. Как бы я go проверил значение этой переменной сеанса?
Я пытался переместить код, чтобы скрыть окно на отдельной странице, например на странице входа в систему, но безрезультатно, что вход в систему - это всплывающее окно, кстати, не другое окно.
session_start();
$connect= new mysqli('localhost', 'root', '', 'login') or die("connection failure, please try again later");
$username= $_GET["username"] ?? '';
$password= $_GET["password"] ?? '';
echo "<br>","$username";
$getsalt="SELECT * FROM users WHERE uname='$username'";
$salt= $connect->query($getsalt);
$currentsalt = "";
while($row=$salt->fetch_assoc()) {
$currentsalt = $row["salt"];
$_SESSION["uname"] = $row["uname"];
$_SESSION["id"] = $row["id"];
echo'<br>', 'is admin ', $row['is_admin'];
$_SESSION["is_admin"] = 1;
if($row["is_admin"] == 1) {
echo 'is admin';
$_SESSION["is_admin"] = 1;
} else {
echo 'is not admin';
}
}
echo "<br>","$password";
echo "<br>", $currentsalt;
if($currentsalt == null) {
echo "user doesnt exist";
} else {
$hashed= sha1($password.$currentsalt);
echo "<br>", $hashed;
$getaccount="SELECT * FROM users WHERE uname='$username' AND pass='$hashed'";
$result= $connect->query($getaccount);
if($result-> num_rows>0) {
while($row=$result->fetch_assoc()) {
echo "<br>","Admin name is: " . $row["uname"];
header("Location: /index.php");
}
} else {
echo "<br>","sorry password was incorrect";
}
}