2012-06-15 17 views
1

Мне было интересно, можно ли установить заголовок реферата для загружаемой страницы?Могу ли я установить http_referer на pageload?

Поэтому установите референт, чем загрузите страницу.

У меня есть этот код, который я хочу выполнить и работает отлично, но я хочу добавить к нему и ссылку реферирования.

$data = file_get_contents('http://Domain'); 
$regex = '/<div\b[^>]+?\bid\s*=\s*"MyID"[^>]*>(?:((?:[^<]++|<(?!\/?div\b[^>]*>))+)|(<div\b[^>]*>(?>(?1)|(?2))*<\/div>))?<\/div>/i'; 
preg_match($regex,$data,$match); 
//var_dump($match); 
echo $match[0]; 

Я хочу, чтобы загрузить DIV с другой страницы и установите реферер на «Домен»

Спасибо!

+0

Не с голой file_get_contents. Для установки заголовков HTTP вам понадобятся потоки или завиток. –

+0

Могу ли я установить заголовки с завивкой и по-прежнему отображать содержимое div? – phukit

+1

завиток похож на zombo.com, anythign возможен. –

ответ

0

Вы должны быть в состоянии использовать содержимое этого нужно просто, как вы бы в любое время использовать локон ... установив CURLOPT_RETURNTRANSFER так что вы можете использовать эти данные ...

$ch = curl_init(); 
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_REFERER => 'your referer value' 
    CURLOPT_URL => 'http://Domain' 
)); 

$data= curl_exec($ch); 
curl_close($ch); 

$regex = '/<div\b[^>]+?\bid\s*=\s*"MyID"[^>]*>(?:((?:[^<]++|<(?!\/?div\b[^>]*>))+)|(<div\b[^>]*>(?>(?1)|(?2))*<\/div>))?<\/div>/i'; 
preg_match($regex,$data,$match); 
//var_dump($match); 
echo $match[0]; 
+0

Что происходит, скрипт загружает игрока, и этот игрок проверяет референта, а скрипка curl не устанавливает референта для игрока, который является второй проверкой. Есть ли способ установить сценарий для отправки референта во ВСЕХ экземплярах? – phukit

5

Вы можете установить реферера и многие другие вещи и по-прежнему используют file_get_contents() tho curl предпочтительнее, так как он быстрее и настраивается.

<?php 
$url = 'example.com'; 
$referer = 'Domain'; 


$header[] = "Accept: text/xml,application/xml,application/json,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; 
$header[] = "Cache-Control: max-age=0"; 
$header[] = "Connection: keep-alive"; 
$header[] = "Keep-Alive: 300"; 
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
$header[] = "Accept-Language: en-us,en;q=0.5"; 

$opts = array('http'=>array('method'=>"GET", 
          'header'=>implode('\r\n',$header)."\r\n". 
          "Referer: $referer\r\n", 
          'user_agent'=> "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8")); 

$context = stream_context_create($opts); 

$data = file_get_contents($url, false, $context); 
?> 

Или вы можете использовать локон:

<?php 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8'); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
curl_setopt($curl, CURLOPT_HEADER, 0); 
curl_setopt($curl, CURLOPT_REFERER, $referer); 
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); 
curl_setopt($curl, CURLOPT_AUTOREFERER, true); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_TIMEOUT, 30); 

$data = curl_exec($curl); 
?> 
Смежные вопросы