Я работаю над аутентификацией для имени пользователя и пароля моей школы. Школа имеет свой собственный скрипт для использования в форме 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>
Если вы не отправляете данные поста на страницу index.php, следующая строка очистит значение сеанса имени пользователя.
$_SESSION['username'] = $_POST['sid'];
Вы должны включить 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 и проверьте, соответствуют ли они сеансам зарегистрированному пользователю.