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 :

Retour page appelante [PHP 7]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut Retour page appelante
    Bonjour,

    Un fichier 1 me permet d'accéder au fichier 2 et de définir la langue.
    Je souhaite que ce fichier 2 revienne au fichier 1.
    J'ai ce script du fichier 2 (sans doute largement simplifiable) :
    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?php
    	if(session_id() == '')
    	    {
    	      session_start();
    	    }
     
    	$_SESSION['langue_util'] = 'anglais';
     
       	$_SESSION['provenance'] = $_SERVER["HTTP_REFERER"];
    ?>
     
    <html>
    	<head>
    	</head>
    	<body class="texte">
    		<form NAME="monformulaire"><INPUT TYPE="text" SIZE="2" NAME="montexte">
    			<script>
    				dureeCompteur = 0;
    				function compteSecondes()
    					{
    						document.monformulaire.montexte.value = dureeCompteur;
    						dureeCompteur--;
    						if (dureeCompteur>=0)
    						   setTimeout('compteSecondes();',1000);
    						else
    						   {location.href = "$_SESSION['provenance']";}
    					}	
    					compteSecondes();
    			</script>
    		</form>
    	</body>
    </html>
    Si la variable $_SESSION['provenance'] existe et correspond bien à la page appelante, le retour ne se fait pas et aboutit à une page inconnue.
    Mais pourquoi donc ?

    Et j'ai le même problème en remplaçant le contenu de body par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
      header('Location: $_SESSION["provenance"]');
      exit();
    ?>
    Merci d'avance.

  2. #2
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // header('Location: $_SESSION["provenance"]');
    header("Location: $_SESSION['provenance']");

  3. #3
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Bonjour ipcman,

    Merci pour ton idée mais avec cette modification, fichier 2 n'essaie même plus de retourner quoique ce soit et affiche une page blanche.

  4. #4
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    $_SESSION est une superglobale php. Or, au sein de ton script, tu n'as pas mis de balise <?php ... ?> donc le script n'est pas capable de comprendre la valeur de $_SESSION['.. '].

  5. #5
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Désolé mais je ne vois pas où j'ai oublié ça:
    Code : 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
    18
    19
    20
    21
    <?php
    	if(session_id() == '')
    	    {
    	      session_start();
    	    }
     
    	$_SESSION['langue_util'] = 'anglais';
     
       	$_SESSION['provenance'] = $_SERVER["HTTP_REFERER"];
    ?>
     
    <html>
    	<head>
    	</head>
    	<body class="texte">
    		<?php
    			header("Location: $_SESSION['provenance']");
    		  	exit();
    		?>
    	</body>
    </html>

  6. #6
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Cf. la doc : https://www.php.net/manual/fr/function.header.php
    header() doit être appelé avant tout contenu html (type <body> ...) . le code suivant devrait suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if(session_id() == '')
    	    {
    	      session_start();
    	    }
     
    $_SESSION['langue_util'] = 'anglais';
    $_SESSION['provenance'] = $_SERVER["HTTP_REFERER"];
     
    header("Location: $_SESSION['provenance']");
    exit();
    ?>

  7. #7
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    De nouveau, merci pour ton intervention mais le fichier 2 ne retourne toujours rien et affiche une page blanche.

  8. #8
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    $_SERVER["HTTP_REFERER"] ne doit pas renvoyer ce que tu attends.
    Tu as les détails ici : https://www.php.net/manual/fr/reserv...les.server.php
    Fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo  $_SERVER['HTTP_REFERER'];
    pour vérifier. Attention aux guillemets simples et non doubles

  9. #9
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    J'avais effectivement pensé à vérifier et j'obtiens bien l'URL de ma page appelante.
    Curieux.

  10. #10
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Quelle url s'affiche finalement dans la barre du navigateur ?
    Est-elle différente de l'url du fichier 1 vers lequel tu cherches à revenir ?

  11. #11
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    fich_1.php
    Code : 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
    18
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Accueil</title>
    </head>
    <body>
    	<a href="fich_2.php">fich_2</a>
    	<?php
    	session_start ();
    	if (! isset ( $_SESSION ['langue_util'] )) {
    		echo "<p>Pas de langue choisie</p>";
    	} else {
    		echo "<p>" . $_SESSION ['langue_util'] . "</p>";
    	}
    	?>
    </body>
    </html>
    fich_2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    session_start();
    $_SESSION['langue_util'] = 'allemand';
    $_SESSION['provenance'] = $_SERVER['HTTP_REFERER'];
     
    header("Location: ".$_SESSION['provenance']);
    exit();
    ?>
    Ça fonctionne parfaitement ...

  12. #12
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Effectivement ça fonctionne parfaitement ainsi. Merci encore ypcman.
    C'est sans doute la présence de balises HTML avant le header qui posaient problème dans mon code.
    Maintenant, si je modifie (très légèrement) fich_2.php, celui-ci affiche une page blanche et ne retourne de nouveau rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
        session_start();
       	if (!isset([$_SESSION['Existe_en_allemand']]))
    		{
    			$_SESSION['provenance'] = $_SERVER['HTTP_REFERER'];
    			header("Location: ".$_SESSION['provenance']);
    			exit();
    		}
    	else
    		{
    			$_SESSION['langue_util'] = "allemand";
    			header("Location:https://www.google.de");
    			exit();
    		}
    ?>
    Où fais-je une erreur cette fois-ci ?
    Merci d'avance.

  13. #13
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Bon... De toute évidence, ma question n'attire pas les foules

  14. #14
    Membre émérite Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Par défaut
    Il n'y aurait pas des [] en trop ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset([$_SESSION['Existe_en_allemand']])

  15. #15
    Membre éclairé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2007
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2007
    Messages : 485
    Par défaut
    Plus c'est gros et plus je passe à côté.
    Merci beaucoup ypcman.
    Pour info:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($_SESSION['Existe_en_allemand'])

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

Discussions similaires

  1. Retour page appelante après window.print
    Par soeursourire dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 02/08/2018, 14h00
  2. Retour sur page appelante et actualisation de la page
    Par coshibe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 29/01/2015, 08h30
  3. Réponses: 14
    Dernier message: 18/07/2011, 23h54
  4. popup + retour page principale
    Par Mr -M- dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/06/2005, 17h26
  5. [POPUP] rafraichir la page appelante ET aller a une ancre
    Par meufeu dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/11/2004, 12h03

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