У меня есть сценарий входа в систему, где я смог успешно сделать пользователей и войти в систему. Теперь моя проблема в том, что всякий раз, когда я пытаюсь использовать мой метод защиты страниц, я вижу, есть ли СЕССИЯ для пользователя, если нет перенаправляет вас на страницу входа.
Здесь я проверяю сессию,
require("common.php"); if(empty($_SESSION['user'])) { header("Location: login"); die("Redirecting to login"); }
Здесь я устанавливаю свою сессию, я ТОЛЬКО устанавливаю session_start (); на login.php
if($login_ok) { unset($row['salt']); unset($row['password']); $_SESSION['user'] = $row; header("Location: home?worked=1"); die("Redirecting to: home?worked=1"); session_start(); } else { print("Login Failed."); $submitted_username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8'); } }
сif($login_ok) { unset($row['salt']); unset($row['password']); $_SESSION['user'] = $row; header("Location: home?worked=1"); die("Redirecting to: home?worked=1"); session_start(); } else { print("Login Failed."); $submitted_username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8'); } }
сif($login_ok) { unset($row['salt']); unset($row['password']); $_SESSION['user'] = $row; header("Location: home?worked=1"); die("Redirecting to: home?worked=1"); session_start(); } else { print("Login Failed."); $submitted_username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8'); } }
Что я делаю, я вхожу в систему, и он будет обрабатывать и выводить меня на мою домашнюю страницу, а затем обрабатывать заголовок обратно на страницу входа, действуя так, как будто я не вошел в систему. Я протестировал ложный логин, и он говорит, что его правильный логин.
Спасибо за любую помощь, я вытаскиваю свои волосы здесь!
Некро
РЕДАКТИРОВАТЬ
Я переместил session_start (); на вершине моего common.php, и все идеально.
У вас есть session_start();
после $_SESSION['user'] = $row;
На самом деле у вас есть это после die();
команда. После этого ничего не происходит.
Поместите session_start();
в верхней части PHP на каждой странице (pref common.php, так как у вас есть), а не только на одной странице.
Было бы лучше установить session_start()
сверху
Вам нужно поставить session_start (); на каждой странице, которую вы хотите использовать в сеансе.