
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() © Nixon official ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 1600 Пользователь №: 30142 На форуме: Карма: 18 Трезвый : 32 года, 12 дней ![]() |
PHP и HTTP. Тут есть такие строки:
Для установки Cookies используется функция SetCookie(). Для этой функции можно указать шесть параметров, один из которых является обязательным: name - задает имя (строк), закрепленное за Cookie; value - определяет значение переменной (строка); expire - время "жизни" переменной (целое число). Если данный параметр не указать, то Cookie будут "жить" до конца сессии, то есть до закрытия браузера. Если время указано, то, когда оно наступит, Cookie самоуничтожится. path - путь к Cookie (строка); domain - домен (строка). В качестве значения устанавливается имя хоста, с которого Cookie был установлен; secure - передача Cookie через защищенное HTTPS-соединение. Можно пример с использованием всех параметров сразу? А то сколько уже читаю, ничего понять не могу.. Спустя 16 минут, 30 секунд (16.04.2012 - 17:11) Xpund написал(а): $t=TIME +60*60*24*14; DOMEN - константа Спустя 13 минут, 4 секунды (16.04.2012 - 17:24) killer8080 написал(а): Спустя 14 часов, 50 минут, 14 секунд (17.04.2012 - 08:14) Ramzil_Nixon написал(а): А чтобы эти куки обратно при входе на сайт встроились на сессию, ничего делать не надо? Спустя 1 минута, 52 секунды (17.04.2012 - 08:16) killer8080 написал(а):
В смысле? Механизм сессий в php сам устанавливает куки. Спустя 2 минуты, 56 секунд (17.04.2012 - 08:19) Ramzil_Nixon написал(а):
Куки у меня больная тема, понять все еще не могу. 5 месяцев изучаю, но нет Спустя 3 минуты, 32 секунды (17.04.2012 - 08:22) Игорь_Vasinsky написал(а): а чё там понимать? кики пишутся на комп юзера ввиде файла с шифврованной строкой параметры кук ты видел, можно установить срок жизни, домен на котором они применимы, задать имя кукам и значение. Всё. потом проверять наличие этих кук на машине юзера если необходимо. отличие от сессий - то что при закрытии браузера сессия заканчивается, сами сессии харнятся в отдельной директории на сервере. А куки лежат у юзера. Спустя 3 минуты, 19 секунд (17.04.2012 - 08:26) killer8080 написал(а):
Вот он корень зла, нельзя сравнивать куки и сессии, это как минимум не корректно. Основной способ передачи сессионных id как раз и есть куки. И сессия не заканчивается при закрытии браузера, время жизни сессионных кук так же настраивается. Спустя 5 минут, 1 секунда (17.04.2012 - 08:31) Игорь_Vasinsky написал(а): так я про настройки времени жизни сессий и упустил момент. лично у меня такая паралель между куками и сессией, а если конкретнее то для меня это аналогия - так как данные доступны на разных страницах что сессионые либо куки, без дополнительной передачи их. Спустя 1 минута, 44 секунды (17.04.2012 - 08:32) Ramzil_Nixon написал(а):
Я вот этот часть особенно не понимаю.. Спустя 8 минут, 35 секунд (17.04.2012 - 08:41) killer8080 написал(а):
Параллель примерно такая же как между машиной и колесами. Машина - это транспортное средства, колеса - грубо говоря часть машины, которая используется для выполнения задачи. Куки - это транспорт, для передачи переменных, сессии - это система использующая куки как транспорт. В любом случае в механизме авторизации используется механизм сессий, вопрос лишь в том какой. Либо встроенный механизм в php, либо его самописный аналог.
Что тут понимать куки обычный http заголовок, как и любой другой. Посмотри в фаербаге как выглядит запрос с куками, и все сразу станет ясно. Спустя 3 минуты, 50 секунд (17.04.2012 - 08:45) Игорь_Vasinsky написал(а): ну как же???? ты же когда работаешь с сессией - тоже создаёшь сессионную переменную, а именно элемент (с ключём - именем) ассоц массива суперглобального массива $_SESSION //Создали А в куках нужно сначала установить куку) //Кука с именем login, значением Ramzil_Nixon, будет жива 1 час, потом удалиться в течении часа это строка будет выводить Ramzil_Nixon, потом нотис :lol: killer8080 да я со стороны разработчика их применимости аналогию провожу, а не особенности их строения или кто от кого зависит. Спустя 7 минут, 7 секунд (17.04.2012 - 08:52) killer8080 написал(а):
Ну так в сессиях все тоже самое. session_start() выставляет куки, абсолютно так же как и setcookie(), а массив $_SESSION это удобный интерфейс, для того чтоб тебе не думать о том как и откуда прочитать данные, всю эту рутину за тебя делает стандартный механизм сессий. Спустя 5 минут, 18 секунд (17.04.2012 - 08:57) Игорь_Vasinsky написал(а): ну эт разные вещи)) при отсутствии session_start() мы получим болт при попытке чтения $_SESSION, всего а setcookie() тока создаст куку (если куки в браузере не отключены) Спустя 5 минут, 10 секунд (17.04.2012 - 09:02) killer8080 написал(а):
конечно разные, о чем я и говорю, что нельзя проводить параллель между механизмом и инструментом, который этот механизм использует. Если ты используешь самописный механизм, то в любом случае переменные сессии хранишь где то и ассоциируешь их с идентификатором. Не все же безопасно хранить в куках ![]() Спустя 3 минуты, 57 секунд (17.04.2012 - 09:06) glock18 написал(а):
послушал бы товарища, он дело говорит ![]() session_start проверяет наличие сессионной куки в заголовке запроса (если не установлено передавать sessid через урл), и если ее нет, то выставляет в ответ хедер set-cookie на ее установку. Во втором случае делает почти то же самое, что и setcookie (всего лишь параметры сам определяет)
ну как же, без дополнительной передачи. Как же ты интересно куку "login/имя" будешь получать при последующих запросах? Спустя 2 минуты, 55 секунд (17.04.2012 - 09:09) Игорь_Vasinsky написал(а): я вот о чём. если есть форма в несколько этапах - данные с неё можно ловить либо передавая в хидден полях, либо в сессионном массиве (куки как то здесь не очень) я же говорю - я провожу аналогию к применения и не устройства. Спустя 7 минут, 31 секунда (17.04.2012 - 09:17) glock18 написал(а):
ну, по сути куки там "не очень" настолько же, насколько "не очень" передача в хидденах через post/get. Те же яйца, только вид сбоку ![]() Что касается применения, право, много что применяется подобным образом (по сути set/get на каком-то хеш-хранилище). Но нельзя же на основании этого, говорить, что, скажем, сессии похожи на redis или memcache. Хотя мб ТСу так понятнее и будет, учить что-либо все равно, я считаю, нужно не начиная с ложных предположений, "помогающих" лишь первое время. Спустя 4 минуты, 7 секунд (17.04.2012 - 09:21) Игорь_Vasinsky написал(а): может быть, может. Спустя 40 минут, 26 секунд (17.04.2012 - 10:01) Ramzil_Nixon написал(а):
Вот - вот, мне этот пример и нужен был, спасибо! ![]() Спустя 11 минут, 20 секунд (17.04.2012 - 10:13) Ramzil_Nixon написал(а):
И еще один вопрос, для пароля и логина нужны отдельные куки создать? Спустя 1 минута, 44 секунды (17.04.2012 - 10:14) killer8080 написал(а):
Ни в коем случае, ни под каким предлогом нельзя хранить пароли, и даже их хеши в куках. Вот для того сессии и придуманы ![]() Спустя 1 минута, 34 секунды killer8080 написал(а): Вот почитай статейку о сессиях http://www.php.su/articles/?cat=examples&page=070 Спустя 3 минуты, 2 секунды (17.04.2012 - 10:17) Ramzil_Nixon написал(а):
И шифрованный пароль нельзя? ![]() Спустя 3 минуты, 16 секунд (17.04.2012 - 10:21) killer8080 написал(а):
А ты хочешь чтоб тебя ломали? ![]() Спустя 13 минут, 30 секунд (17.04.2012 - 10:34) Ramzil_Nixon написал(а):
Неа :) Вот написал так: setcookie('login', $User['login'], time() + 99999); Закрываю, открываю браузер, но все еще сбрасывается сессии Спустя 1 минута, 17 секунд (17.04.2012 - 10:36) Игорь_Vasinsky написал(а): а как проверяешь наличие? Спустя 3 минуты, 2 секунды (17.04.2012 - 10:39) Ramzil_Nixon написал(а):
Никак. а как это? o_O Спустя 28 минут, 46 секунд (17.04.2012 - 11:07) Ramzil_Nixon написал(а): Есть тут кто? Спустя 5 минут, 56 секунд (17.04.2012 - 11:13) killer8080 написал(а):
Так откуда знаешь что что-то сбрасывается ![]() Спустя 1 минута, 15 секунд (17.04.2012 - 11:15) Ramzil_Nixon написал(а):
А ты на счет сессии что ли? ![]() меняются ссылки "Вход и регистрация" на ссылку профиля и на выход ![]() Спустя 6 минут, 47 секунд (17.04.2012 - 11:21) killer8080 написал(а):
Ну так ты используешь стандартные сессии, или что? Покажи код. Иначе ничего не понятно, причем здесь вручную установленная кука к сессиям. Спустя 1 минута, 34 секунды (17.04.2012 - 11:23) Ramzil_Nixon написал(а): $_SESSION Я использую if(!isset($_SESSION['id'])) Спустя 7 минут, 33 секунды (17.04.2012 - 11:30) killer8080 написал(а): Ramzil_Nixon а где session_start()? И с логикой у тебя проблемы, не нужно в сессии хранить пароль, и при каждом запросе дергать базу в поисках юзера, достаточно проверить один раз, и выставить флаг авторизации. Если нужно дополнительно ограничить время жизни авторизованной сессии, можно дополнительно, там же в $_SESSION, фиксировать время последнего обращения. Выставлять куки с логином, это лишнее, просто храни логин в сессии. Так же при разлогинивании юзера, не обязательно делать session_destroy(), просто удаляешь флаг авторизации из $_SESSION. Спустя 6 минут, 1 секунда (17.04.2012 - 11:36) Ramzil_Nixon написал(а):
Он есть, просто здесь не выложил.
В сессии пароли не храню
Я с $_SESSION['id']'ом больше пользуюсь.
А вот тут ничего не понял.. Спустя 5 минут, 4 секунды (17.04.2012 - 11:41) killer8080 написал(а): При успешной проверке логина и пароля, создаешь $_SESSION['auth'] = 1; И используешь наличие этой переменной как флаг, что юзер авторизован. При завершении сеанса просто unset($_SESSION['auth']); и редирект. Спустя 2 минуты, 42 секунды (17.04.2012 - 11:44) Ramzil_Nixon написал(а):
Но все же как минимум ID пользователя тоже придется в сессии хранить? Спустя 6 минут, 9 секунд (17.04.2012 - 11:50) killer8080 написал(а):
да там много чего можно хранить ![]() В сессии могут хранится еще какие нибудь опции, которые могут быть нужны и после завершения сеанса, поэтому я предлагаю не использовать session_destroy(), ну в общем это не принципиально, в твоем случае может и не нужно. ![]() Спустя 1 минута, 48 секунд (17.04.2012 - 11:52) Ramzil_Nixon написал(а):
Я просто хотел узнать про куки ![]() Спустя 3 минуты, 29 секунд (17.04.2012 - 11:56) killer8080 написал(а):
узнал? ![]() Спустя 3 минуты, 19 секунд (17.04.2012 - 11:59) Ramzil_Nixon написал(а):
Но все же почему сбрасывается, когда я перезагружаю браузер? ![]() Спустя 6 минут, 30 секунд (17.04.2012 - 12:05) killer8080 написал(а):
У тебя mysql_num_rows() идет после mysql_fetch_assoc() Спустя 7 минут, 48 секунд (17.04.2012 - 12:13) Ramzil_Nixon написал(а):
А разве это играет какую-то роль? Спустя 3 минуты, 55 секунд (17.04.2012 - 12:17) killer8080 написал(а):
А разве нет? Тебе запрос при успешном варианте возвращает один ряд выборки, mysql_fetch_assoc() считывает этот ряд сдвигая курсор. То есть после этого запроса рядов остается ноль, что должна вернуть mysql_num_rows()? ![]() Спустя 9 минут, 13 секунд (17.04.2012 - 12:26) Ramzil_Nixon написал(а): А где в chrome можно посмотреть сохраненные куки? Спустя 11 секунд (17.04.2012 - 12:27) killer8080 написал(а): Пардон, тут я был не прав, оказывается mysql_num_rows() возвращает количество и после выборки данных через mysql_fetch_assoc() Спустя 3 минуты, 22 секунды (17.04.2012 - 12:30) killer8080 написал(а):
chrome://settings/cookies Спустя 3 минуты, 39 секунд (17.04.2012 - 12:34) Ramzil_Nixon написал(а):
Получается все там у меня было правильно? ![]()
Там у меня кук сохраняется, только вот не понимаю, почему я в каждом входе должен все еще ввести пароль и логин ![]() Спустя 6 минут, 39 секунд (17.04.2012 - 12:40) killer8080 написал(а):
session_start() в начале точно есть? error_reporting(E_ALL) ошибки выдает? Спустя 21 минута, 46 секунд (17.04.2012 - 13:02) glock18 написал(а): А теперь - внимание, контрольный вопрос! Ты из кук в сессию то переносишь данные при авторизации по ним, не? ![]() Спустя 15 минут, 30 секунд (17.04.2012 - 13:17) Ramzil_Nixon написал(а):
А вот это нет ![]() Спустя 2 минуты, 21 секунда (17.04.2012 - 13:20) killer8080 написал(а): я вообще не понял, зачем там куки? Спустя 8 минут, 52 секунды (17.04.2012 - 13:29) glock18 написал(а):
ну дк чего тогда еще вопросы задавать ![]() Спустя 54 секунды (17.04.2012 - 13:30) Ramzil_Nixon написал(а):
хотелось бы узнать как из кук в сессию то переносить? Спустя 15 минут, 4 секунды (17.04.2012 - 13:45) glock18 написал(а): ну, это сложно очень объяснить коротко... наверно, как-то так $_SESSION['yap'] = $_COOKIE['yap']; предчувствую следующие вопросы, сразу направлю тебя в гугл с запросом "php remember me" ;) Спустя 1 час, 9 минут, 34 секунды (17.04.2012 - 14:54) Ramzil_Nixon написал(а): Так будет что ли? if(isset($_COOKIE['yap'])) Спустя 18 минут, 14 секунд (17.04.2012 - 15:12) Ramzil_Nixon написал(а): upppp Спустя 6 минут, 28 секунд (17.04.2012 - 15:19) killer8080 написал(а):
А зачем это нужно? Не проще сразу в сессию писать? Спустя 3 минуты, 3 секунды (17.04.2012 - 15:22) Ramzil_Nixon написал(а):
Понял, щас попробую.. Спустя 1 час, 7 минут, 57 секунд (17.04.2012 - 16:30) Ramzil_Nixon написал(а): Ну куки записываются. но почему $_COOKIE у меня всегда пуст? Спустя 18 часов, 20 минут, 8 секунд (18.04.2012 - 10:50) Ramzil_Nixon написал(а): Я разобрался! ![]() Спустя 11 дней, 15 часов, 9 минут, 36 секунд (30.04.2012 - 02:00) Andrest написал(а): name - задает имя (строк), закрепленное за Cookie; value - определяет значение переменной (строка); expire - время "жизни" переменной (целое число). Если данный параметр не указать, то Cookie будут "жить" до конца сессии, то есть до закрытия браузера. Если время указано, то, когда оно наступит, Cookie самоуничтожится. path - путь к Cookie (строка); domain - домен (строка). В качестве значения устанавливается имя хоста, с которого Cookie был установлен; secure - передача Cookie через защищенное HTTPS-соединение. ПОЗНОВАТЕЛЬНО!!! -------------------- Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() ![]() ![]() |