php Curl нажал ссылки - PullRequest
       4

php Curl нажал ссылки

0 голосов
/ 17 мая 2011

Мне нужна любая ссылка с тегом "href =" при нажатии для получения через curl.Я не могу жестко закодировать эти ссылки, так как они с динамического сайта, поэтому может быть что угодно.Как бы мне этого добиться?

Спасибо

Редактировать: Позвольте мне объяснить больше.У меня есть приложение на моем компьютере, которое использует веб-интерфейс.Он каталогизирует файлы и дает вам возможность переименовать, удалить и т. Д. Я хочу добавить публичное представление, однако, если я поставлю его как подключенный к сети, любой сможет переименовать файлы.Если я сверну страницы, то смогу удалить строки меню и опции редактирования, используя другой CSS.Эта часть все работает.Единственная часть, которая не работает, - это если я нажимаю на ссылку на странице, она возвращает меня к исходному адресу ссылки, и это побеждает пункт, когда строки меню возвращаются.Мне это нужно, чтобы свернуть кликнувшие ссылки.Надеюсь, что это имеет больше смысла ..

Вот мой код, который выбирает исходную ссылку и скручивает ее и изменяет CSS, чтобы он указывал на мой собственный CSS.Он указывает java-скрипт на оригинал, так как мне не нужно это менять.Теперь мне нужно сделать так, чтобы ссылки "a href" на странице при нажатии вызывались с помощью curl, а не переходили к исходному месту назначения

<?php


$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://192.168.0.14:8081/home/');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$curl_response = curl_exec($ch);
curl_close($ch);

//Change link url

$link = $curl_response;

$linkgo = '/sickbeard_public';
$linkfind = 'href="';
$linkreplace = 'href="' . $linkgo ;

$link = str_replace($linkfind, $linkreplace, $link);

//Change js url
$js = $link;

$jsgo = 'http://192.168.0.14:8081';
$jsfind = 'src="';
$jsreplace = 'src="' . $jsgo ;

$js = str_replace($jsfind, $jsreplace, $js);


//Fix on page link errors
$alink = $js;
$alinkgo = 'http://192.168.0.14:8081/';
$alinkfind = 'a href="/sickbeard_public/';
$alinkreplace = 'a href="' . $alinkgo ;

$alink = str_replace($alinkfind, $alinkreplace, $alink);

//Echo page back
echo $alink;

?>

Ответы [ 3 ]

0 голосов
/ 17 мая 2011

Хотя я не могу себе представить, почему вы так поступили, я думаю, что вы должны использовать ajax.Прикрепите событие к каждому тегу и отправьте их сценарию на вашем сервере, где произойдет магия скручивания.В любом случае вы должны объяснить, почему вам нужно получать данные с помощью curl.

0 голосов
/ 17 мая 2011

Насколько я понимаю ваш вопрос, вам нужно получить содержимое URL через CURL ... так что вот решение

<a href="<?php print $my_url; ?>" id="my_link">Click here to get via curl </a>

Затем прикрепите событие с вышеуказанным тегом <a>, например, в JQuery

$("#my_link").click(function(){
   var target_url = $(this).attr("href");
   //Send an ajax call to some of your page like cURL_wrapper.php with target_url as parameter in get
});

затем в cURL_wrapper.php сделать следующее

<?php
//Get the $target_url here from $_GET[];
$ch = curl_init($your_domain");
$fp = fopen("$target_url", "r");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
0 голосов
/ 17 мая 2011

Вы можете получить все URL, используя регулярное выражение

// insert general warning about how parsing HTML using regex is evil :-)
preg_match('/href="([^"]+)"/', $html, $matches);
$urls = array_slice($matches, 1);

// Now just loop through the array and fetch the URLs with cUrl...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...