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

Форум PHP

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

 

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

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

тема: Передать POST-данные напрямую, минуя HTML-форму и читать потом страницы
 
 автор: Саша   (05.03.2008 в 00:04)   письмо автору
 
 

Здравствуйте. Сразу скажу, что с хакингом тут нет дела. Так вот, провожу авторизацию напрямую, без использования хтмл формы, от сюда взял скрипт http://softtime.ru/info/task.php?id_article=87.

Делаю такое:

<?
  $name 
"somel"
  
$pass "55555"
  
$action "Login"
  
$lang "ru"
   

  
$hostname "somehost.ru"
  
$fp fsockopen($hostname,80) or die("Error"); 

  
$data "User=".urlencode($name)."&Password=".urlencode($pass)."&Action=".urlencode($action)."&Lang=".urlencode($lang)."\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" 
            
."Content-Length: ".strlen($data)."\r\n\r\n"
  
fwrite($fp,$headers.$data); 

while(!
feof($fp))
    echo 
fread($fp,1024); 
fclose($fp);  
  
function 
get_from_file($url) {
    
$h fopen($url,"r") or die("open error: $url");
    
$data_r "";
    while(
$data fgets($h))
    {
        
$data_r .= $data;
    }
    
fclose($h);
    
    return 
$data_r;
}

echo 
get_from_file("http://somehost/index.pl");
  

?>


Когда отсылаю заголовки, получаю:
HTTP/1.1 302 Moved
Date: Tue, 04 Mar 2008 20:36:35 GMT
Server: Apache/1.3.37 (Unix) mod_perl/1.29 mod_ssl/2.8.28 OpenSSL/0.9.7e-p1
X-Powered-By: OTRS 2.0.4 - Open Ticket Request System (http://otrs.org)
Set-Cookie: Session=109f49e0e6efbe948ec2c78fd6aeec4613; path=/
location: /index.pl?Session=109f49e0e6efbe948ec2c78fd6aeec4613
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8;

53 
document <a href="/index.pl?&Session=109f49e0e6efbe948ec2c78fd6aeec4613">moved</a>

0


Но когда дальше пробую открыть страницу, то открывается форма для логина, хотя должно отображатся уже собственно контент пользователя. Т.е. дальше авторизация теряется. Почему? Помогите плиз!!! Спасибо!

ПС. Нет возможности потестить работу этого скрипта, но данные правильные ввожу и заголовки такие возвращаются тогда, когда успешно прошла сама авторизация

   
 
 автор: Саня   (05.03.2008 в 00:22)   письмо автору
 
   для: Саша   (05.03.2008 в 00:04)
 

> Но когда дальше пробую открыть страницу...
Каким образом? Этим же самым скриптом?

   
 
 автор: Саня   (05.03.2008 в 00:24)   письмо автору
 
   для: Саня   (05.03.2008 в 00:22)
 

Вам после залогинивания нужно запросить страницу
/index.pl?Session=109f49e0e6efbe948ec2c78fd6aeec4613
не забыв при этом передать куки
Session=109f49e0e6efbe948ec2c78fd6aeec4613

   
 
 автор: Саша   (05.03.2008 в 10:13)   письмо автору
 
   для: Саня   (05.03.2008 в 00:24)
 

>Вам после залогинивания нужно запросить страницу
>/index.pl?Session=109f49e0e6efbe948ec2c78fd6aeec4613
>не забыв при этом передать куки
>Session=109f49e0e6efbe948ec2c78fd6aeec4613

Да, я пробовал так делать

.....
while(!feof($fp))
    $r2 .= fread($fp,1024);
preg_match("#/index.pl\?Session=(.*)$#m",$r2,$match);
fclose($fp);
setcookie("Session",$match[1]);
echo get_from_file("http://zmina.ukrtelecom.net/index.pl?Session=$match[1]");


Но говорит, что не верный Session. Или я ни так сделал?

   
 
 автор: mihdan   (05.03.2008 в 10:46)   письмо автору
 
   для: Саша   (05.03.2008 в 10:13)
 

Попробйте черех cURL - он сам возьмет куки отошлет ее если нужно

   
Rambler's Top100
вверх

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