Сессия - это сеанс, во время которого система различает различных пользователей. Реализуется она по-разному. В том числе, и при помощи cookies.
Как правильно написал Саня, куки - просто файлики, которые хранятся у клиента и посылаются каждый раз при посылке запроса на загрузку страницы с нужного домена. Проблемы тут не две, а три: куки можно не только подделать и украсть. Их еще можно не принимать. Тогда создать сессию не получится. (Правда, с отключенными кукисами ходят, пожалуй, только гики и извращенцы).
В пхп сессии реализуются довольно сложно, но эффективно. Сначала генерируется идентификатор сессии. Затем, на сервере создается файл, имя которого совпадает с этим идентификатором. В этот файл могут писаться какие-то данные о пользователе. Сам пользователь получает этот идентификатор сессии в cookie. Если куки у юзера отключены, то пхп начинает динамически изменять ссылки так, чтобы идентификатор сессии передавался в строке запроса, то есть, get-методом. Таким образом обеспечивается бОльшая надежность, по сравнению с использованием только куки.
Кроме того, при использовании пхп-сессий, клиент держит у себя только куку с идентификатором сессии, а все данные хранятся на сервере, поэтому подделать их(данные) нельзя. Можно только передать идентификатор не своей сессии, тогда получится кража сесии.
Нужно еще заметить, что механизм сессий в пхп работает все-таки с файлами, причем проводит их разбор, для вычленения данных, поэтому, этот метод работает несколько медленнее, чем создание сессии при помощи простых куков.
Что выбирать - решать нужно в зависимости от ситуации. Если нужна надежность, поддержка максимального количества юзверей, и быстрота не роляет - юзайте сессии. Если нужна скорость и простота - куки.
В конечном итоге, в пхп почти всегда для создания сессий нужно пользоваться пхп-шными сессиями. Куки применяют для запоминания некритичных данных о пользователе (логин для комментариев или настройки меню).
[свернуть]