Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
VLK
195 / 164 / 19
Регистрация: 05.05.2013
Сообщений: 1,224
1

Проверка логина и пароля на каждой странице

03.12.2013, 15:42. Просмотров 1236. Ответов 4
Метки нет (Все метки)

Прочитал книгу по PHP, решил написать для проверки и пополнения своих знаний мини CMS, что то типа сайта визитки / мини блог, вопрос такой, у меня на каждой странице выполняется проверка авторизован пользователь или нет, выглядит это так:

Кликните здесь для просмотра всего текста
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
<?php
/* функция check_user() - соединяется с базой данных, делает запрос в БД, 
проверяет полученные данные из БД и возвращает true или false */
 
/* функция print_mes() по мимо сообщений выводит форму входа
или статус пользователя, если он авторизован */
 
function check() {
 
if ( isset($_SESSION['login']) && isset($_SESSION['password']) ) 
{  if ( check_user($_SESSION['login'], $_SESSION['password']) )
{ print_mes("Вы авторизованы"); }
else { print_mes("Вы НЕ авторизованы!"); }
}
 
else if ( isset($_COOKIE['login']) && isset($_COOKIE['password']) )
{ if ( check_user($_COOKIE['login'], $_COOKIE['password']) )
{ print_mes("Вы авторизованы"); 
$_SESSION['login'] = $_COOKIE['login'];
$_SESSION['password'] = $_COOKIE['password'];
}
else { print_mes("Вы НЕ авторизованы!"); }
}
 
else if (  isset($_POST['login']) && isset($_POST['password']) )
{
if ( check_user($_POST['login'], $_POST['password']) )
{ print_mes("Вы авторизованы"); 
$_SESSION['login'] = $_POST['login'];
$_SESSION['password'] = $_POST['password'];
/* ну еще записывает в COOKIE данные */
}
else { print_mes("Вы НЕ авторизованы!"); }
}
 
else { print_mes("Вы НЕ авторизованы!"); }
}
?>


т.е. при переходе со страницы на страницу каждый раз выполняется данный код, правильно ли это? в частности речь идет о том, что каждый раз происходит выпонение функции check_user, а это: соединение с БД, запрос, получение ответа на данный запрос, обработка его..
Или правильнее будет добавить еще одну переменную, например $_SESSION['checked'], если пользователь авторизован то данная переменная становится true и в дальнейшем при переходе со страницы на страницу будет проверятся только $_SESSION['checked'], без вызова функции check_user (соединения с БД, отправки запроса, получения ответа, обработки этого ответа) ?

как поступить правильнее?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 15:42
Ответы с готовыми решениями:

Проверка логина и пароля
хай пипл. У меня вот такая задачка. Есть форма, логин и пароль. Нужно, чтоб после заполнения,...

Проверка логина и пароля
выдает ошибку Фатальная ошибка: звонок в неопределенную функцию функцию password_verify() ...

Проверка пароля и логина
Не получается выполнить проверку логина и пароля, должно получится 4 варианта: 1) пароль и логин...

Неправильно работает проверка логина и пароля
Доброго времени суток, у меня такая проблема не как не магу разобраться с авторизацией (PHP) есть...

Проверка логина и пароля. Код надо исправить!
Надо вводить Email и пароль, и проверить правильность, должен выводиться &quot;Успешно авторизовано&quot;...

4
dmirtyi
31 / 31 / 4
Регистрация: 31.10.2013
Сообщений: 155
03.12.2013, 16:04 2
Через сессию, или даже куки
0
webphp
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327
03.12.2013, 16:40 3
Пиши в сессию нужную инфу о юзере, его id, ник, группу (если какие то права доступа есть), ну и еще одну переменную создать в сессии logged_in=true, ее то и проверять

Первый пост ИМХО бред, так как лишние ненужные проверки делает.
А вобще лучше целый класс для этого дела создать с нужными плюшками, но это пока вам не нужно делать, сейчас вам чем проще тем лучше, а то еще голову забьете не нужным материалом =)
1
VLK
195 / 164 / 19
Регистрация: 05.05.2013
Сообщений: 1,224
03.12.2013, 16:51  [ТС] 4
webphp, можно еще вопрос, косвенно относящийся к данной теме, лень просто проверять (целый день куки проверял, чуть не окосел пока разобрался как они сохраняются на компьютере)

PHP
1
2
3
4
5
6
<?php
if (/* что то проверяется */)
{ require_once(/* какой-нибудь файл содержащий функцию myfnc() */); 
/* и следом вызываю эту функцию */
myfnc(); }
?>
будет работать?

т.е. я проверяю какое то условие, если оно выполняется я подгружаю файл и тут же из подгруженного файла вызываю функцию
0
webphp
55 / 53 / 18
Регистрация: 05.08.2013
Сообщений: 327
03.12.2013, 16:58 5
будет
1
03.12.2013, 16:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 16:58

Ввод пароля и логина
Привет Всем! Подскажите пожалуйста, в главном php'ом окне если пользователь не ввел пароль и...

Запись в куки логина и пароля
Подскажите пожалуйста, после авторизации идет запись в куки логина и пароля,в личном кабинете они...

Скрипт отправки логина и пароля на сервер
Доброго дня. Не получается написать скрипт, который будет принимать данные отправленные с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.