2011-05-17 5 views
0

J'ai besoin de n'importe quel lien qui a un "a href =" tag quand on clique pour être reçu via curl. Je ne peux pas coder ces liens car ils proviennent d'un site dynamique, donc ça pourrait être n'importe quoi. Comment pourrais-je y parvenir?php Liens cliqués sur Curl

Merci

Éditer: Laissez-moi vous expliquer plus. J'ai une application sur mon pc qui utilise une interface web. Il catalogue les fichiers et vous donne des options pour renommer la suppression, etc. Je veux ajouter une vue publique mais si je la mets en ligne, n'importe qui peut supprimer les fichiers renommer. Si je boucle les pages, je peux supprimer les barres de menu et les options d'édition grâce à l'utilisation d'un css différent. Cette partie fonctionne tous. La seule partie qui ne fonctionne pas, c'est si je clique sur un lien sur la page, il me renvoie à l'adresse du lien d'origine et cela vainc le point que les barres de menu sont de retour. J'en ai besoin pour boucler les liens cliqués. J'espère que cela a plus de sens ..

Voici mon code qui récupère le lien d'origine et le boucle et change le CSS pour pointer vers mon propre CSS. Il pointe le script Java à l'original car je n'ai pas besoin de changer cela. Je dois maintenant faire les « a href » liens sur la page lorsque vous cliquez dessus s'appeler par boucle et ne pas aller à la destination d'origine

<?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; 

?> 
+1

vous cherchez à faire une procuration? –

+0

s'il vous plaît coller votre code dans le bloc de code ... –

Répondre

0

Vous pouvez saisir toutes les URL en utilisant une expression régulière

// 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... 
0

Bien que je ne puisse pas imaginer pourquoi vous feriez cela, je pense que vous devriez utiliser ajax. Attachez un événement sur chaque étiquette et envoyez-les à un script sur votre serveur où la magie de curl se produirait. Quoi qu'il en soit, vous devriez expliquer pourquoi vous avez besoin d'extraire des données avec curl.

+0

Comment le code pour ce look? Appelez le script curl "curllink.php" – Michael

0

Pour autant que je comprends votre question, vous devez obtenir le contenu d'URL via CURL ... voici donc la solution

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

Puis un événement attach avec l'étiquette <a> ci-dessus, par exemple dans 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 
}); 

puis à cURL_wrapper.php faire follwoing

<?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); 
?>