PHP CURL - pobieranie zawartości innej strony

0

Cześć,
za pomocą kodu:

$username = $_GET["username"];
$password = $_GET["password"];

function getUrlContent($url, $username, $password){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt(CURLOPT_REFERER, 'http://google.com');
	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
	curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
	curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	$data = curl_exec($ch);
	$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
	curl_close($ch);
	return ($httpcode>=200 && $httpcode<300) ? $data : false;
}

//echo getUrlContent('mywebsite.pl', $username, $password);

pobieram zawartość strony zabezpieczonej za pomocą .htpasswd.
Problem w tym, że wszystkie linki, obrazki wskazują na adres strony z której pobieram zawartość, a chcę by wskazywała $url. Krótko pisząc, obrazki się nie wyświetlają, linki przenoszą na złą stronę.

Pomysł?

0

CURL pobierze Ci wygenerowaną stronę. Jedyna możliwość jaką tu widzę to napisanie kodu, który dokona podmiany urli na podaną przez Ciebie zmienną.

0

CURL służy do statycznego poboru danych przez sieć. Nie renderuje treści, nie obsługuje javascriptów, nie umożliwia manipulacji zawartością odpowiedzi przed jej zwróceniem. Zwraca po prostu odpowiedź serwera na dany request. Tylko co za problem zrobić cokolwiek sobie tylko wymarzysz z treścią zwróconą do skryptu PHP? str_replace, preg_replace z prostymi regułkami i zamieniasz w odpowiedzi to co chcesz na cokolwiek innego sobie życzysz. Możesz nawet treść przekazać parserowi DOM...

0

A jest jakaś funkcja w PHP która renderuje treść?
Czyli zwróci mi dokładnie taki kod HTML jak mam pod przeglądarką?

Marcin Kula-Bukowski napisał(a):

CURL służy do statycznego poboru danych przez sieć. Nie renderuje treści, nie obsługuje javascriptów, nie umożliwia manipulacji zawartością odpowiedzi przed jej zwróceniem. Zwraca po prostu odpowiedź serwera na dany request. Tylko co za problem zrobić cokolwiek sobie tylko wymarzysz z treścią zwróconą do skryptu PHP? str_replace, preg_replace z prostymi regułkami i zamieniasz w odpowiedzi to co chcesz na cokolwiek innego sobie życzysz. Możesz nawet treść przekazać parserowi DOM...

0

Nie. PHP to język programowania, a nie system operacyjny. PHP nie ma wbudowanej przeglądarki internetowej, systemy operacyjne również, sam musisz zainstalować interesujące Cię oprogramowanie i połączyć je z PHP.

0

Od tego jest ob_start i ob_get_clean żeby wyrenderować jakiś szablon w PHP, buforując po prostu to co bez tego byłoby normalnie wyplute na ekran czyli np. tak:

function render($template, array $data = array())
{
    extract($data);
    ob_start();
    include $template;
    return ob_get_clean();
}

i taki przykładowy szablon:

<ul>
    <?php foreach ($items as $value): ?>
    <li><?= $value ?></li>
   <?php endforeach; ?>
</ul>

i przykładowe renderowanie tego:


$template = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR . 'list.php';
$items = array(
    'foo',
    'bar',
);
echo render($template, compact('items')); 

To chyba proste jak drut.

1 użytkowników online, w tym zalogowanych: 0, gości: 1