Шаг 6. Реализация функции авторизации

После успешной регистрации пользователь может перейти с главной страницы по ссылке Авторизация. При этом он должен ввести свой логин и пароль, и, если в таблице users будет строка с такими же логином и паролем, то пользователю должна стать доступна какая-либо дополнительная функция сайта. В нашем случае, при переходе на главную страницу он должен увидеть ссылку «Оставить отзыв».

Создаем форму авторизации (avtor.php):

<html>

<head>

<title>Авторизация</title>

</head>

<body>

<h2>Авторизация</h2>

<!—Начало формы авторизации. test_user.php - это адрес обработчика. То есть, после нажатия на кнопку "Зарегистрироваться", данные из полей передаются обработчику test_user.php методом "post" -->

<form action="test_user.php" method="post">

<!--В текстовое поле c именем login пользователь вводит свой логин -->    

<p>                                       

      <label>Ваш логин:<br></label>

      <input name="login" type="text" size="15" maxlength="15">

  </p>

<!-- В поле для паролей с именем pass пользователь вводит свой пароль -->

<p>

     <label>Ваш пароль:<br></label>

     <input name="pass" type="password" size="15" maxlength="15">

</p>

<!--Кнопка (type="submit") отправляет данные обработчику test_user.php >

<p>

    <input type="submit" name="submit" value="Войти">

</p>

</form>

</body>

</html>

Результат:

 

Создаем файл-обработчик (test_user.php):

<?php

//Обязательно запускаем сессию!

session_start();

//Сохраняем введенные пользователем логин и пароль в переменные $login и $pass

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }

if (isset($_POST['pass'])) { $pass=$_POST['pass']; if ($pass =='') { unset($pass);} }

//если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт

if (empty($login) or empty($pass))

{

   exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");

}

// подключаемся к базе

include ("dbconnect.php");

  //извлекаем из базы все данные о пользователе с введенным логином

$result = $mysqli->query("SELECT * FROM users WHERE login='$login'");

//помещаем эти данные в ассоциативный массив

$myrow = $result->fetch_assoc();

//Проверяем, существует ли пользователь с таким логином

if (empty($myrow['Login']))

{

  exit ("Извините, введённый вами login или пароль неверный.");

}

else {

// если существует, то сверяем пароли

if ($myrow['Pass']==$pass) {

// если пароли совпадают, то запускаем пользователю сессию. Это означает, что в специальных сессионных переменных сохраняются важные сведения об этом пользователе, в данном случае – ID и логин*/

$_SESSION['login']=$myrow['Login'];

$_SESSION['id']=$myrow['ID'];

//Выводятся соответствующие сообщения пользователю

echo "Вы успешно вошли на сайт! <a href='index.php'>Главная страница</a>";

}

 else {

//если пароли не сошлись

exit ("Извините, введённый вами login или пароль неверный.");

}

}

?>

Перейдите по ссылке Авторизация и введите один из логинов и паролей зарегистрированных ранее пользователей. Убедитесь, что функция работает.

Убедитесь в том, что теперь после перехода на главную страницу ссылки Авторизация и Регистрация заменены на ссылки Вы можете оставить отзыв и Выйти. Это произошло потому, что переменные сессии теперь не пусты, и это условие сработало при загрузке страницы.

Шаг 7. Реализация функции Оставить отзыв.

Создадим форму для отзыва (файл remarks.php)

<html>

<head>

<title>Отзывы</title>

</head>

<body>

<h2>Оставьте свой отзыв</h2>

//Форма будет обработана файлом save_remarks.php

<form action="save_remarks.php" method="post">

<!—В текстовую область (name="tema") пользователь вводит тему своего отзыва-->

<p>

<label>Тема сообщения:<br></label>

<textarea name="tema" cols="38" rows="3"></textarea>

</p>

 

<!—В текстовую область (name="text") пользователь вводит текст своего отзыва-->

<p>

<label>Введите текст сообщения:<br></label>

<textarea name="text" cols="38" rows="6"></textarea>

</p>

<!--Кнопка отправляет данные на страницу-обработчик save_remarks.php >

<p>

  <input type="submit" name="submit" value="Сохранить">

</p>

</form>

    </body>

</html>

И файл-обработчик- save_remarks.php. Этот файл должен сохранить введенный отзыв в таблице remarks нашей базы данных и перенаправить пользователя на страницу (например contacts.ph p), где будут выведены все имеющиеся в базе данных отзывы.

<?php

//старт сессии

session_start();

/*получаем с формы и сохраняем в соответствующих переменных введенные тему и текст отзыва*/

if (isset($_POST['tema'])) { $tema = $_POST['tema']; if ($tema == '') { unset($tema);} }

if (isset($_POST['text'])) { $text=$_POST['text']; if ($text =='') { unset($text);} }

//если пользователь не ввел тему или текст, то выдаем ошибку и останавливаем скрипт

if (empty($tema) or empty($text)) {

  exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");

}

else

{                 

//если тема и текст введены, то сохраняем сообщение в таблицу remarks бд travel

      // подключаемся к базе

include ("dbconnect.php");

     //если не пуста переменная сессии, сохраняем ID текущего пользрвателя

if (!empty($_SESSION['id'])) {

    $kod=$_SESSION['id'];

          // сохраняем данные

    $result = $mysqli->query ("INSERT INTO remarks (ID_user, tema, text) VALUES('$kod','$tema','$text')");

// Проверяем, есть ли ошибки

if ($result=='TRUE')

{

     //Перенаправляем пользователя на страницу просмотра отзывов

echo "Ваше сообщение сохранено! Перейти к просмотру сообщений. <a href='contacts.php'>О нас</a>";

}

else

{

echo "Ошибка! Сообщение не сохранено";

}

}

}

?>

 

Страница просмотра всех отзывов, которые имеются в базе данных может быть организована на одной из страниц сайта. Например, если нужно просматривать ее по ссылке в главном меню сайта «О нас», то в области контента страницы contacts.php должен быть размещен следующий код (как только мы вставляем в какую либо страницу фрагмент php, страница должна быть переименована с расширением. php):

<?php

//Подключаем базу данных

include ("dbconnect.php");

//Получаем все строки, которые есть в таблице remarks

$result = $mysqli->query("SELECT * FROM remarks");

//Начинаем строить таблицу, присваиваем ей имя $table

$table = "<table>";

//Начинаем вести счетчик отзывов (строк в таблице)

$k=1;

//Начинаем цикл, позволяющий вывести все отзывы из таблицы remarks

while($myrow = $result->fetch_assoc())

{

$table.= "<tr>";

$table.= "<td>".$myrow['tema']."</td>";

$table.= "<td>".$myrow['text']."</td>";

$table.= "</tr>";

$k++;

}

//Закрываем таблицу

$table.= "</table>";

//Выводим сформированную таблицу

echo $table;

?>

Результат должен получиться примерно таким:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: