Есть сайт на Джумле.Там форма с логином и паролем.Если зайти на главную страницу при помощи такого заголовка Код (Text): "GET / HTTP/1.1 Host:localhost Connection:Close " Вылезает заголовок Set-Cookie,я сохранил куку для дальнейших действий.Заголовок авторизации получился таким Код (Text): "POST /component/comprofiler/login.html HTTP/1.1 Host:localhost Cookie:e5a81fd897e2d1568bb859654f3d0504=s114vmn29bvfik2hjt4dqdegb4;path=/; Content-type:application/x-www-form-urlencoded Content-length:28 Connection:Close username=admin&passwd=111111 " На выходе получил Сессия истекла или в Вашем браузере отключены куки. Пожалуйста, обновите страницу, перед ее заполнением.Подскажите пож-та чем мои действия отличаются от пользовательских,на что Джумла ругается?Вот php класс Код (Text): <?php class htmlweb { private $pweb; public $Cookie; public $Headers; public $Data; public $Hostname; public $Path; private function getData(){ $line='';$counter=0;$oldsize=0; while(!feof($this->pweb,1024)){ $oldsize=strlen($line); $line.=fread($this->pweb,1024); if($oldsize==strlen($line)){$counter++;}else{$counter=0;}; if($counter>10)break; }; return $line; } public function GetMethod($path='/'){ $hostname=$this->Hostname; $this->pweb=fsockopen($hostname,80); $headers="GET $path HTTP/1.1\r\n"; $headers.="Host:$hostname\r\n"; if(sizeof($this->Cookie)>0){ $headers.="Cookie:"; foreach($this->Cookie as $k=>$v){ $headers.=$k."=".$v.";";}; $headers.="\r\n"; }; $headers.="Connection:Close\r\n\r\n"; fwrite($this->pweb,$headers); $line=$this->getData(); fclose($pweb); $rheaders=substr($line,0,strpos($line,"\r\n\r\n")); if((substr_count($rheaders,"text/html")>0)){ $this->Data=substr($line,strpos($line,"<",strpos($line,"\r\n\r\n")));}else{ $this->Data=substr($line,strpos($line,"\r\n\r\n")+4); } $this->Headers=explode("\r\n",$rheaders); $cookie=""; for($i=0;$i<sizeof($this->Headers);$i++){ if(substr_count($this->Headers[$i], "Set-Cookie")>0){ $coo=trim(substr($this->Headers[$i],strpos($this->Headers[$i],":")+1)); if((!empty($cookie))&&($cookie[strlen($cookie)-1]!=';')){$coo=";".$coo;}; $cookie.=$coo; }; };$coo1=array(); if(!empty($cookie)){ $cookie=explode(";",$cookie); $coo=''; for($i=0;$i<sizeOf($cookie);$i++){ $coo= explode("=", $cookie[$i]);$coo[0]=trim($coo[0]);$coo[1]=trim($coo[1]); if($coo[0]!="expires"){ $coo1[$coo[0]]=$coo[1]; }; } }; foreach($coo1 as $k=>$v){ $this->Cookie[$k]=$v; }; } public function PostMethod($path="/",$param,$isfileload=false){ $hostname=$this->Hostname; $this->pweb=fsockopen($hostname,80); $params=''; foreach($param as $k=>$v){ $params.="&$k=$v"; }; $params=substr($params,1); $plength=strlen($params); $headers="POST $path HTTP/1.1\r\n"; $headers.="Host:$hostname\r\n"; if(sizeof($this->Cookie)>0){ $headers.="Cookie:"; foreach($this->Cookie as $k=>$v){ $headers.=$k."=".$v.";";}; $headers.="\r\n"; }; $headers.="Content-type:application/x-www-form-urlencoded\r\n"; $headers.="Content-length:$plength\r\n"; $headers.="Connection:Close\r\n\r\n"; $headers.="$params\r\n\r\n"; fwrite($this->pweb,$headers); $line=$this->getData(); fclose($this->pweb); $rheaders=substr($line,0,strpos($line,"\r\n\r\n")); if((substr_count($rheaders,"text/html")>0)){ $data=substr($line,strpos($line,"<",strpos($line,"\r\n\r\n")));}else{ $data=substr($line,strpos($line,"\r\n\r\n")+4); }; $rheaders=substr($line,0,strpos($line,"\r\n\r\n")); if((substr_count($rheaders,"text/html")>0)){ $this->Data=substr($line,strpos($line,"<",strpos($line,"\r\n\r\n")));}else{ $this->Data=substr($line,strpos($line,"\r\n\r\n")+4); } $this->Headers=explode("\r\n",$rheaders); $cookie=""; for($i=0;$i<sizeof($this->Headers);$i++){ if(substr_count($this->Headers[$i], "Set-Cookie")>0){ $coo=trim(substr($this->Headers[$i],strpos($this->Headers[$i],":")+1)); if((!empty($cookie))&&($cookie[strlen($cookie)-1]!=';')){$coo=";".$coo;}; $cookie.=$coo; }; };$coo1=array(); if(!empty($cookie)){ $cookie=explode(";",$cookie); $coo=''; for($i=0;$i<sizeOf($cookie);$i++){ $coo= explode("=", $cookie[$i]);$coo[0]=trim($coo[0]);$coo[1]=trim($coo[1]); if($coo[0]!="expires"){ $coo1[$coo[0]]=$coo[1]; }; } }; foreach($coo1 as $k=>$v){ $this->Cookie[$k]=$v; }; } public function __construct($hostname,$path="/"){ $this->Hostname=$hostname; $this->Path=$path; $this->Cookie=array(); } } ?>
Включи фаербаг (или Опера Драгонфлай или Гуглохром Консоль JavaScript) и посмотри, что там отправляется, когда входишь браузером, сравни...
Вот эти поля Код (Text): Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Connection keep-alive Cookie ******************************** Referer http://www.php.ru/forum/viewforum.php?f=2 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): Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2";s: И куча всякой байды.Мб по этому не авторизирует? Добавлено спустя 12 минут 31 секунду: ДОбавил Юзер-агент то же самое выводится