Представлено 4ре! файла. a, b, login, index.
Скачать пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php // //Ещё одна проверка, только уже на авторизацию // //если в контексте сессии не установлено имя пользователя пытаемся взять его из куки if(!isset($_SESSION['username']) && isset($_COOKIE['username'])){ $_SESSION['username'] = $_COOKIE['username']; } //Ещё раз ищем имя пользователя в контексте сессии === хотя мне кажется просто присваиваем имя переменной $username = $_SESSION['username']; if($username == null){ header("Location: login.php"); exit(); } //Авторизованного юзера выкидываем на страницу из кук if(isset($_COOKIE['last'])){ $last = $_COOKIE['last']; header("Location: $last"); } ?> |
Файл index
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
<?php // //Авторизация // function login($username, $remember){ //Имя не должно быть пустой строкой if($username == ''){ return false; } //Запоминаем имя сессии $_SESSION['username'] = $username; //в куки пользователь поделал запомнить его (на неделю) if($remember){ setcookie('username', $username, time() + 3600 * 24 * 7); } //Успешная авторизация return true; } // //Сброс авторизации // function logout(){ //Делаем куки устаревшими setcookie('username', '', time() - 1); //Сброс сессии unset($_SESSION['username']); /* echo 'Ну вроде сбросили сессию...'; Дописал здесь эти слова и выдало ошибку Cannot modify header information - headers already sent by */ } // //Точка входа // session_start(); $enter_site = false; //Попадая на страницу логин пхп, авторизация сбрасывается logout(); //Если мыссив POST не пуст, значит обрабатываем отправку формы if(count($_POST) > 0){ $enter_site = login($_POST['username'], $_POST['remember'] == 'on'); } if($enter_site){ header("Location: a.php"); exit(); } ?> <!-- //<?php /* Файл с этого сайта = http://objectone.ru/ */ ?> --> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Вход на сайт</title> <link href="css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-2"> <p>Левая колонка</p> </div> <div class="col-md-8"> <br /><br /><br /> <h4>Вход на сайт</h4> <form action="" method="post"> <p>Введите имя:</p><br /> <input type="text" name="username" /><br /> <input type="checkbox" name="remember" />Запомнить имя<br /> <input type="submit" value="войти" /> </form><br /> <p><a href="a.php">Страница А</a></p> <p><a href="b.php">Страница Б</a></p> </div> <div class="col-md-2"> <p>Правая колонка</p> </div> </div> </div> <script src="js/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </body> </html> |
login Тут происходят важные вещи всё должно начинаться до html страницы. При успешном введении текста в текстовое поле нас редиректит на страницу a
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php // //Точка входа // session_start(); //если в контексе сессии не установлено имя пользователя пытаемся взять его из куки if(!isset($_SESSION['username']) && isset($_COOKIE['username'])){ $_SESSION['username'] = $_COOKIE['username']; } //Ещё раз ищем имя пользователя в контексте сессии === хотя мне кажется просто присваиваем имя переменной $username = $_SESSION['username']; setcookie('last', 'a.php');//Добавили только строчку и всё заработало? //Неавторизованных пользователей отправляем на страницу с регистрацией if($username == null){ header("Location: login.php"); exit(); } ?> <!-- //<?php /* Файл с этого сайта = http://objectone.ru/ */ ?> --> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Страница А</title> <link href="css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-2"> <p>Левая колонка</p> </div> <div class="col-md-8"> <h4>Страница А</h4> <p><a href="login.php">Индексная страница</a></p> <p><a href="b.php">Страница Б</a></p> <p>Вы вошли под ником <strong><?=$username?></strong></p> </div> <div class="col-md-2"> <p>Правая колонка</p> </div> </div> </div> <script src="js/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </body> </html> |
Назначаем свои куки last и a.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php // //Точка входа // session_start(); //если в контексе сессии не установлено имя пользователя пытаемся взять его из куки if(!isset($_SESSION['username']) && isset($_COOKIE['username'])){ $_SESSION['username'] = $_COOKIE['username']; } setcookie('last', 'b.php', time() + 3600 * 24 * 7); //Ещё раз ищем имя пользователя в контексте сессии === хотя мне кажется просто присваиваем имя переменной $username = $_SESSION['username']; //Неавторизованных пользователей отправляем на страницу с регистрацией if($username == null){ header("Location: login.php"); exit(); } ?> <!-- //<?php /* Файл с этого сайта = http://objectone.ru/ */ ?> --> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Страница Б</title> <link href="css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-2"> <p>Левая колонка</p> </div> <div class="col-md-8"> <h4>Страница Б</h4> <p><a href="login.php">Индексная страница</a></p> <p><a href="a.php">Страница А</a></p> <p>Вы вошли под ником <strong><?=$username?></strong></p> </div> <div class="col-md-2"> <p>Правая колонка</p> </div> </div> </div> <script src="js/jquery.min.js"></script> <script src="js/bootstrap.min.js"></script> </body> </html> |
На странице b присвоим время жизни кук, на всякий случай.
Если вы хотите сбросить успех прыгайте на страницу login.php
Нажмите кнопку F12 в браузере google и перейдите во вкладку «Resoures» что бы проследить за cookie`s которые сохранены.
| Категория: PHP
| Тэги: cookie / PHP / session / основы / ШП