За последние 24 часа нас посетили 27053 программиста и 1512 роботов. Сейчас ищут 868 программистов ...

авторизация на сокетах

Тема в разделе "Прочие вопросы по PHP", создана пользователем georgela, 8 мар 2012.

  1. georgela

    georgela Активный пользователь

    С нами с:
    11 май 2011
    Сообщения:
    395
    Симпатии:
    0
    Есть сайт на Джумле.Там форма с логином и паролем.Если зайти на главную страницу при помощи такого заголовка
    Код (Text):
    1. "GET / HTTP/1.1
    2. Host:localhost
    3. Connection:Close
    4.  
    5. "
    Вылезает заголовок Set-Cookie,я сохранил куку для дальнейших действий.Заголовок авторизации получился таким
    Код (Text):
    1.  
    2. "POST /component/comprofiler/login.html HTTP/1.1
    3. Host:localhost
    4. Cookie:e5a81fd897e2d1568bb859654f3d0504=s114vmn29bvfik2hjt4dqdegb4;path=/;
    5. Content-type:application/x-www-form-urlencoded
    6. Content-length:28
    7. Connection:Close
    8.  
    9. username=admin&passwd=111111
    10.  
    11. "
    На выходе получил Сессия истекла или в Вашем браузере отключены куки. Пожалуйста, обновите страницу, перед ее заполнением.Подскажите пож-та чем мои действия отличаются от пользовательских,на что Джумла ругается?Вот php класс
    Код (Text):
    1. <?php
    2.  
    3.  
    4. class htmlweb {
    5.  
    6.     private $pweb;
    7.     public $Cookie;
    8.     public $Headers;
    9.     public $Data;
    10.     public $Hostname;
    11.     public $Path;
    12.  
    13. private function getData(){
    14. $line='';$counter=0;$oldsize=0;
    15. while(!feof($this->pweb,1024)){
    16. $oldsize=strlen($line);
    17. $line.=fread($this->pweb,1024);
    18. if($oldsize==strlen($line)){$counter++;}else{$counter=0;};
    19. if($counter>10)break;
    20. };
    21. return $line;
    22. }
    23.  
    24. public function GetMethod($path='/'){
    25. $hostname=$this->Hostname;
    26. $this->pweb=fsockopen($hostname,80);
    27. $headers="GET $path HTTP/1.1\r\n";
    28. $headers.="Host:$hostname\r\n";
    29. if(sizeof($this->Cookie)>0){
    30. $headers.="Cookie:";
    31. foreach($this->Cookie as $k=>$v){
    32. $headers.=$k."=".$v.";";};    
    33. $headers.="\r\n";
    34. };
    35. $headers.="Connection:Close\r\n\r\n";
    36. fwrite($this->pweb,$headers);
    37. $line=$this->getData();
    38. fclose($pweb);
    39. $rheaders=substr($line,0,strpos($line,"\r\n\r\n"));
    40. if((substr_count($rheaders,"text/html")>0)){
    41. $this->Data=substr($line,strpos($line,"<",strpos($line,"\r\n\r\n")));}else{
    42. $this->Data=substr($line,strpos($line,"\r\n\r\n")+4);
    43. }
    44. $this->Headers=explode("\r\n",$rheaders);
    45. $cookie="";
    46. for($i=0;$i<sizeof($this->Headers);$i++){
    47. if(substr_count($this->Headers[$i], "Set-Cookie")>0){
    48. $coo=trim(substr($this->Headers[$i],strpos($this->Headers[$i],":")+1));
    49. if((!empty($cookie))&&($cookie[strlen($cookie)-1]!=';')){$coo=";".$coo;};
    50. $cookie.=$coo;
    51. };
    52. };$coo1=array();
    53. if(!empty($cookie)){
    54. $cookie=explode(";",$cookie);
    55. $coo='';
    56. for($i=0;$i<sizeOf($cookie);$i++){    
    57. $coo= explode("=", $cookie[$i]);$coo[0]=trim($coo[0]);$coo[1]=trim($coo[1]);
    58. if($coo[0]!="expires"){
    59. $coo1[$coo[0]]=$coo[1];    
    60. };
    61. }
    62.    
    63. };
    64. foreach($coo1 as $k=>$v){
    65. $this->Cookie[$k]=$v;    
    66. };
    67.  
    68. }
    69.  
    70. public function PostMethod($path="/",$param,$isfileload=false){
    71. $hostname=$this->Hostname;
    72. $this->pweb=fsockopen($hostname,80);
    73. $params='';
    74. foreach($param as $k=>$v){
    75. $params.="&$k=$v";    
    76. };
    77. $params=substr($params,1);
    78. $plength=strlen($params);
    79. $headers="POST $path HTTP/1.1\r\n";
    80. $headers.="Host:$hostname\r\n";
    81. if(sizeof($this->Cookie)>0){
    82. $headers.="Cookie:";
    83. foreach($this->Cookie as $k=>$v){
    84. $headers.=$k."=".$v.";";};    
    85. $headers.="\r\n";
    86. };
    87. $headers.="Content-type:application/x-www-form-urlencoded\r\n";
    88. $headers.="Content-length:$plength\r\n";
    89. $headers.="Connection:Close\r\n\r\n";
    90. $headers.="$params\r\n\r\n";
    91. fwrite($this->pweb,$headers);
    92. $line=$this->getData();
    93. fclose($this->pweb);
    94. $rheaders=substr($line,0,strpos($line,"\r\n\r\n"));
    95. if((substr_count($rheaders,"text/html")>0)){
    96. $data=substr($line,strpos($line,"<",strpos($line,"\r\n\r\n")));}else{
    97. $data=substr($line,strpos($line,"\r\n\r\n")+4);
    98. };
    99.  
    100.  
    101.  
    102. $rheaders=substr($line,0,strpos($line,"\r\n\r\n"));
    103. if((substr_count($rheaders,"text/html")>0)){
    104. $this->Data=substr($line,strpos($line,"<",strpos($line,"\r\n\r\n")));}else{
    105. $this->Data=substr($line,strpos($line,"\r\n\r\n")+4);
    106. }
    107. $this->Headers=explode("\r\n",$rheaders);
    108. $cookie="";
    109. for($i=0;$i<sizeof($this->Headers);$i++){
    110. if(substr_count($this->Headers[$i], "Set-Cookie")>0){
    111. $coo=trim(substr($this->Headers[$i],strpos($this->Headers[$i],":")+1));
    112. if((!empty($cookie))&&($cookie[strlen($cookie)-1]!=';')){$coo=";".$coo;};
    113. $cookie.=$coo;
    114. };
    115. };$coo1=array();
    116. if(!empty($cookie)){
    117. $cookie=explode(";",$cookie);
    118. $coo='';
    119. for($i=0;$i<sizeOf($cookie);$i++){    
    120. $coo= explode("=", $cookie[$i]);$coo[0]=trim($coo[0]);$coo[1]=trim($coo[1]);
    121. if($coo[0]!="expires"){
    122. $coo1[$coo[0]]=$coo[1];    
    123. };
    124. }
    125.    
    126. };
    127. foreach($coo1 as $k=>$v){
    128. $this->Cookie[$k]=$v;    
    129. };
    130. }
    131.  
    132. public function __construct($hostname,$path="/"){
    133. $this->Hostname=$hostname;
    134. $this->Path=$path;
    135. $this->Cookie=array();
    136. }
    137.  
    138. }
    139. ?>
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Включи фаербаг (или Опера Драгонфлай или Гуглохром Консоль JavaScript) и посмотри, что там отправляется, когда входишь браузером, сравни...
     
  3. georgela

    georgela Активный пользователь

    С нами с:
    11 май 2011
    Сообщения:
    395
    Симпатии:
    0
    Вот эти поля
    Код (Text):
    1. Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    2. Accept-Encoding gzip, deflate
    3. Accept-Language ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
    4. Connection  keep-alive
    5. Cookie  ********************************
    6. Referer http://www.php.ru/forum/viewforum.php?f=2
    7. User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
    Включил Referer=Localhost ,получил на выходе форму с логином и паролем,типо не авторизирован(как официальны реф при отправке).Остальное может влиять?Там вроде ни сессий,ни кук,ассепты всякие

    Добавлено спустя 1 минуту 35 секунд:
    Там может сессия быть привязанной к Юзер Агент?

    Добавлено спустя 6 минут 58 секунд:
    Таблица Sessions Джумлы содержит
    Код (Text):
    1. Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2";s:
    И куча всякой байды.Мб по этому не авторизирует?

    Добавлено спустя 12 минут 31 секунду:
    ДОбавил Юзер-агент то же самое выводится