Сессия PHP не проходит

Я работаю над аутентификацией для имени пользователя и пароля моей школы. Школа имеет свой собственный скрипт для использования в форме POST. Он позволяет некоторые скрытые входы с конкретными именами для настройки, например, перенаправление страницы при успехе. Тем не менее, я не могу иметь session_start() или любой мой PHP-код на этой странице, потому что после login.php, страница входа перенаправляется на страницу школ, а затем перенаправляется обратно на мой index.php, Значение сообщения передается в index.php но при обновлении страницы он возвращается на страницу входа, поскольку сеанс не сохраняется со значением post.

Любая помощь по этому вопросу будет очень полезна.

Index.php

<?php
session_start();
$_SESSION['username'] = $_POST['sid'];
if(!isset($_SESSION['username'])){
header("Location: login.php");
} else {
?>
// HTML here
<?php
}
?>

login.php

<form action="authenticator.pl" name="form1" method="POST">
// Using hidden inputs I specify which page to redirect to... These are specific hidden inputs that are accepted.
</form>

0

Решение

Если вы не отправляете данные поста на страницу index.php, следующая строка очистит значение сеанса имени пользователя.

$_SESSION['username'] = $_POST['sid'];
3

Другие решения

Вы должны включить sessions_start(); в верхней части каждого файла, где вам нужно проверить, если они вошли в систему.

Поместите оператор if вверху login.php, чтобы проверить, существует ли их сессия. Если это так, то перенаправьте на index.php.

Вверху index.php проверьте, вошли ли они с помощью оператора if. Если они затем переходят к остальной части index.php, если нет (иначе {}), то перенаправьте их в login.php

Установите SESSION после запуска ваших проверок и аутентификаций в вашем скрипте login.php. Вы можете установить сессию так:

$_SESSION['userid']     = $id;
$_SESSION['username']   = $name;
$_SESSION['userpass']   = $pass;

Просто не забудьте добавить session_start(); в верхней части index.php и проверьте, соответствуют ли они сеансам зарегистрированному пользователю.

0

По вопросам рекламы [email protected]