Redirection javascript et parametre URL

vitaly -  
Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   -
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. nEm3sis Messages postés 722 Statut Membre 113
     
    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
    1. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
       
      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 ?
      0
    2. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Et $_GET.url ? Que donnent les alert de nEm3sis ?
      0
    3. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
       
      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
      0
    4. nEm3sis Messages postés 722 Statut Membre 113
       
      $_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
      0
    5. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
       
      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 ?
      0
  2. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    Bonjour,
    C'est obligé que ce soit en javascript ? Pas de petit php tout simple ? Ou même de html tout simple ?
    0
    1. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
       
      Oui pourquoi pas, si ça fonctionne.
      0
    2. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
       
      J'ai essayé un truc du genre

      <script type="text/javascript">
      
      var toto = <?php echo $_GET['url'] ?>
      
      document.location.replace(toto);
      
      </script>


      Mais ça redirige vers https://www.toto.fr/?url=http%3A%2F%2Fwww.test.fr et pas vers http://www.test.fr
      0
    3. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      C'est toi qui a mis "url=" ?
      0
    4. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
       
      oui, je peux mettre ce que je veux. Je peux même mettre https://www.toto.fr/?http://www_test_fr
      0
    5. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Change alors en newurl=... (par exemple)
      $_GET['url'] est une commande déjà réservée par défaut.
      0
  3. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    Comment veux-tu rediriger l'internaute ? Quand il clique sur un lien ?
    0
    1. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
       
      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
      0
  4. AssassinTourist Messages postés 409 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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 > <
    0
    1. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
       
      Eventuellement, je peux avoir ça : https://www.toto.fr/?http://www_test_fr avec ? comme séparateur.

      N'y a-t-il pas la possibilité d'obtenir l'inverse de document.location.pathname qui me donne comme résultat l'URL complète sans les paramètres c'est à dire : https://www.toto.fr/
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Vitaly58 Messages postés 45 Date d'inscription   Statut Membre Dernière intervention   19
     
    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 )
    0