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 :

mettre une variable php dans une instruction de redirection par header


Sujet :

Langage PHP

  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut mettre une variable php dans une instruction de redirection par header
    Bonsoir,

    voici ce qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: http://www.---index.php?err=$erreur');
    Ce que je souhaite faire étant clair (je pense), quelle serait la bonne syntaxe (car là, il ne trouve pas la page) ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    As tu oublié que php n'interprète pas les chaines de caractères entourées par de simples quotes ?

    Et n'oublies pas de mettre un exit derrière ton header. Il faut toujours un exit derrière un header de redirection sinon cela peut produire des bugs erratiques.

    Au passage c'est quoi les trois tirets devant le index.php ?

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    As tu oublié que php n'interprète pas les chaines de caractères entourées par de simples quotes ?
    Bien sûr que non, et je savais que ma syntaxe était fausse, mais c'était pour faire comprendre ce que je voulais faire. Par contre, je viens de faire un nouvel essai et là, je ne comprends pas pourquoi ça ne marche pas (plus page non trouvée, mais page blanche ) (et qu'est-ce qui marcherait ?) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($erreur!='') {
    	$url="'Location: http://www.vercorhandisport.org/test/erreur_saez58/index.php?err=".$erreur."'";
    header($url); exit();}
    Et voilà l'explication des tirets : c'était juste pour masquer l'URL, mais comme y a rien de confidentiel...

    Au passage, les redirections faites en javascript, faut-il aussi mettre un <?php exit(); ?> après ?
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <script language="javascript">
    window.location="http://vercorshandisport.org/test/saez58/index.php"
    </script>
    comme ça ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <script language="javascript">
    window.location="http://vercorshandisport.org/test/saez58/index.php"
    </script>
    <?php exit(); ?>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url="Location: http://www.vercorhandisport.org/test/erreur_saez58/index.php?err=".$erreur;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Avec ça, page non trouvée...et dans la barre d'adresse du navigateur est affichée l'URL du fichier appelant et non celle du fichier sur lequel on veut faire la redirection.

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il semble que l'adresse http://www.vercorhandisport.org/test/erreur_saez58/index.php n'existe pas, tout simplement.
    Ceci dit, tu ne confonds pas avec http://vercorshandisport.org/test/saez58/index.php ?

    Au passage, les redirections faites en javascript, faut-il aussi mettre un <?php exit(); ?> après ?

    Bien évidemment, sinon, comment JavaScript pourrait savoir qu'il faut stopper le code PHP !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Il y avait bel et bien une erreur dans l'URL, et si je la corrige :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($erreur!='') {
    	$url="'Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err=".$erreur."'";
    header($url); exit();}
    ça marche !

    +1 pour Sabotage qui m'a donné la solution.


    et pour info, voici la partie utile de la page vers laquelle on redirige :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $erreur=$_GET['err'];
    $erreur=str_replace("_"," ",$erreur);
    echo $erreur;
    ?>
    <form onclick="javascript:history.go(-1);">
    <input type="submit" value="OK">
    </form>
    Ce formulaire a pour but de laisser le temps de lire le message d'erreur.

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Il y avait bel et bien une erreur dans l'URL, et si je la corrige :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($erreur!='') {
    	$url="'Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err=".$erreur."'";
    header($url); exit();}
    ça marche !

    +1 pour Sabotage qui m'a donné la solution.

    hum... moi aussi je t'avais donné la solution, il te suffisait de remplacer les simples quotes par des doubles quotes et ça aurait fonctionné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err=$erreur");
    exit;
    Sabotage t'a donné une syntaxe avec la concaténation qui permet de mieux visualiser les variables (méthode que je préfère également) mais dans ce cas de figure les deux méthodes se valent et produisent le même résultat.

    Là où tu fais fort c'est pour t'arranger, après plusieurs bonnes réponses qui t'ont donné la solution, à terminer par fournir un exemple qui ne fonctionne pas : il ne faut pas quoter des variables quand on les passe à une fonction et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $url="'Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err=".$erreur."'";
    header($url);
    ne peut pas fonctionner !

    Tu as le choix entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url='Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err='.$erreur;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url="Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err=".$erreur;
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url="Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err=$erreur";
    mais pas ce que tu as écrit

  9. #9
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Pas de jaloux, et de plus, tu as raison, car ça ne marche pas avec ce que j'avais écrit, mais si je regarde le code, ta 2e solution ! (Je sais pas où j'ai pêché ça alors que je l'ai jamais codé comme ça).

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    ... mais si je regarde le code, ta 2e solution ! (Je sais pas où j'ai pêché ça alors que je l'ai jamais codé comme ça).
    je comprend pas ce que tu veux dire. Enfin bon le principal est que tu aies trouvé une solution.

  11. #11
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Ce que je veux dire, c'est que j'ai jamais codé comme j'avais écrit (d'où je ne sais pas d'où ça sort...), mais comme ta 2e solution :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($erreur!='') {
    	$url="Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err=".$erreur;
    header($url); }

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Ce que je veux dire, c'est que j'ai jamais codé comme j'avais écrit
    C'est ce que tu avais déjà écrit dans ton second message ici, d'où d'ailleurs la réponse de sabotage qui te montrait une des solutions pour faire une concaténation correcte puisque apparemment tu t'étais orienté vers cette solution plutôt que vers ma solution facile, ensuite le code était correct mais l'adresse fausse d'où la réponse de Bovino, et enfin ton résumé final reprenait le code erroné de ton second message, d'où mes dernières interventions. Voilà pour la petite histoire de ce topic

  13. #13
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut

  14. #14
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Je réactive cette discussion car j'ai fait une modif, et ça marche plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ($erreur!='') {
    	header("Location: http://vercorshandisport.org/test/erreur_saez58/index.php?err=$erreur");}

  15. #15
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    Et qu'est-ce qui ne marche plus exactement ? La redirection n'est pas faite ou la variable n'est pas passée ou l'adresse est fausse ? Il me semble aussi que tu as oublié le "exit" après le header de redirection.

  16. #16
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Tu as raison pour l'exit, mais si je le rajoute, ça change rien...Sinon, hier soir, j'ai bien réalisé que j'avais pas dit ce qui n'allait pas, mais j'avais déjà éteint l'ordi et m'étais couché...Donc ce qui se passe maintenant : page blanche donc redirection pas faite, et même si je reprends le code du 17/03 23h50 (en rajoutant le exit ).

  17. #17
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 486
    Billets dans le blog
    1
    Par défaut
    Bon, comme je n'arrive plus à faire marcher ma redirection PHP, j'ai fait une redirection javascript :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	if ($erreur!='') {
    	$_SESSION['err']=$erreur;
    	?>
    	<script language="javascript">
     
    window.location="http://vercorshandisport.org/test/erreur_saez58/index.php";
    </script>
    	<?php
     exit();}
     
     
    ?>
    et erreur_saez58/index.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $erreur=$_SESSION['err'];
    $erreur=str_replace("_"," ",$erreur);
    echo $erreur;
    ?>
    (car le but, c'était juste d'afficher un message d'erreur...)

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  2. Réponses: 1
    Dernier message: 20/04/2007, 09h12
  3. [PHP-JS] mettre une variable javascript dans une variable php
    Par Mounr dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2007, 09h09
  4. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 14h08
  5. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Langage
    Réponses: 3
    Dernier message: 12/06/2006, 14h02

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