Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В чём различие cookies и session
 
 автор: DiMoN_TD   (29.11.2007 в 09:59)   письмо автору
 
 

Привет народ!
Вот сейчас пишу страничку на php, нужна авторизация соотвственно мне, и вот тут столкнулся с проблемой (только недавно начал кодить), в чём состоит разница между cookies и session?? Что лучше? Что более надёжнее и что более быстродейственнее??
Заранее благодарен за ответ!

   
 
 автор: Саня   (29.11.2007 в 10:14)   письмо автору
 
   для: DiMoN_TD   (29.11.2007 в 09:59)
 

Сookies — файлы, хранящиеся на клиентской стороне.
Session — файлы, хранящиеся на сервере.

Кукисы можно подделать, украсть, а сессию только украсть.

   
 
 автор: SHAman   (29.11.2007 в 12:46)   письмо автору
 
   для: Саня   (29.11.2007 в 10:14)
 

Ну, если вкратце, то да:)

Сессия - это сеанс, во время которого система различает различных пользователей. Реализуется она по-разному. В том числе, и при помощи cookies.

Как правильно написал Саня, куки - просто файлики, которые хранятся у клиента и посылаются каждый раз при посылке запроса на загрузку страницы с нужного домена. Проблемы тут не две, а три: куки можно не только подделать и украсть. Их еще можно не принимать. Тогда создать сессию не получится. (Правда, с отключенными кукисами ходят, пожалуй, только гики и извращенцы).

В пхп сессии реализуются довольно сложно, но эффективно. Сначала генерируется идентификатор сессии. Затем, на сервере создается файл, имя которого совпадает с этим идентификатором. В этот файл могут писаться какие-то данные о пользователе. Сам пользователь получает этот идентификатор сессии в cookie. Если куки у юзера отключены, то пхп начинает динамически изменять ссылки так, чтобы идентификатор сессии передавался в строке запроса, то есть, get-методом. Таким образом обеспечивается бОльшая надежность, по сравнению с использованием только куки.

Кроме того, при использовании пхп-сессий, клиент держит у себя только куку с идентификатором сессии, а все данные хранятся на сервере, поэтому подделать их(данные) нельзя. Можно только передать идентификатор не своей сессии, тогда получится кража сесии.

Нужно еще заметить, что механизм сессий в пхп работает все-таки с файлами, причем проводит их разбор, для вычленения данных, поэтому, этот метод работает несколько медленнее, чем создание сессии при помощи простых куков.

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

В конечном итоге, в пхп почти всегда для создания сессий нужно пользоваться пхп-шными сессиями. Куки применяют для запоминания некритичных данных о пользователе (логин для комментариев или настройки меню).

   
 
 автор: DiMoN_TD   (29.11.2007 в 16:46)   письмо автору
 
   для: SHAman   (29.11.2007 в 12:46)
 

О, спасибо большое за объяснение.
А теперь можете объяснить принцип работы регистрации??
Именно не в виде кода, а как это должно происходить... Все темы с регистрацией я прочитал, но всё же у меня немного другого типа вопрос.
Вот допустим у меня есть индексная страница, на шапке всех моих страниц есть формочка для авторизации пользователя, есть страница register.php для регистрации, есть страница login.php собственно где происходит авторизация, после того, как юзер зарегался на сайте, ну и также есть страница check.php, как я понял проверяющая мои кукисы. Так вот, после того, как я зарегистрирован и авторизирован мне же нужно теперь показать, что я вошёл, тем, что все мои формочки для авторизации и регисрации исчезли, а значит при переходе на любую страницу мне нужно делать проверки, НО КАКИЕ ПРОВЕРКИ?? и как это можно реализовать??

Спасибо за ответ!

   
 
 автор: DiMoN_TD   (30.11.2007 в 09:13)   письмо автору
 
   для: SHAman   (29.11.2007 в 12:46)
 

так что, никто не может мне помочь?

   
 
 автор: moonfox   (30.11.2007 в 13:12)   письмо автору
 
   для: DiMoN_TD   (30.11.2007 в 09:13)
 

после успешной авторизации
заносим некий идентификатор нашего пользователя например его id из таблицы пользователей в сессиию
$_SESSION['valid_user']=$login->session;

затем проверяем
if($_SESSION['valid_user'])
{
echo 'секретная страница';
}
else {
echo 'для просмотра нужна авторизация';
}

в начале всех страниц первой строкой должно идти session_start();
а вообще удобнее использовать всего одну страницу - index.php;
и реализовать все по принципу:

if($_SESSION['valid_user']){

switch ($page)
{
case 'main';

include 'main.php';

break;
}
}
else {
include 'login.php';
}

получая page через get

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования