Redirection javascript et parametre URL

Bonjour,

Je travail sur un site en HTML avec du javascript, pour rediriger l'internaute vers une page précise, j'utilise ce code :

<script type="text/javascript">

document.location.replace("http://www.url1.com");

</script>


Maintenant, imaginons que l'URL de navigation actuelle soit http://www.toto.fr?url=http://www.test.fr

Comment est-ce que je peux faire pour rediriger l'internaute en récupérant le paramètre en javascript pour que ça renvoie l'internaute sur http://www.test.fr

Merci pour votre aide !

5 réponses

  1. Avec ce code on y est presque :

    <script type="text/javascript">
    
    function parseGetParams() {  
     var $_GET = {};  
     var params = location.search.substring(1).split('&');  
     for (var i = 0; i < params.length; ++i) {  
      var param = params[i].split('=');  
      $_GET[param[0]] = param[1];  
     }  
     return $_GET;  
    }  
    
    var $_GET = parseGetParams();  
    
    alert($_GET['url']);
    
    document.location.replace($_GET.url);
    
    </script>


    Sauf que ça renvoie sur http://www.toto.fr/http://www.test.fr et pas vers http://www.test.fr

    (l'url de la page d'origine étant https://www.toto.fr/?url=http://www.test.fr )
    1. Contributeur
      Bon alors, j'ai une idée pas propre du tout...

      Tu as ça : https://www.toto.fr/?url=http%3A%2F%2Fwww.test.fr on est d'accord ?
      Et donc, je pensais faire un split de ce String avec 'url=' comme séparateur. Et tu prends la deuxième valeur du tableau fourni...

      Mais c'est pas propre du tout > <
    2. yop, voici un petit code (javascript uniquement) tout simple qui j'espère te conviendra
      function parseGetParams() {  
       var $_GET = {};  
       var params = location.search.substring(1).split('&');  
       for (var i = 0; i < params.length; ++i) {  
        var param = params[i].split('=');  
        $_GET[param[0]] = param[1];  
       }  
       return $_GET;  
      }  
      
      var $_GET = parseGetParams();  
      alert($_GET.url);  
      alert($_GET['url']);
      1. Merci ça a l'ai de fonctionner, seulement le code :
        document.location.replace($_GET['url']);

        renvoie vers http://www.toto.fr/http://www.test.fr et pas vers http://www.test.fr

        Que faire ?
      2. Contributeur
        Et $_GET.url ? Que donnent les alert de nEm3sis ?
      3. les alertes donnent http//www.test.fr

        J'ai essayé avec $_GET.url et ça redirige encore vers http://www.toto.fr/http://www.test.fr
      4. $_GET.url et $_GET['url'] sont strictement la même chose au fait (c'est juste 2 manière d'accéder à la valeur) donc utilise celle que tu préfères

        par contre c'est bizarre que ça redirige vers http://www.test.fr' target='_blank'>http://www.toto.fr/http://www.test.fr
        quand je teste ça me redirige bien vers la bonne page

        aurait tu une page d'exemple à montrer ?
        que je puisse voir quel est le problème
      5. Oui, ça fonctionne ! J'avais un bout de code qui faisait "court circuit". Merci beaucoup !

        Code qui marche :

        <script type="text/javascript">  
        
        function parseGetParams() {    
         var $_GET = {};    
         var params = location.search.substring(1).split('&');    
         for (var i = 0; i < params.length; ++i) {    
          var param = params[i].split('=');    
          $_GET[param[0]] = param[1];    
         }    
         return $_GET;    
        }    
        
        var $_GET = parseGetParams();    
        
        alert($_GET['url']);  
        
        document.location.replace($_GET.url);  
        
        </script>


        Par contre maintenant que ça fonctionne, je voudrais que le code javascript ne se lance uniquement si le paramètre url= est présent dans l'adresse. C'est à dire qu'il ne se déclenche pas si l'url est : https://www.toto.fr/ par contre il se déclenche si l'url est : https://www.toto.fr/?url=http%3A%2F%2Fwww.test.fr

        Comment faire ?
    3. Contributeur
      Comment veux-tu rediriger l'internaute ? Quand il clique sur un lien ?
      1. En fait, quand il clique sur un lien, il y a une image intersticielle qui s'ouvre. Lorsqu'il la ferme, je voudrais que ça le renvoie vers une page (le paramètre).

        ça fonctionne sans paramètre avec :
        <script type="text/javascript">
        ...
        document.location.replace("http://www.url1.com");
        ...
        </script>


        Et je n'arrive pas à récupérer le paramètre de l'URL (https://www.toto.fr/?url=http%3A%2F%2Fwww.test.fr ) pour rediriger l'internaute vers http://www.test.fr
    4. Contributeur
      Bonjour,
      C'est obligé que ce soit en javascript ? Pas de petit php tout simple ? Ou même de html tout simple ?
      1. Oui pourquoi pas, si ça fonctionne.
      2. Contributeur
        C'est toi qui a mis "url=" ?
      3. Contributeur
        Change alors en newurl=... (par exemple)
        $_GET['url'] est une commande déjà réservée par défaut.