
14.03.2009, 16:14
|
|
Участник форума
Регистрация: 09.03.2008
Сообщений: 193
С нами:
9564806
Репутация:
267
|
|
Написал альтернативную функцию для работы с вебом.
Использует file_get_contents()
PHP код:
function sock_do($action,$method,$header = false,$params = false,$proxy = false,$cookie = false,$referer = false)
{
$out = array('http' => array());
$method = strtoupper($method);
if($method == 'GET') {
$action .= '?'.$params;
$out['http']['method'] = 'GET';
} elseif($method == 'POST') {
$out['http']['method'] = 'POST';
$out['http']['header'] = "Content-type: application/x-www-form-urlencoded\r\n".
"Content-length: ".strlen($params)."\r\n";
$out['http']['content'] = $params;
} else {
die('Йа криветко');
}
if($proxy) {
$out['http']['proxy'] = 'tcp://'.$proxy;
}
if($cookie) {
$out['http']['header'] .= 'Cookie: '.$cookie."\r\n";
}
if($referer) {
$out['http']['header'] .= 'Referer: '.$referer."\r\n";
}
$out['http']['header'] .= "Connection: close\r\n";
$content = stream_context_create($out);
$result = @file_get_contents($action,false,$content);
$res = array();
$res = array($result);
if($header) {
$res[] = implode("\r\n",$http_response_header);
}
return $res; //Возвращаем ответ + заголовки
}
# [пример использования]
$send = sock_do('http://microsoft.com/private/index.php','GET',1,'login=bill&password=antichat');# аналагично с POST
print_R($send);# В первом кдюче ответ сервера во втором заголовки
Спросите для чего @ перед file_get_contens() ?
Если вы обратитесь к серверу и он вас хидером перенаправит ну другой хост то file_get_contents вернёт ошибку:-)В таком случае в переменной $header должно быть true.Далее парсим заголовки)
|
|
|