Уроки:


  
HTML
  
  
CSS
  
  
PHP
  
  
JavaScript
  
  
jQuery
  
  
PHP+MySQL
  
  
Ajax
  

  Разделы:


  В помощь:


  Ещё:



  Авторизация:


  логин:   
  пароль: 
Разговор подруг:
- Мой муж программист - дебил. Сделали сыну прививки и он написал на ребенке маркером: «Вирусная база обновлена 01.10.12 г.»

  Тренажер интуиции:


Тренажер интуиции


  Видеокурсы:


Бесплатный видеокурс: "Cайт-визитка за 1 день"

видеокурс: Сайт-визитка за один день



  Опрос:



  Топ комментаторов:


40

Парень не может оторваться от компьютера. Родители вызвали доктора. Доктор осмотрел его и сказал:
— Его придётся лечить!
Родители:
— Как?
— Сигаретами, выпивкой, девочками...

  Моя группа в контакте:



Самый простой пример реализации формы входа на сайт

Итак, давайте сделаем форму входа (авторизации) на сайт и поставим на главную страницу ссылку, которая будет видна только авторизованным пользователям.

Пример формы входа на сайт

Для этого необходимо создать два файла с расширением «php»:

  1. index.php – это главная страница сайта и здесь мы установим форму авторизации с двумя полями (логин и пароль) а ниже поставим надпись, которая просит авторизоваться и перейти по ссылке, а ссылка в свою очередь будет видна только авторизованному пользователю.

  2. 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:300px;">
		
<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:300px;'>

	<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"); 
?>

1 2

Комментарии


Di
Подскажите вот залогинился если создать другую страницу с текстом как сделать так, что бы при отсутствии сессии блокировалась загрузка страницы, а при наличии пользователя страница прогружалась дальше?
2014-04-17 12:42
Этот код отвечает за проверку сессии и выдачи соответствующего результата:
if (empty($_SESSION[’login’]))
    {echo "Неизвестный пользователь!";}
else
    {echo "Основной текст";}

Этот код проверяет существует ли сессия, если нет, то прерываем дальнейшую загрузку документа:
<?php
    if (empty($_SESSION[’login’]))
    {exit ("Страница не найдена!" );}
?>
html документ
2014-04-17 22:47
Большое спасибо!! Очень долго искал и наконец то встретил подробное и удобочетаемое и легкопонимаемое описание!
2014-05-11 23:44
Batir
Спасибо огромное!!!
2014-11-16 22:02
Вова
не получается сделать проверку сессии. $_SESSION[’login’] пустой получается на странице которую нужно проверить
2015-05-11 13:40
Дмитрий
Не работает код
2016-04-16 11:50
Александр
А у меня работает!
2016-04-16 12:13

Ваш комментарий



Почта: info@web-shpargalka.ru
Сообщить друзьям:
Главная | Форум | Отзывы | Обо мне | Мои курсы | Работы учеников | Конкурсы | Обратная связь