IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Помогите с $_SESSION['id']. (https://www.imho.ws/showthread.php?t=56378)

artemidka 13.04.2004 10:25

Помогите с $_SESSION['id'].
 
Помогите кто знает $_SESSION['id'];

Вообщем надо сравнивать кукисы и сессион айди...ведь они одинаковые... как?
1.как можно вывести просто на экран $_SESSION['id'] этот длинный код и print_r ($_COOKIE);
2.Как их можно сравнивать?

is_absent 13.04.2004 10:53

artemidka
сформулируй почетче то, что ты хочешь
выводить значение переменной можно оператором echo или print
сравнивать -- if (выражение == выражение) { если совпадают} else {иначе}

artemidka 13.04.2004 10:57

PHP код:

<?
php include("inc/start.php");
session_start();
echo session_id();
include("inc/end.php"); 
?>

это я пытаюсь вывести Session id, я знаю что в куках во время этой сессии записывается то что должно быть в сессии... Я потом хочу их сравнивать т.е. Session_id()==$_Cookies дело в том что мне ошибку пишет когда я просто пытаюсь сессию вывести на экран..
Вот Смотрите
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/home/tonka/ftp/sit/inc/start.php:3) in /usr/home/tonka/ftp/sit/test.php on line 3
cfc32fbba1fefbe2aec0e1c0a4699efc
Почему? Что надо изменить.
вывести я хочу для себя сессию и куки. А вообще я их сравнивать буду и выполнять соответственно действия.

is_absent 13.04.2004 11:03

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

<?php
session_start
(); 
include(
"inc/start.php"); 
echo 
session_id(); 
include(
"inc/end.php"); 
?>

я сильно подозреваю, что в файлике inc/start.php что-то типа шипки страницы :)

medved2002 13.04.2004 11:05

Цитата:

Первоначальное сообщение от artemidka
я знаю что в куках во время этой сессии записывается то что должно быть в сессии...
Ты либо не правильно знаешь либо не правильно пишешь данные сессий хранятся на серваке, в куках храниться индефикатор сессии (если стоит опция в пхп)

Цитата:

Первоначальное сообщение от artemidka
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/home/tonka/ftp/sit/inc/start.php:3) in /usr/home/tonka/ftp/sit/test.php on line 3
cfc32fbba1fefbe2aec0e1c0a4699efc

Вот он тебе и орет что не могу обратиться к кукам потому что до этого ты что-то напечатал (в 3 строке файла start.php)

artemidka 13.04.2004 11:18

echo session_id();
выводится @_is_absent ты был прав, а КУКИ????Как с ними быть, я сколько пробовала...они у меня не уживаются с сессиями..это надо быть магом что бы они друг друга не видили:)шучу.
Как $CookIES их айди?

Добавлено через 10 минут:
PHP код:

<?php
session_start
();
include(
"inc/start.php");
echo 
session_id();
print_r ($_COOKIE);            #вот это выводится в виде:( [b] => b [PHPSESSID] => 6fcc8fe38c616205ffa8ef918b969ba4 )  КАК МОЖНО ВЫВЕСТИ ПРОСТО ЗНАЧЕНИЕ??

include("inc/end.php");
?>


medved2002 13.04.2004 11:31

А зачем тебе сравнивать данные кук и сессий? Опиши задачу?

is_absent 13.04.2004 11:33

echo $_COOKIE['PHPSESID'] %-)
все же написано...

Добавлено через 1 минуту:
artemidka
а если ты хочешь вывести данные, которые хранятся в самой сессии, то куки тут непричем. :) для этого надо смотреть массив $_SESSION

artemidka 13.04.2004 11:34

PHP код:

<?<?php
session_start
();
include(
"inc/start.php");
echo 
"sis".session_id();
echo 
"<br>";
echo 
"cook".$_COOKIE['PHPSESID'] ;
include(
"inc/end.php");
?>;?>

Кук не выводится
@_is_absent А как? Как можно посмотреть Массив СЕССИОН?

