[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: отправка данных без формы
RadX
Помогите, никак не могу реализовать простенький пример авторизации без использования формы. Пробовал на примере этого форума, вот мой скрипт:


<?
$url = "http://phpforum.ru/index.php?act=Login&CODE=01";
$ref="http://phpforum.ru/index.php?act=Login&CODE=00";
$data = "UserName=mylogin&PassWord=mypassword&CookieDate=1&Privacy=1";

$host="phpforum.ru";
$fp = fsockopen($host, 80, $errno, $errstr, 10);
if ($fp)
{

$out = "POST ".$url." HTTP/1.1\n";
$out .= "Host: ".$host."\n";
$out .= "Referer: ".$ref."/\n";
$out .= "User-Agent: Opera\n";
$out .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";


fputs($fp, $out);


while($gets=fgets($fp,50))
{
print $gets;
}
fclose($fp);
}
?>


В итоге получаю приглашение форума (т,е. как будно я авторизовался), но в итоге редиректит на страницу авторизации снова. Кто знает помогите как правильно реализовать данный пример? Заранее спасибо.





Спустя 11 часов, 2 минуты, 47 секунд (28.02.2010 - 14:49) japanxt2 написал(а):
А на других сайтах проверял???, может там работает?

Спустя 1 час, 16 минут, 3 секунды (28.02.2010 - 16:05) Семён написал(а):
Я когда ел чуть не подавился от прочитанного, используй CURL для подобных целей

Спустя 11 минут, 2 секунды (28.02.2010 - 16:16) RadX написал(а):
Семён

Попробовал через curl, но проблема осталась, вот код:


<?php
$url = 'http://phpforum.ru/index.php?act=Login&CODE=01&Cookiedata=1';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"UserName=login&PassWord=password&CookieDate=1&Privacy=1");
$html = curl_exec($ch);
echo $html;
curl_close($ch);
?>

Спустя 3 минуты, 32 секунды (28.02.2010 - 16:19) Семён написал(а):
А кто будет куки сохранять? Оно само? smile.gif
+ Поставь FOLLOWREDIRECTS

Спустя 29 минут, 50 секунд (28.02.2010 - 16:49) RadX написал(а):
Семён

Добавил следующие строки:

$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);


Проблема не решилась

В cookies.txt следующее:
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

phpforum.ru FALSE / FALSE 0 CookieIp ip
phpforum.ru FALSE / FALSE 0 session_id id
phpforum.ru FALSE / FALSE 1298900725 member_id id
phpforum.ru FALSE / FALSE 1298900725 pass_hash pwdhash
phpforum.ru FALSE / FALSE 1298900725 anonlogin 1

Спустя 1 час, 33 минуты, 14 секунд (28.02.2010 - 18:22) Семён написал(а):
А так? wink.gif Чувак я тебя помучаю немного smile.gif
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);

Спустя 16 минут, 8 секунд (28.02.2010 - 18:39) RadX написал(а):
Семён, аналогично

Спустя 3 минуты, 36 секунд (28.02.2010 - 18:42) Семён написал(а):
Держи, я просто это делал бувально месяц назад smile.gif
$url = "http://site.ru/index.php?act=Login&CODE=01";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_TIMEOUT, 50); // times out after 4s
curl_setopt($ch, CURLOPT_POST, 1); // set POST method
curl_setopt($ch, CURLOPT_POSTFIELDS, "url=LOGIN&refer=http://site.ru/&UserName=LOGIN&PassWord=PASS&CookieDate=1&submit=submit"); // add POST fields
curl_setopt ($ch, CURLOPT_COOKIEFILE, '1.txt'); // вроде откуда брать
curl_setopt ($ch, CURLOPT_COOKIEJAR, '1.txt'); // вроде куда сохранять
$result = curl_exec($ch); // run the whole process

preg_match_all('~Set-Cookie: ([^\r\n]*)[\r\n]~i',$result,$mass);
$all_cookie_string = implode(" ", $mass[1]);
curl_setopt($ch, CURLOPT_COOKIE, $all_cookie_string);
$url = "http://site.ru/index.php";
curl_setopt($ch, CURLOPT_URL,$url); // set url to post to
$result = curl_exec($ch);
curl_close($ch);


Пример тестировал на 2.3.6 IPB

Спустя 1 час, 21 минута, 25 секунд (28.02.2010 - 20:04) RadX написал(а):
Семён, спасибо за пример. Немного подшаманил, тестировал на IPB 3.0.0 - все работает.

Спустя 4 часа, 8 минут, 38 секунд (1.03.2010 - 00:12) Семён написал(а):
RadX
Да CURL штука прикольная главное уметь его правильно использовать
Если бы ты токо видел какие я махинации с ним провожу biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.