Итак, давайте сделаем форму входа (авторизации) на сайт и поставим на главную страницу ссылку, которая будет видна только авторизованным пользователям.
Для этого необходимо создать два файла с расширением «php»:
- index.php – это главная страница сайта и здесь мы установим форму авторизации с двумя полями (логин и пароль) а ниже поставим надпись, которая просит авторизоваться и перейти по ссылке, а ссылка в свою очередь будет видна только авторизованному пользователю.
- proverca.php – на этой странице напишем код, который будет подключаться к базе данных и проверять существует ли пользователь с таким именем и паролем, если не существует, то выводим на экран сообщение об ошибке, а если существует, то автоматический переходим на главную страницу. При этом к нам привязывают две глобальные переменные (сессии : «$_SESSION[‘login’] и $_SESSION[‘id’]») которые служат как своеобразный пропуск.
Теперь когда мы попали на главную страницу с логином и уникальном номером, то «php скрипт» принимает нас за своих и показывает нам скрытую ссылку.
Будьте внимательны с именами глобальных переменных потому что «сессии» сохраняются в «куках» браузера пользователя на некоторое время даже после того как он покинул сайт и если ранее он был на другом сайте с такими же именами глобальных переменных то на вашем сайте он будет высвечиваться под старым логином.
Файл index.php:
<?php //Стартуем сессии session_start(); header('Content-Type: text/html; charset=utf-8'); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Авторизация</title> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="keywords" content="Ключевые слова для поисковиков"> <meta name="description" content="Описание сайта"> </head> <body> <?php // Проверяем, пусты ли переменные логина и id пользователя if (empty($_SESSION['login']) or empty($_SESSION['id'])) { ?> <!--Если пусты, то выводим форму входа.--> <div style="border: 0px solid blue; position:relative; top:100px; left:400px; height:200px; width="99%";"> <form action="proverca.php" method="post"> <label>логин:</label><br/> <input name="login" type="text" size="15" maxlength="15"><br/> <label>пароль:</label><br/> <input name="password" type="password" size="15" maxlength="15"><br/><br/> <input type="submit" value="войти"><br/><br/> </form> Здравствуйте <font color="red">гость</font>! <br/> Авторизуйтесь и пройдите по ссылке! </div> <?php } else //Иначе. { $login=$_SESSION['login']; //Подключаемся к базе данных. $dbcon = mysql_connect("localhost", "имя администратора базы", "пароль администратора базы"); mysql_select_db("имя базы данных", $dbcon); if (!$dbcon) { echo "<p>Произошла ошибка при подсоединении к MySQL!</p>".mysql_error(); exit(); } else { if (!mysql_select_db("имя базы данных", $dbcon)) { echo("<p>Выбранной базы данных не существует!</p>"); } } //Формирование оператора SQL SELECT $sqlCart = mysql_query("SELECT Поле с именами посетителей из таблицы FROM имя таблицы WHERE login = '$login'", $dbcon); //Цикл по множеству записей и вывод необходимых записей while($row = mysql_fetch_array($sqlCart)) { //Присваивание записей $name = $row["name"]; } mysql_close($dbcon); // Если не пусты, то мы выводим ссылку echo " <div align='center' style='border: 0px solid blue; position:relative; top:100px; left:350px; height:100px; width="99%";'> <font color='green'>Здравствуйте: "."<font color='red'>".$name."</font>!</font> <br/> Вы можете перейти по ссылке: <a href='http://www.xxx.ru'>http://www.xxx.ru</a> <br/> <a href='viiti.php'>выйти</a> <br/> </div>"; } ?> </body> </html> |
Файл proverca.php:
<?php header('Content-Type: text/html; charset=utf-8'); setlocale(LC_ALL,'ru_RU.65001','rus_RUS.65001','Russian_Russia.65001','russian'); session_start();// вся процедура работает на сессиях. Именно в ней хранятся данные пользователя, пока он находится на сайте. Очень важно запустить их в самом начале странички!!! if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт { exit ("<body><div align='center'><br/><br/><br/><h3>Вы ввели не всю информацию, вернитесь назад и заполните все поля!" . "<a href='index.php'> <b>Назад</b> </a></h3></div></body>"); } //если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести $login = stripslashes($login); $login = htmlspecialchars($login); $password = stripslashes($password); $password = htmlspecialchars($password); //удаляем лишние пробелы $login = trim($login); $password = trim($password); //Подключаемся к базе данных. $dbcon = mysql_connect("localhost", "имя администратора базы", "пароль администратора базы"); mysql_select_db("имя базы данных", $dbcon); if (!$dbcon) { echo "<p>Произошла ошибка при подсоединении к MySQL!</p>".mysql_error(); exit(); } else { if (!mysql_select_db("имя базы данных", $dbcon)) { echo("<p>Выбранной базы данных не существует!</p>"); } } //извлекаем из базы все данные о пользователе с введенным логином $result = mysql_query("SELECT * FROM имя таблицы WHERE login='$login'", $dbcon); $myrow = mysql_fetch_array($result); if (empty($myrow["password"])) { //если пользователя с введенным логином не существует exit ("<body><div align='center'><br/><br/><br/> <h3>Извините, введённый вами login или пароль неверный." . "<a href='index.php'> <b>Назад</b> </a></h3></div></body>"); } else { //если существует, то сверяем пароли if ($myrow["password"]==$password) { //если пароли совпадают, то запускаем пользователю сессию! Можете его поздравить, он вошел! $_SESSION['login']=$myrow["login"]; $_SESSION['id']=$myrow["id"];//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь header("Location:index.php"); } else { //если пароли не сошлись exit ("<body><div align='center'><br/><br/><br/> <h3>Извините, введённый вами login или пароль неверный." . "<a href='index.php'> <b>Назад</b> </a></h3></div></body>"); } } ?> |
Для того чтобы выйти нам потребуется файл который удалит все глобальные переменные «сессии». Мы этот файл привяжем к ссылке «выйти», которая будет видна только авторизированному пользователю.
Файл viiti.php:
<?php session_start(); session_destroy(); header("Location:index.php"); ?> |
Di Подскажите вот залогинился если создать другую страницу с текстом как сделать так, что бы при отсутствии сессии блокировалась загрузка страницы, а при наличии пользователя страница прогружалась дальше?
sasha Этот код отвечает за проверку сессии и выдачи соответствующего результата: if (empty($_SESSION[’login’])) {echo «Неизвестный пользователь!»;} else {echo «Основной текст»;} Этот код проверяет существует ли сессия, если нет, то прерываем дальнейшую загрузку документа: < ?php if (empty($_SESSION[’login’])) {exit ("Страница не найдена!" );} ?> html документ
Игорь Большое спасибо!! Очень долго искал и наконец то встретил подробное и удобочетаемое и легкопонимаемое описание!
Batir Спасибо огромное!!!
Вова не получается сделать проверку сессии. $_SESSION[’login’] пустой получается на странице которую нужно проверить
Дмитрий Не работает код
Александр А у меня работает!