ответ сервера при авторизации на чужом сайте

zerok

Новичок
ответ сервера при авторизации на чужом сайте

собственно существует проблема -
надо получить ответ сервера при авторизационном входе.

я направляю туда имя и пароль - получаю заголовки обратно,
если 401 то доступ не получен
если другое - разрешаю войти.

есть замечательный скриптик показывающий заголовки :
http://phpclub.net/samples/103.phps

но он не использует имя и пароль при запросе.

как их туда вставить ума не приложу - не было опыта работы с заголовками.
 

ZeitGeist

Guest
Дык после успешной авторизации сервер посылает 200 OK и все остальное.
 

nagash

Guest
2 ZeitGeist
человек спрашивает как ему послать пароль скриптом...

2 zerok
почитай про сокеты...
 

ZeitGeist

Guest
>>надо получить ответ сервера при авторизационном входе
>>>>человек спрашивает как ему послать пароль скриптом...
Не заметно
почитай про сокеты...
2 nagash: А сокеты здесь каким боком?

2 zerok: Почитай здесь http://phpclub.net/talk/showthread.php?s=&threadid=31012, мож ченить надумаешь...
 

zerok

Новичок
спасибо всем.
но как-то не получается.

результат следующий: в ответ тишина полнейшая.
функция вот такая:
(не работает не в win32 не на другом втором)
PHP:
function check_url($url) { 
//	print $url;
	$urlArray = parse_url($url);
	if (!$urlArray['port']) $urlArray['port'] =  "80"; 
	if (!$urlArray['path']) $urlArray['path'] =  "/"; 
	$f=@fsockopen($urlArray['host'],$urlArray['port'],$errno,$errstr,5); 
        @fputs($f,"GET ".$urlArray['path']." HTTP/1.1\r\n".(($urlArray['pass']!="") ? "Authorization: Basic ".base64_encode($urlArray['user'].":".$urlArray['pass'])."\r\n" : "")."Host: ".$urlArray['host']."\r\n\r\n"); 
        $g=@fgets($f, 1024); 
	
        @fclose($f); 
	print $g;
	if (ereg("HTTP/1.1 200 OK", $g)) { 
        	return true; 
	} else { 
        	return false; 
        } 

}
пробовала делать через fopen с моего локального сервака работает, с внешнего вообще fopen не работает - видимо какие-то заморочки сетевые.
 

zerok

Новичок
всем спасибо.

особенности национального сервера строения ....
401 он говорит а 200 нет :) тишина была ответом

а в логи пишет честно - 200 :)
 

ZeitGeist

Guest
А вот у меня ента ф-ция, "check_url", работает на ура.
Просто после успешной авторизации сервер возвращает "HTTP/1.1 301 Moved Permanently", т.е. редирект туда куда нужно, а не 200. Вот так.
 

nagash

Guest
2 zerok
отлично что работает
просто на будущее уберай все "@" в скрипте и тогда тестируй... - ПХП тебе сам почти все ошибки напишет... и сам сможешь разобраться и быть гордым за себя что сделал САМ. это очень важно!
ИМХО.
 

nagash

Guest
ну блин... темболее...
приношу свои извенение если это вдруг обидело.
 

zerok

Новичок
to ZeitGeist, спасибо она у меня тоже работает, проблема не в ней
проблема в ответе сервера который распечатывается или распознается.

to nagash - упаси господь вставлять собаки до того как все заработает .

просто я говорю print $g, а оно - тишина.
а так все в полном порядке.

вобщем загадки национального сетестроения.
попробую еще сегодня повторить все telnetом, чтоб удостовериться, что не полная дура.
 

zerok

Новичок
проверила телнетом,
не дура ,
на ошибочную авторизацию 401
на безошибочную - тишина.

эх мать их так.
 

ZeitGeist

Guest
Кстати ты из сокета как-то странно читаешь:
Надо так:
PHP:
while(fgets($f, 2048)!="\r\n" && !feof($f));    //пропускаем заголовки
while(!feof($f)) { $g.=fgets($f, 2048);}
Ну а потом уже
PHP:
print $g;
 

zerok

Новичок
ZeitGeist
ты не понял мне как раз заголовок нужен.

не знаю я в какой-то из веток взяла эту функцию вполне рабочая, для получения заголовков
 
Сверху