is_absent 13.04.2004 11:36

artemidka
дык... а сессию кто создавать будет? или хотя бы кук повешать.
session_srart() в начало файла допиши

artemidka 13.04.2004 11:38

@_is_absent
medved2002
Я себе вообще задачу как поставила, вообще есть товары и карзина, и чтобы человек мог перекидывать в нее и удалять....надо ведь идентификаю поставить ну мол это карзина Васи, Это карзина Пети..по сессион ай ди можно вполне ариентироваться. Я думаю если сравнивать сессион ай ди и то что в куках то можно что то уже делать...а реализовала в своем сайте(домашняя страничка) это с помощью ПХП ..но это изврат в php! Как это правильно сделать?

is_absent 13.04.2004 11:44

artemidka
имхо, не получится. поскольку идентифитактор сессии генерируется накаждыйй визит. то есть если петя зайдет два раза (даже с одного и того же компьютера), при условии, что он после первого визита закрыл браузер, то SID будет другой. соответственно и в куках будет тоже другое значение.
имхо нужно просто авторизировать пользователя. для каждого пользователя держать пару логин/пароль логин уникален). и заходишь каждый раз. можно еще куку вешать (где хранить хеш от логина и пароля), это позволит впоследствии не вводить эти самые логин и пароль, но это вешь такая... не любят ее почему-то.
нужна конкретная реализация или хватит идей? :)
а насчет сравнивать.. эти два значения будут ВСЕГДА одинаковы :)

medved2002 13.04.2004 11:46

1. Правильней решить критична ли информация которую ты будешь хранить в сессиях (ибо сессие ресурсозатратны). Что пихают в сессии - инфу которую нельзя доверить пользователю.

2. А товары котрые пользователь положил в корзину ты где хранишь?

artemidka 13.04.2004 11:49

Стой, дело в том что мне и нужно чтобы каждый раз после закрытия браузера..т.е. по завершению сессии.. карзина пустая была....
Да идей я не знаю...голова пухнет. Думаю а если просто сделать...без сессий куков только СЕССИОН АЙ ДИ И БАЗА МУСКЛА? Если сравнивать значение мускла и этого пользователя..то все будит ок? Сама себе и на вопрос ответила.
Глянь..зашел чел. Под него табличка отделльно создалась с его названием сессии..
Только он начинает что то заказыватьего табличка забивается....а потом преддложить ему в конце когда он окончательно захочет подтвердить заказ форму с авторизацией...вернее куда чего и сколько:)
Вообщем это как сочинение писать в школе всегда можно обойти другими путями- это же не диктант)

medved2002 13.04.2004 11:57

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

2. А от регистрации пользователя чтонибудь зависит? Скидки? Запоминает несколько адресов доставки?

artemidka 13.04.2004 12:02

medved2002 и в куки айди сессии записывать да?

medved2002 13.04.2004 12:13

А зачем тебе еще и сессион айди?

Пойми что сессии и куки это разные варианты хранения данных (между собой не связанных), зачем тебе использовать сразу оба?

artemidka 13.04.2004 12:14

Лучше в Сессии) Мне они ближе по духу) Буду сессии юзать.

medved2002 13.04.2004 12:22

Бррр а чем если не секрет? Еще раз повторюсь юзать сессии имхо имеет смысл только когда нельзя доверить хранимую информацию пользователю, разница в них только в том что куки хранятся на компе пользователя, а сесии на сервере. Товар который человек положил в корзину вряд ли является секретной информацией. Тогда зачем заваливать сервак лишней информацией?

artemidka 13.04.2004 12:24

medved2002 ты прав.... Блин тогда прийдется с массивами разбираться) А можно сделать переменную в куках- массив? medved2002 сейчас ты скажешь) ПРИЕХАЛИ)))))

is_absent 13.04.2004 12:27

artemidka
в куках можно хранить только строки. НО! есть такая функция serialize называется. очень полезная вешь. почитай документацию там хорошо написано :)

