|
|
|
| Пишу скрипт, который автоматически вводит логин/пароль и грузит страницу за ними, но столкнулся с проблемой, после авторизации грузится страница 302 Found. Посмотрел коды ошибок, написано, что она возникает когда страница была перенаправлена, то есть использовался технический редирект. А, как мне перенаправить запрос ту даже, пробовал после процедуры авторизации просто перенаправлять header("Location: новый адрес"); , но грузилась просто страница, как будто авторизации и не было.
Для авторизации использовал следующий скрипт:
<?
function inquirypost($urlinfo,$data) {
$fp = fsockopen($urlinfo['host'],80);
fputs($fp, "POST ".$urlinfo['path']." HTTP/1.1\r\n");
fputs($fp, "Host: ".$urlinfo['host']."\r\n");
fputs($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fputs($fp, "Content-length: " . strlen($data) . "\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $data);
$buf = "";
while (!feof($fp))
$buf .= fgets($fp,128);
fclose($fp);
return $buf;
}
$urlinfo['path'] = "http://www.site.ru/login.php";
$urlinfo['host'] = "www.site.ru";
$data = "user=test&password=test";
$b = inquirypost($urlinfo,$data);
print_r($b);
?>
|
Как мне перенаправить на страницу, но чтоб быть уже залогининым? | |
|
|
|
|
|
|
|
для: Quies
(25.10.2007 в 10:35)
| | Сервер какие-нибудь cookie присылает? Если да, их необходимо отправлять позже при каждом запросе к серверу, чтобы он знал, что вы авторизованы. | |
|
|
|
|
|
|
|
для: cheops
(25.10.2007 в 12:15)
| | Да, в том скрипте выводятся сначало содержание cookie, а потом html код страницы:
HTTP/1.0 302 Found
Date: Thu, 25 Oct 2007 09:00:24 GMT
Server: Apache
Set-Cookie: uniq=PVtOF:1193302824:pgstats1:m0; expires=Monday, 24-Dec-2007 09:00:24 GMT; domain=.test1.ru; path=/
Set-Cookie: tmastersession=v1:u12732863:s46:aS8WifQLxtL//Thanks+for+signing+in+/+test1+loves+you+a+lot+/+Here+have+a+cookie; domain=www.test1.ru; path=/; HttpOnly
Set-Cookie: tloggedin=u1273286:s46; domain=test1.ru; path=/; HttpOnly
Set-Cookie: tloggedin=u1273286:s46; domain=.test1.ru; path=/; HttpOnly
Set-Cookie: BMLschemepref=lanzelot; domain=test1.ru; path=/; HttpOnly
Set-Cookie: BMLschemepref=lanzelot; domain=.test1.ru; path=/; HttpOnly
Set-Cookie: langpref=ru/119330282; domain=test1.ru; path=/; HttpOnly
Set-Cookie: langpref=ru/119330282; domain=.test1.ru; path=/; HttpOnly
Set-Cookie: tsession=v1:u12732863:s46:t1193302800:g3aae92217abb0ec36f543ce441ed198ba1 4e//Thanks+for+signing+in+/+test1+loves+you+a+lot+/+Here+have+a+cookie; domain=test1.ru; path=/; HttpOnly
Set-Cookie: tsession=v1:u12732863:s46:t1193302800:g3aae92217abb0ddc36f543ce441ed198ba 14e//Thanks+for+signing+in+/+test1+loves+you+a+lot+/+Here+have+a+cookie; domain=.test1.ru; path=/; HttpOnly
Location: http://test1.ru/
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="http://www.test1.ru/">here</A>.<P>
</BODY></HTML>
|
А, как переслать это cookie, при загрузки страницы? Я, просто пока, плохо разбираюсь в цокетах.. :-/ | |
|
|
|
|
|
|
|
для: Quies
(25.10.2007 в 13:10)
| | Ищи ответ тут на форуме, но мой тебе совет - используй cURL | |
|
|
|
|
|
|
|
для: Quies
(25.10.2007 в 13:10)
| | Подскажите, что то не найти, на этом форуме тоже.
Про отсылку GET/POST запросов сокетами, много информации, а как cookie сокетами послать, не найти.
Я из того, кода выделил текст cookie:
$parr = explode("<!DOC", $b);
$cookie = $parr[0];
|
А, потом пробовал добавить строчку:
fputs($fp, "Cookie: ".$cookie."\r\n");
|
Но, не работает сookie не посылаются, или посылаются как то не так, скрипт не грузит залогининую страницу. | |
|
|
|
|
|
|
|
для: Quies
(25.10.2007 в 21:06)
| | Разобрался :)
Надо было, отпарсить приходящий ответ, и вытащить все переменные из Set-Cookie, потом склеить их разделяя "; " и всё что получилось послать, перед "Cookie:"
<?
fputs($fp, "Cookie:".$cookies);
?>
|
| |
|
|
|
|
|
|
|
для: Quies
(26.10.2007 в 01:01)
| | curl | |
|
|
|