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

Langage PHP Discussion :

[PHP-JS] Modifier un paramètre de l'URL «sur le retour»


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Par défaut [PHP-JS] Modifier un paramètre de l'URL «sur le retour»
    Salut, salut !

    J'aimerais avoir l'avis des gwands gouwous de PHP/HTTP. :]

    Voici mon objectif : après avoir appelé un service (plus vulgairement : «page PHP») j'aimerais que l'URL soit transformée, «sur le retour», sans pour autant opérer de redirection. L'idée est que le service doit, en plus de retourner des données, altérer l'URL afin de trimbaler par la suite un nouveau paramètre.

    En l'occurence, j'aimerais que mon service accole à l'URL un paramètre language en plus d'avoir fait son traitement, ce paramètre étant utile par la suite pour d'autre services.

    Pour l'instant j'ai mis en place un système de redirection qui, automatiquement, redirige service.php vers service.php?language=en_EN (pour reprendre le paramètre d'exemple), avant même d'entamer le traitement confié audit service.
    Le problème est que, si des données sont postées au serveur je dois les mettre de côté en session pour les retrouver au moment où le service s'exécute vraiment, après redirection. Ce qui se fait bien, soit dit en passant mais le problème est plus embêtant lorsque des fichiers sont transmis au serveur... Dans ce cas ils passent tout bonnement à la trappe lors de la redirection puisqu'ils sont encore, à ce stade, temporaires.

    Avant de bricoler une sorte de dépôt permettant de stocker provisoirement les fichiers transmis, je voudrais donc savoir s'il y a un moyen de modifier une URL sans passer par la redirection :
    header('Location:service.php?language=en_EN');
    Merci par avance, et n'hésitez pas à me faire part de tout ce qui vous semble intéressant d'évoquer à ce sujet.

    Cheers !

  2. #2
    Membre émérite Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Par défaut
    Je ne suis pas sûr d'avoir très bien compris, mais, si ça peut t'aider, je crois qu'on peut ajouter un paramètre à l'url via javascript.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Par défaut
    Effectivement, mais le but est bien de le faire côté serveur.

    Si ça peut t'aider, imagine que j'appelle le script hello.php. L'URL d'appel est donc http://chezMoi.net/hello.php. Après avoir fait son petit quelquechose, le script donne sa réponse au navigateur.
    C'est à ce moment précis, en évitant toute redirection, que l'URL doit être changée en http://chezMoi.net/hello.php?language=en_EN avant d'envoyer la réponse au client, soit au moment de lui transmettre les données.

    Changer l'URL avec JavaScript implique d'une part d'externaliser le boulot du serveur du côté client et d'autre part, encore une fois, de recharger la page donc procéder à une deuxième requête, ce que je veux justement éviter. ^^'

    Merci tout de même. :)

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Par défaut
    Salut,

    En regardant dans les commentaires sur la fonction header(), je suis tombé sur un passage qui pourrait t'interesser :

    Redirect the POST like this:

    header("HTTP/1.0 307 Temporary redirect");
    header("Location: https://myserver.redcetus.com/otherlocation");

    if you dont put the 307 status code, the browser will use the GET method even if the original request was a POST

    WARNING: the POST method should not be idempotent. If you need to use this, you better take a closer look to your design.
    En d'autre termes, avec le premier header, le client devrait re-POSTer les données. J'ai pas le temps d'essayer mais je pense que ça vaut le coup d'y jeter un oeil.

    Sinon est-ce que tu ne peux pas simplement faire : $_GET['language'] = "en_EN" pour faire "comme si" l'utilisateur avait passé le paramètre.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Par défaut
    Salut !

    Merci pour ton aide. Je viens d'essayer d'utiliser l'entête de redirection temporaire et les données sont bien retransmises (champs de formulaires, fichiers, la totale). Cependant un problème survient : pour toute requête redirigée de la sorte le navigateur affiche un avertissement comme quoi la page est redirigée (mince, démasqué !.. ) et demande à l'utilisateur s'il veut tout de même communiquer les données à la page ciblée.
    Autrement dit, un message qui effraie bon nombre de "touriste" et une sacrée plaie pour la navigation vu qu'on ne peut pas le désactiver (quand bien même l'utilisateur, effrayé par l'alerte, aurait envie de poursuivre...).
    Ce n'est donc pas une solution envisageable et c'est bien dommage.

    Autrement, pour en revenir à ta question, le fait d'attribuer une valeur à $_GET['language'] n'a malheureusement pas pour effet d'inclure le paramètre dans l'URL du client. C'est une affectation qui n'a d'effet que du côté serveur.

    Merci encore,

    Chuss !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] PHP Session et passage de paramètre dans une URL via href
    Par RicardoBxl dans le forum Langage
    Réponses: 8
    Dernier message: 27/01/2013, 15h28
  2. Modifier un paramètre dans l'URL
    Par hunteshiva dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/12/2011, 16h07
  3. Passage d'un tableau javascript en paramètres d'une URL
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 02/09/2005, 10h46
  4. Passage de paramètres via l'URL
    Par carolinebelle dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/08/2005, 16h16
  5. Constructeur de copie modifiant le paramètre ?
    Par Nicodemus dans le forum C++
    Réponses: 4
    Dernier message: 12/01/2005, 21h25

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