2011-05-18 3 views
-5
<html> 
    <head> 
    <script type="text/javascript" src="jquery-1.6.1.js"></script> 
    <script> 
     $('a').click(function(e) { 
     e.preventDefault(); 
     document.location.href='http://www.redirectlink.com?ref='+this.href; 
     return false; 
     }); 
    </script> 
</head> 

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

    echo $curl_response;  
?> 

Est-ce que cela devrait fonctionner? Il boucle une page et puis quand vous cliquez sur un lien sur la page il devrait rediriger vers http://www.redirectlink.com?ref= '+ this.href La partie de curling fonctionne mais elle ne redirige pas. Cela me prend toujours à l'URL d'origine. Le fichier jquery-1.6.1.js se trouve dans le même répertoire que tous les autres fichiers.Veuillez vérifier s'il y a des erreurs

EDIT: Problème résolu. Nécessaire pour préparer le javascript.

+5

-1 pour le titre de la question –

Répondre

1

Rediriger?

Quatre numéros:

1). Vous appelez le sélecteur $ ('a') avant que le document ne soit chargé. Vous n'obtiendrez aucun A. Vous devrez envelopper ceci dans document.ready ou quelque chose de similaire.

$(document).ready(function(){ 
    //put your script block here. 
}); 

2). Vous devez encoderUriComponent sur this.href.

3). Vous semblez supposer que c'est une URL entièrement qualifiée, jamais une URL relative.

4). Si ce que vous lookng pour une redirection, vous devez simplement utiliser un en-tête de redirection (CURL est pas nécessaire):

if (array_key_exists('ref', $_GET)) 
{ 
    header('Location: '.$_GET['ref']); 
    exit; 
} 

Note - ce doit aller au-dessus toute sortie ... Au fond, déplacez votre bloc php au tout début du fichier.


Clarification. Pas un redirecteur du tout:

if (array_key_exists('ref', $_GET)) 
{ 
    echo file_get_contents($_GET['ref']; 
} 

Le bloc ci-dessus remplace tout votre code PHP en 3 lignes faciles à comprendre.

+0

Merci, il semble fonctionner tel quel. C'est juste une partie du code. J'ai fait des comptes pour les urls relatives. – Michael

+0

Je viens d'ajouter une clarification à la partie PHP ... assurez-vous d'obtenir cela. :) –

+0

Que voulez-vous dire? – Michael

2

Je ne suis pas expert en jquery mais je crois que vous avez besoin d'une fonction prêt

$.ready(function() { 
    $('a').click(function(e){ 
     e.preventDefault(); 
     document.location.href='http://www.redirectlink.com?ref='+this.href; 
     return false; 
    }); 
}); 

Essayez ci-dessus ...

+0

Merci! Ça marche.J'accepterai de répondre une fois que je le pourrai :) – Michael

0

@Mayank,

est correct,

le faire comme ceci:

<script> 
$(document).ready(function(){ 
    $('a').click(function(e){ 
     e.preventDefault(); 
     document.location.href='http://www.redirectlink.com?ref='+this.href; 
     return false; 
    }); 
}); 
</script> 
1

aussi, ne devrait pas le script de démarrage comme:

<script type="text/javascript"> 
... 
</script> 
+1

Préféré mais non obligatoire, notamment en HTML5. JavaScript est la langue par défaut maintenant (comme ce n'était pas avant). :) –

+0

Merci, j'ai toujours utilisé ceci, donc je ne me suis pas rendu compte que ce n'est pas maintenant obligatoire – CyberVitor

0

Vous devez Enveloppez le tout comme:

jQuery(document).ready(function($) { [your code] }); 
0

De plus, je pense que

e.preventDefault(); 

et

return false; 

ont même comportement.

Questions connexes