Есть ли способ сделать перенаправление в PHP с помощью curl? Я посмотрел несколько примеров, но ни один из них не работает в моем случае. Мне нужно войти в url1, а затем перенаправить меня на url2. (url_1 - это сайт моей IP-камеры, url_2 - это моя страница, которая содержит iframe url_1, чтобы увидеть содержимое url_1 на моей странице, требуется проверка подлинности)Как сделать curl php redirect?
Пожалуйста, проверьте мой код и скажите мне, где я сделал не так, большое спасибо!
<?
$url = 'url_1';
$username = 'admin';
$password = '888888';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
curl_setopt($ch, CURLOPT_REFERER, "url_2");
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type:application/x-www-form-urlencoded"));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$a = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
print_r($info);
$headers = explode("\n",$a);
$redir = $url;
// loop through the headers and check for a Location: str
$j = count($headers);
for($i = 0; $i < $j; $i++){
// if we find the Location header strip it and fill the redir var
if(strpos($headers[$i],"Location:") !== false){
$redir = trim(str_replace("Location:","",$headers[$i]));
break;
}
}
// do whatever you want with the result
echo $redir;
?>
Я также напечатать $ информацию здесь:
Array (
[url] => url_1
[content_type] => text/html
[http_code] => 200
[header_size] => 180
[request_size] => 288
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.016
[namelookup_time] => 0
[connect_time] => 0
[pretransfer_time] => 0
[size_upload] => 0
[size_download] => 6379
[speed_download] => 398687
[speed_upload] => 0
[download_content_length] => 6379
[upload_content_length] => 0
[starttransfer_time] => 0.016
[redirect_time] => 0
[certinfo] => Array ()
)
и $ REDIR является: URL_1
Возможный дубликат [Сделать curl follow redirects?] (Http://stackoverflow.com/questions/3519939/make-curl-follow-redirects) –
У вас уже включен режим «FOLLOWLOCATION», поэтому скручивание будет следовать любые переадресации, которые ударил сервер, происходят. –
@ Marc B, устанавливающий FOLLOWLOCATION на false, исправит проблему? Я пробовал и не работал –