Hubbitus 13.04.2004 12:59

Цитата:

artemidka:
Я себе вообще задачу как поставила, вообще есть товары и карзина, и чтобы человек мог перекидывать в нее и удалять....надо ведь идентификаю поставить ну мол это карзина Васи, Это карзина Пети..по сессион ай ди можно вполне ариентироваться.
Дак зачем по Сессион ад как-то ориетироваться? Не проще просто используя сессии приписывать пользователю просто номера (ID) товаров которые у него в корзине, а реализацию хранения и сравнения сессий оставить на PHP? (например в тех же куках - поумолчанию)

Цитата:

medved2002:
Пойми что сессии и куки это разные варианты хранения данных (между собой не связанных), зачем тебе использовать сразу оба?
Разные, но почему же не связанные? Ведь PHP sessionid для сессии по умолчанию хранит и в куках и в адрес впихнуть пытается!

Цитата:

medved2002:Еще раз повторюсь юзать сессии имхо имеет смысл только когда нельзя доверить хранимую информацию пользователю, разница в них только в том что куки хранятся на компе пользователя, а сесии на сервере. Товар который человек положил в корзину вряд ли является секретной информацией. Тогда зачем заваливать сервак лишней информацией?
medved2002, безусловно ты где-то прав, НО хранить в сессии можно только ID товаров что не создаст нагрузку на сервер и уж точно его не завалит информацией. И что самое главное с сессиями работать гораздо удобнее (проще если хотите) весь механизм сохранения переменных PHP берет на себя (тоже размещение массивов)...

medved2002 13.04.2004 13:13

Цитата:

Первоначальное сообщение от Hubbitus
Дак зачем по Сессион ад как-то ориетироваться? Не проще просто используя сессии приписывать пользователю просто номера (ID) товаров которые у него в корзине,
СМЫСЛ???? Зачем с гемороем хранить на серваке то что можно хранить у пользователя? Приведи мне причины по которой надо использовать сессии вместо кук? (Помимо того что сессии автоматически используют serilaize)

Цитата:

Первоначальное сообщение от Hubbitus
а реализацию хранения и сравнения сессий оставить на PHP? (например в тех же куках - поумолчанию)
По умолчанию вообще то данные сессий храняться в файлах на серваке.


Цитата:

Первоначальное сообщение от Hubbitus
Разные, но почему же не связанные? Ведь PHP sessionid для сессии по умолчанию хранит и в куках и в адрес впихнуть пытается!
Да есть опция хранить индетификатор в куках, но только это лишь один из вариантов.

Цитата:

Первоначальное сообщение от Hubbitus
НО хранить в сессии можно только ID товаров что не создаст нагрузку на сервер и уж точно его не завалит информацией.
Ты уверен? Чего же большая часть хостеров их отключает?

Цитата:

Первоначальное сообщение от Hubbitus
И что самое главное с сессиями работать гораздо удобнее (проще если хотите) весь механизм сохранения переменных PHP берет на себя (тоже размещение массивов)...
Размещает он таки испульзуя те же средства что предложил абсент. А написать функцию которая будет это делать - 5 минут.

artemidka 13.04.2004 13:25

Так на чем лучше остановится?Hubbitus ? Онли куки ор сессионс юзать?

Hubbitus 13.04.2004 13:37

Цитата:

medved2002:
Приведи мне причины по которой надо использовать сессии вместо кук? (Помимо того что сессии автоматически используют serilaize)
По причине простоты и удобства использования - я уже писал, вторая причина у тебя же в вопросе.

Цитата:

medved2002:
По умолчанию вообще то данные сессий храняться в файлах на серваке.
Данные - да. Но я же и написал "реализацию хранения и сравнения сессий", а не данных!!! Тоесть хранение идентификаторов, ID.
Цитата:

medved2002:
Да есть опция хранить индетификатор в куках, но только это лишь один из вариантов.
Я и не утверждал что это единственный способ ;) Но раз он есть значит уже не бессвязные это понятия. К тому же он используется по-умолчанию (и далеко не все хостеры дают возможность это изменить)
Цитата:

medved2002:
Ты уверен? Чего же большая часть хостеров их отключает?
Я предлагаю не спорит по этому поводу, но скажу лишь что при использовании сессии и хранении в ней порядка 30 байт нагрузка на сервер крайне незначительная. Кстати назови хоть одного нормального, платного хостера который вообще не позволяет использовать сессии (давай не будем брать тех кто продает хостинг за копейки)
Цитата:

medved2002:
Размещает он таки испульзуя те же средства что предложил абсент. А написать функцию которая будет это делать - 5 минут
Именно теже средства, только обеспечиваетс все сам! Все можно написать, но зачем, если это реализовано уже на более низком уровне интерпретатора (или вы можете написать функцию которая будет работать под интерпретатором быстрее чем функция реализованная в самом интерпретаторе???)

P.S. Я абсолютно не ставил задачи уличить кого бы то нибыло в некомпетенции. Я просто старался помочь artemidka и высказал свое мнение.
И как еще один аргумент - я так понял что только начинают осваивать Сессии и Куки и пока вопрос об оптимизации и скорости работы не стоял, а с сессиями разобраться ораздо легче
:biggrin:

medved2002 13.04.2004 13:47

Цитата:

Первоначальное сообщение от Hubbitus
По причине простоты и удобства использования - я уже писал, вторая причина у тебя же в вопросе.
Имхо удобство понятие субьективное и я не вижу разницы между использованием session_register и set_cookie

Цитата:

Первоначальное сообщение от Hubbitus
Данные - да. Но я же и написал "реализацию хранения и сравнения сессий", а не данных!!! Тоесть хранение идентификаторов, ID.
Я чего то понять не могу, для чего сессия будут использоваться для хранения данных или что бы чего-то с чем-то сравнивать?

Цитата:

Первоначальное сообщение от Hubbitus
Я и не утверждал что это единственный способ ;) Но раз он есть значит уже не бессвязные это понятия. К тому же он используется по-умолчанию (и далеко не все хостеры дают возможность это изменить)
Абсолютно без связные.

Цитата:

Первоначальное сообщение от Hubbitus
Я предлагаю не спорит по этому поводу, но скажу лишь что при использовании сессии и хранении в ней порядка 30 байт нагрузка на сервер крайне незначительная.
Дело не в обьеме, а в файловых функциях.

Цитата:

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

Цитата:

Первоначальное сообщение от Hubbitus
Все можно написать, но зачем, если это реализовано уже на более низком уровне интерпретатора (или вы можете написать функцию которая будет работать под интерпретатором быстрее чем функция реализованная в самом интерпретаторе???)
Гы-гы. А откуда ты знаешь как там какие функции написаны?


Цитата:

Первоначальное сообщение от Hubbitus
И как еще один аргумент - я так понял что только начинают осваивать Сессии и Куки и пока вопрос об оптимизации и скорости работы не стоял, а с сессиями разобраться ораздо легче
Ну я не знаю что могло вызвать затруднение в работе с куками.

Hubbitus 13.04.2004 13:48

Цитата:

artemidka:
Так на чем лучше остановится?Hubbitus ? Онли куки ор сессионс юзать?
Сама пойми - каждый вибирает для себя с чем ем работать. Конкретная задача тоже всегда вносит свои коррективы.
С сессиями однозначно проще разбираться и работать. На счет нагрузки, как сказал medved2002, она больше на сервер, но IMHO не значительная она при нормальном использовании (ну не надо полный текст Онегина в сессии класть :p )
Я бы магазин сделал на сессиях (кстати,medved2002, чаще всего так и делают). Да я вобщем-то на сессиях его и делал :)

artemidka 13.04.2004 13:55

medved2002
Hubbitus Тихо:) Не ссорьтесь, я лучше вам еще вопрос подкину))
Скажите лучше как в куках сделать динамический массив ? Распределять память не надо?
И как его забивать? заранее сенкс.
Хочу в куки сохранять данные.... вернее в массив который в куках...реально это вообще или нет*?
$_Cookie[i]="123";
$_Cookie[i++]="124";
$_Cookie[i++]="125"; это грубо...а вообще я в цикле буду смотреть

is_absent 13.04.2004 14:00

господа :)
нагрузка на сервер??? в чем??? записать в файлик? давайте сравнивать объемы хранимых и передаваемых данных!
это мое мнение. но, имхо сессии в PHP это очень удобный механизм. и очень хорошо подходит к задаче, которую изложилаartemidka. поскольку при использовании куков, ВСЯ информация о них таскается со странице на страницу. а для сессии достаточно только одного идентификатора. который передается не обязательно в залоговке. по-моему это (механизм сессий) очень удобно.

medved2002 13.04.2004 14:09

Цитата:

Первоначальное сообщение от Hubbitus
она больше на сервер
Как раз таки это и должно нас волновать

Цитата:

Первоначальное сообщение от Hubbitus
кстати,medved2002, чаще всего так и делают.
А ты делал или только предполагаешь? Чаще всего делают сессии - когда на сервере храниться информация о человеке (а-ля несколько адресов, накопленные скидки, проходы по страницам)

Добавлено через 6 минут:
Цитата:

Первоначальное сообщение от artemidka
medved2002
Скажите лучше как в куках сделать динамический массив ? Распределять память не надо?И как его забивать? заранее сенкс.
Хочу в куки сохранять данные.... вернее в массив который в куках...реально это вообще или нет*?

set_cookie('Имя куки', serialize($array), time+3600);

вытаскивать
$array = unserialize($_COOKIE['Имя куки']);

Hubbitus 13.04.2004 14:14

Цитата:

medved2002:
Имхо удобство понятие субьективное и я не вижу разницы между использованием session_register и set_cookie
Ну давайте уж не будем спорить только для того чтобы спорить, а?
Разница в удобстве большая что проще написать: session_register("var") или (пример из МАНа) setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);???

Потом Куки могут быть отключены у пользователя, вы об этом подумали? А идентификатор сессии можно пердать различными способами (я могу назвать 5-6)

Цитата:

medved2002:
Я чего то понять не могу, для чего сессия будут использоваться для хранения данных или что бы чего-то с чем-то сравнивать?
Сессии будут использоваться для хранения данных - я говорю что весь этот механизм будет обеспечиваться PHP автоматически!!! Не надо изобретать велосипед! (по крайней мере в большинстве стандартных случаев)
Цитата:

medved2002:
Абсолютно без связные.
Тут что-либо сложно возразить - аргументированный ответ!:)

Цитата:

medved2002:
Дело не в обьеме, а в файловых функциях.
Я не спорю о производительности - это медленнее, но при разумных объемах это не заметно!!! (ну в самом деле вам не все равно переменная будет сохраняться 0,00001 сек или 0,0001?)

Цитата:

medved2002:
Раньше был мастерхост, щас не знаю (давно сижу на собственном серваке), лень искать.
Ну а зачем говорить, если не знаете?
Цитата:

medved2002:
Гы-гы. А откуда ты знаешь как там какие функции написаны?
Ну вообще-то в исходниках можно посмотреть, но я этого не делал...
Хотябы то что там на С написано, а у тебя интерпретироваться будет!!!
Давай, попробуй, покажи хоть один пример реализации стандартной функции PHP, написанной на PHP, и работающей быстрее чем родная!!!
Цитата:

medved2002:
Ну я не знаю что могло вызвать затруднение в работе с куками.
Я уже писал про это в начале сообщения...

P.S. Я еще раз предлагаю не спорить! :biggrin:

artemidka 13.04.2004 14:40

set_cookie('Имя куки', serialize($array), time+3600);

serialize($array) - это массив? Как его забивать в форе? с массивом? serialize($array)
сериалайз вроде для точто что бы типы данных сохранялись выходит?

Добавлено через 17 минут:
PHP код:


<?php
$abc 
= array("x" => "y");
 
#echo $abc["x"];
set_cookie('qqq'serialize($abc), time+3600);
$array unserialize($_COOKIE['qqq']);
?>

что не так? пишет
Fatal error: Call to undefined function: set_cookie() in /usr/home/tonka/ftp/sit/test.php on line 4

Hubbitus 13.04.2004 14:41

$array - массив
serialize() функция сериализации перемынных, в том числе массивов.
serialize($array) - представляет массив в виде строки для записи в Куки
Цитата:

artemidka:
Как его забивать в форе?
Не понял вопроса?
Работаешь как с массивом, обычно!

P.S. Вот про эти удобства использования сессий я и говорил!!! Ничего подобного там не требуется.

medved2002 13.04.2004 14:42

Описался setcookie;

serialize($abc) - превращает массив в строку

artemidka 13.04.2004 14:48

Hubbitus ок расскажи как в сессиях это дело делать!!!!!!!!!!
Честно говоря..куки ведь могут и отключены быть... да и с этим превращение мне что то возиться не очень нравится.....В чем смысл юзания массивов сессий?

medved2002 13.04.2004 14:50

Цитата:

Первоначальное сообщение от Hubbitus
Разница в удобстве большая что проще написать: session_register("var") или (пример из МАНа) setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);???[/B]
Если тебе не надо регулировать время жизни данных - твои проблемы. Пример из мана - я тебе могу привести пример переопределения функции сессий? Там больше писать надо и чего? Это показатель?


Цитата:

Первоначальное сообщение от Hubbitus
Потом Куки могут быть отключены у пользователя, вы об этом подумали?[/B]
Ага а еще надо подумать об отключенном джаваскрипте, остуствии мышки и слепоте. Кстати в этом случае перед выдачей страницы PHP придется перелопачивать всю страницу на поиск ссылок.

Цитата:

Первоначальное сообщение от Hubbitus
А идентификатор сессии можно пердать различными способами (я могу назвать 5-6)
[/B]
Круто назови мне еще две кроме Гет, Пост запросов и Кукис?

Цитата:

Первоначальное сообщение от Hubbitus
Сессии будут использоваться для хранения данных - я говорю что весь этот механизм будет обеспечиваться PHP автоматически!!! Не надо изобретать велосипед! (по крайней мере в большинстве стандартных случаев)
[/B]
При этом ты тут же советуюешь юзать куки?


Цитата:

Первоначальное сообщение от Hubbitus
Тут что-либо сложно возразить - аргументированный ответ!
[/B]
Для кого как.

Цитата:

Первоначальное сообщение от Hubbitus
Ну а зачем говорить, если не знаете?
[/B]
Мне метнуться и найти?

Цитата:

Первоначальное сообщение от Hubbitus
Ну вообще-то в исходниках можно посмотреть, но я этого не делал...
[/B]
Ну а зачем говорить, если не знаете?

Цитата:

Первоначальное сообщение от Hubbitus
P.S. Я еще раз предлагаю не спорить!
[/B]
Я тоже

artemidka 13.04.2004 15:09

medved2002,Hubbitus

$abc = array("1" => "16758","2"=>"493875");
session_register("$var")=$abc; #это не правильно как правильно ? как правильно массив занести и считать его?
Когда я буду читать из массива значению будут какого типа?стринг?

medved2002 13.04.2004 15:14

session_register("abc"); правильно

is_absent 13.04.2004 15:22

artemidka
а на родном сайте советую пользоваться массивом $_SESSION для этих целей.
тип данных при передаче между страничками сохраняется. какой был, такой и останется.
была строка -- будет строкой. был массив -- будет масив. тебе об этом заботится не нужно

Hubbitus 13.04.2004 15:25

Если читать из сессии будешь - то занесенный массив массиво и останется!


Часовой пояс GMT +4, время: 07:14.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.