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

Форум PHP

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

 

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

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

тема: Как технически браузеры передают сессии
 
 автор: Саша   (07.03.2008 в 15:32)   письмо автору
 
 

Здравствуйте! Меня интересует технический аспект передачи сесий. Т. е. мы создали сеанс, а как браузер передает потом эти значения через браузер используя заголовки заголовками. Какие заголовки он посылает? Если можно в примерах.

Буду очень признателен за ответы!

   
 
 автор: cheops   (07.03.2008 в 15:40)   письмо автору
 
   для: Саша   (07.03.2008 в 15:32)
 

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

   
 
 автор: Саша   (07.03.2008 в 21:04)   письмо автору
 
   для: cheops   (07.03.2008 в 15:40)
 

А каким образом браузер отсылает этот cookie серверу? Если не ошибаюсь - то тоже заголовками. Приведу пример задачи. Допустим я залогинился не через хтмл форму, а сам послал заголовки серверу с логином и паролем и сервер вернул мне SID в ответ. Теперь мне надо методом пост получить результат поиска, но перед тем нужно както передать серверу, что я залогинен, т.е передать SID.
Пример части кода с заголовками

$fp = fsockopen($hostname,80) or die("Error");

$action = "AgentTicketSearch";
$subaction = "Search";
$StateIDs = "2";
$QueueIDs = "36";
$TimeSearchType = "TimePoint";
$TicketCreateTimePoint = "3";
$TicketCreateTimePointFormat = "day";
$data = 
"Action=".urlencode($action)
."&Subaction=".urlencode($subaction)
."&StateIDs=".urlencode($StateIDs)
."&QueueIDs=".urlencode($QueueIDs)
."&TimeSearchType=".urlencode($TimeSearchType)
."&TicketCreateTimePoint=".urlencode($TicketCreateTimePoint)
."&TicketCreateTimePointFormat=".urlencode($TicketCreateTimePointFormat)
."&Session=".$match[1]
."\r\n\r\n";
$headers = "POST /index.pl?Session=$match[1] HTTP/1.1\r\n"
."Host: $hostname\r\n"
."Content-type: application/x-www-form-urlencoded;\r\n"
."Accept-Language: ru\r\n"
."Accept-Encoding: gzip, deflate\r\n"
."Set-Cookie:$match[1]\r\n"
."Content-Length: ".strlen($data)."\r\n\r\n";


fwrite($fp,$headers.$data);

while(!feof($fp)){
    
    echo fread($fp,1024);
}

fclose($fp);


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

ПС. SID работает когда я пробую взять страницу методом get.т.е он правильный

   
 
 автор: staglu   (29.03.2008 в 19:12)   письмо автору
 
   для: cheops   (07.03.2008 в 15:40)
 

Вот у меня вопрос, а если у пользователя к примеру куки отключены, то как же будут работать механизм сессии

   
 
 автор: cheops   (30.03.2008 в 11:39)   письмо автору
 
   для: staglu   (29.03.2008 в 19:12)
 

Он не будет работать, если сервер не настроен на автоматический переход в этом случае на метод GET. Поэтому cookie часто и просят включить - вреда от них всё-равно ни какого.

   
 
 автор: root   (07.03.2008 в 15:40)   письмо автору
 
   для: Саша   (07.03.2008 в 15:32)
 

С помощью cookies

   
 
 автор: Саша   (08.03.2008 в 21:48)   письмо автору
 
   для: root   (07.03.2008 в 15:40)
 

up

   
 
 автор: mihdan   (09.03.2008 в 11:56)   письмо автору
 
   для: root   (07.03.2008 в 15:40)
 


<?
setcookie
('SID'$sid);
?>

   
 
 автор: Саша   (10.03.2008 в 01:23)   письмо автору
 
   для: mihdan   (09.03.2008 в 11:56)
 

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

   
 
 автор: Denis_1908   (29.03.2008 в 00:18)   письмо автору
 
   для: Саша   (10.03.2008 в 01:23)
 

Ваш код

$headers = "POST /index.pl?Session=$match[1] HTTP/1.1\r\n"
."Host: $hostname\r\n"
."Content-type: application/x-www-form-urlencoded;\r\n"
."Accept-Language: ru\r\n"
."Accept-Encoding: gzip, deflate\r\n"
."Set-Cookie:$match[1]\r\n"
."Content-Length: ".strlen($data)."\r\n\r\n";



Попробуйте изменить так


$headers = "POST /index.pl HTTP/1.1\r\n"
."Host: $hostname\r\n"
."Content-type: application/x-www-form-urlencoded;\r\n"
."Accept-Language: ru\r\n"
."Accept-Encoding: gzip, deflate\r\n"
."Cookie:Session=$match[1]\r\n"
."Content-Length: ".strlen($data)."\r\n\r\n";

   
 
 автор: Atheist   (29.03.2008 в 00:52)   письмо автору
 
   для: Саша   (10.03.2008 в 01:23)
 

Саша, не обращай внимания. Для mihdan'а главное - сказать. А что сказать его не волнует.

   
 
 автор: mihdan   (29.03.2008 в 00:56)   письмо автору
 
   для: Atheist   (29.03.2008 в 00:52)
 

Atheist , что опять вам не нравиться? Код, который я написал не работает??? Или вам вновь поссориться хочется и в бан попасть? Зачем опять оскорблять других

   
 
 автор: Atheist   (29.03.2008 в 01:09)   письмо автору
 
   для: mihdan   (29.03.2008 в 00:56)
 

Чем не нравится? Он просит написать код для передачи cookie серверу, а не клиенту.
Ты разницу чуешь, о великий мастер?

   
Rambler's Top100
вверх

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