IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Redirection Page Html


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut Redirection Page Html
    Bonjour à tous,


    Dans un fichier Excel, j'ai créé un lien hypertexte ou je doit faire une redirection vers une page.
    J'ai récupéré un code javascript que j'ai inséré dans une page redirection.html

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <html>
     <body>
     Please wait, loading your page... 
     <script type="text/javascript">
         function getQuerystring(key) {
             key = key.replace(/[\[]/,"\\\[").replace(/    [\]]/,"\\\]");
                    // alert('>>>>>>>>>>>>'+key)
             var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
                    //  alert('>>>>>>>>>>>>'+regex)
             var query = regex.exec(window.location.href);
                    // alert(query[1]);
             return query[1];
         }
         window.location = "http://" + window.location.host + "/" + getQuerystring('page');
     </script>
     </body>
     </html>

    cela fonctionne en partie, voici URL de depart
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://intranet/redirection.html?page=suivi/visu_detail.php?annee=2024&code=1111111111&s=tata
    mais a la fin j'arrive sur ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://intranet/suivi/visu_detail.php?annee=2024
    cela a supprimé ce qu'il se trouve après &


    je voudrais comprendre a quoi correspond les Replace et Regexp, Pourriez-vous m'aiguiller ?

    Merci par avance

    guigui69

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 568
    Par défaut
    il s'agit d'une expression régulière. vous pouvez trouver plus d'informations sur la page suivante :
    https://developer.mozilla.org/fr/doc...ar_expressions

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    je voudrais comprendre a quoi correspond les Replace et Regexp, Pourriez-vous m'aiguiller ?
    en attendant que CosmoKnacki passe pour plus amples explications il me semble que cela peut se résoudre simplement avec l'interface URL et sa méthode URL.searchParams.

    cela a supprimé ce qu'il se trouve après &
    à aucun moment tu ne les récupère !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const adresse ="http://intranet/redirection.html?page=suivi/visu_detail.php?annee=2024&code=1111111111&s=tata"
    const url = new URL(adresse);
    const params = url.searchParams;
    // récup. la redirection page
    const page = params.get("page");
    // supprime le paramètre page
    params.delete("page");
    // construit la nouvelle adresse
    // pas bon, manque un & !!!!
    //console.log("%s/%s%s", url.origin, page, params.toString());
    console.log("%s/%s&%s", url.origin, page, params.toString());
    Ressources :


    [Edit 01/10/2024] correction code, maquait un & ligne 10

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut
    Bonsoir NoSmoking pourquoi " a aucun moment je les récupère"?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut
    NoSmoking,
    j'ai tester ton code ,

    pourquoi const page = params.get("page"); ne prend pas tout le parametre page "suivi/visu_detail.php?annee=2024&code=1111111111&s=tata" mais uniquement "suivi/visu_detail.php?annee=2024" ?

  6. #6
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 982
    Par défaut
    Le problème c'est que cette url est mal écrite et ambiguë, car comme les paramètres query ne sont pas encodés avec des pourcentages pour les caractères problématiques, impossible de savoir où s'arrête la valeur du paramètre page.
    Sa valeur peut être l'une de celle-ci:
    • suivi/visu_detail.php?annee=2024
    • suivi/visu_detail.php?annee=2024&code=1111111111
    • suivi/visu_detail.php?annee=2024&code=1111111111&s=tata
    , et les paramètres restant seraient alors des paramètres liés au path suivi/visu_detail.php et non à redirection.html.

    Pour lever l'ambiguïté, il faudrait que l'url ait une de ces têtes:
    • http://intranet/redirection.html?page=suivi%2Fvisu_detail.php%3Fannee%3D2024&code=1111111111&s=tata
    • http://intranet/redirection.html?page=suivi%2Fvisu_detail.php%3Fannee%3D2024%26code%3D1111111111&s=tata
    • http://intranet/redirection.html?page=suivi%2Fvisu_detail.php%3Fannee%3D2024%26code%3D1111111111%26s%3Dtata

  7. #7
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 982
    Par défaut
    Pour ce qui est de la fonction présentée au départ, elle est l'une des multiples versions qu'on trouve sur le web avec plus ou moins d'erreurs de copie et de passages sucrés. Voici une version sans erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function getQueryParam(param, url) {
        param = param.replace('[', '\\\[').replace(']', '\\\]');
     
        const regex = new RegExp('[?&]' + param + '=([^&#]*)');
     
        const result = regex.exec(url);
     
        return result ? result[1] : '';
    }
    L'idée de cette fonction est de construire dynamiquement une pattern capable d'extraire la valeur d'un paramètre spécifique de la partie "query" (autrement dit les paramètres passés en GET) d'une URL. Comme ce paramètre peut être un tableau (par exemple issu d'un ensemble de checkboxs), il est susceptible de contenir des crochets. Or comme ces crochets ont une signification spéciale au sein d'une pattern (ils servent à délimiter une classe de caractères), il faut les échapper pour qu'ils soient vu comme des crochets au sens littérale. C'est à ça que servent les deux replace.

    Ensuite on peut construire dynamiquement la pattern pour la transmettre au constructeur RegExp. Ce qui donnera pour param='page' la pattern suivante:[?&]page=([^&#]*).

    • [?&] une classe de caractères contenant ? et & (et donc qui réussira sur l'un ou l'autre de ces caractères
    • page= c'est une chaîne littérale, rien de spécial à dire.
    • [^&#]* un classe de caractères ne contenant ni & ni #, répétée de 0 à n fois, ce qui veut dire que cette partie ne s'arrêtera qu'à la rencontre d'un prochain paramètre, de l'ancre de l'url, ou à la fin de la chaîne.
    • Le couple de parenthèses encadrant cette dernière partie est un groupe de capture qui permet d'isoler cette partie de la correspondance avec result[1] car c'est le premier groupe de capture.


    Il est clair que cette fonction date un peu et que la bonne méthode pour parser et extraire des informations d'une URL est celle présentée par NoSmoking.
    Néanmoins ton problème reste entier puisque c'est ton URL qui est mal encodée.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 825
    Par défaut
    Bonjour,

    j'ai fait la modification, mais cela ne fonctionne pas.

    je vois bien la bonne URL mais à la fin je retourne a l'acceuil de intranet (http://intranet)

    je comprend pas pourquoi

  9. #9
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 982
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 982
    Par défaut
    Citation Envoyé par guigui69 Voir le message
    j'ai fait la modification, mais cela ne fonctionne pas.
    Quelle modification? Montre l'url de départ et ton code actuel.

Discussions similaires

  1. Redirection page html
    Par clairetj dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/04/2014, 12h17
  2. Réponses: 4
    Dernier message: 02/03/2010, 10h52
  3. Redirection d'une page HTML vers une ancre flash
    Par ElPaso dans le forum Flash
    Réponses: 0
    Dernier message: 05/01/2009, 19h14
  4. [PHP-JS] Problème de redirection vers une page html
    Par Don-Leplang dans le forum Langage
    Réponses: 4
    Dernier message: 07/04/2007, 19h16
  5. redirection de pages html vers une page locale? (modif dns?)
    Par johan_b dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 20/01/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo