После успешной регистрации пользователь может перейти с главной страницы по ссылке Авторизация. При этом он должен ввести свой логин и пароль, и, если в таблице 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;
?>
Результат должен получиться примерно таким: