Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сессии (session_start())

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
gephaest
Отправлено: 17 Сентября, 2011 - 09:52:42
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Я не очень понимаю одну вещь, связанную с сессиями. Вот пользователь залогинился, создалась сессия, в переменных $_SESSION['login'] и $_SESSION['password'] сохранены логин/пасс.
Я разбираю один скрипт авторизации, тут на каждой странице автор соеденяется с базой и проверяет логин/пароль. А нафига собственно? Разве нельзя просто проверять эти 2 переменные на наличие/отсутствие данных?
 
 Top
OrmaJever Модератор
Отправлено: 17 Сентября, 2011 - 11:06:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




как я понял скрипт проверяет по базе логин и пароль а потом записывает их в сесии?
Ну вот например мы заходим на index.php, скрипт проверяет даные в бд и записывает их в сесии, дальше мы переходим по сайту и всё нормально, а если мы откроем брауез и запустим например news.php? Если там нету авторизации то сесия будет пустая и мы будем как гость пока не откроем index.php (в котором такая проверка есть, и этот файй заполнит сесии), а также мы можем зайти на любой другой файл и чтобы всегда мы были авторизированы.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
gephaest
Отправлено: 17 Сентября, 2011 - 12:18:03
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




в index.php форма, которая отправляет данные на обработчик (form action=), где если все хорошо идет запись в сессии
PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['password']=$myrow['password'];
  3. $_SESSION['login']=$myrow['login'];
  4. $_SESSION['id']=$myrow['id'];

Потом на всех других страницах сверху код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. session_start(); //запускаем сессию. Обязательно в начале страницы
  3. include ("bd.php"); // соединяемся с базой, укажите свой путь, если у вас уже есть соединение
  4.  
  5. if (!empty($_SESSION['login']) and !empty($_SESSION['password']))
  6. {
  7. //если существует логин и пароль в сессиях, то проверяем, действительны ли они
  8. $login = $_SESSION['login'];
  9. $password = $_SESSION['password'];
  10. $result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND password='$password' AND activation='1'",$db);
  11. $myrow2 = mysql_fetch_array($result2);
  12. if (empty($myrow2['id']))
  13.    {
  14.    //если логин или пароль не действителен
  15.     exit("Вход на эту страницу разрешен только зарегистрированным пользователям!");
  16.    }
  17. }
  18. else {
  19. //Проверяем, зарегистрирован ли вошедший
  20. exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); }

Как я понял механизм сессий носит с собой данные в $_SESSION постоянно, какой смысл на всех страницах проверять правильность данных $_SESSION?
 
 Top
caballero
Отправлено: 17 Сентября, 2011 - 16:17:04
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Как я понял механизм сессий носит с собой данные в $_SESSION постоянно, какой смысл на всех страницах проверять правильность данных $_SESSION?


Никакого
Нужно просто проверячть их наличие и если нет перебрасывть на страницу логина или типа того


Зачем разбирать говнокод в качестве примера?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
gephaest
Отправлено: 17 Сентября, 2011 - 17:47:19
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Не найти простых нормальный примеров, а реальные движки (будь то cms или форумы) слишком сложны
 
 Top
OrmaJever Модератор
Отправлено: 17 Сентября, 2011 - 17:48:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




gephaest пишет:
Как я понял механизм сессий носит с собой данные в $_SESSION постоянно, какой смысл на всех страницах проверять правильность данных $_SESSION?

нет не всегда, после закрытия браузера или через 24 минуты не активности сесионая кука удаляется, а затем мы открываем браузер (вкладка ведь сохранилась) или обновляем станицу через 24+ минут и видим что мы уже не авторизированы (хотя наша кука с паролем никуда не делась).


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
caballero
Отправлено: 17 Сентября, 2011 - 18:16:35
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




какая кука с паролем? Речь идет о хранении пароля в сессии
никакой нормальный человек хранить пароли в куках не будет


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
gephaest
Отправлено: 17 Сентября, 2011 - 18:24:00
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Кстати в том примере, который я разбирал именно логин+пароль хранился в куках :3
 
 Top
caballero
Отправлено: 17 Сентября, 2011 - 18:29:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Глупо.

В куках иногда хранят логин или ID юзера с базы

чтобы когда юзер выбрал чекер "запомнить меня" при логине потом можно было его автоматом авторизовать

хранить для этого пароль чтобы его вычитали трояны совсем не обязательно


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
OrmaJever Модератор
Отправлено: 17 Сентября, 2011 - 20:43:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




caballero пишет:
какая кука с паролем?

это я к примеру сказал, там может быть какойнибудь случайный хеш из базы
caballero пишет:
В куках иногда хранят логин или ID юзера с базы

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


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB