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 :

variable de session testée à false alors que true est prévu


Sujet :

Langage PHP

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut variable de session testée à false alors que true est prévu
    Bonjour,

    le titre n'indique pas grand-chose mais à vrai dire, ça fait des heures que je tourne sur le problème sans y voir clair.
    Voici le problème :
    J'ai un formulaire d'authentification qui appelle le fichier authenticate.php. Dans ce fichier, j'interroge une bdd (avec PDO) et si les identifiants sont trouvés, la variable $auth est mise à true, sinon à false. A la fin : $_SESSION['auth']=$auth; puis une redirection :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header ("Location: $_SERVER[HTTP_REFERER]" );
     exit();
    Dans mon test, la redirection se fait sur le fichier index.inc.php et dans ce fichier, on teste la variable de session :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_SESSION['auth']))
    {var_dump($_SESSION['auth']);if ($_SESSION["auth"]){
    etc}}
    Mon souci est qu'avant de faire la redirection, $auth est à true, et dans index.inc.php à false. Je ne sais pas comment debogger cela...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    il me semble avoir déjà vu cela, et, de mémoire (donc pas certain), j'étais passé par la fonction session_write_close() (http://php.net/manual/fr/function.se...rite-close.php)

    Je t'avoue que je ne suis pas du tout sûre de ça, mais ça ne coûte rien d'essayé

  3. #3
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Est-ce que ce ne serait pas un session_start() qui manquerait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    session_start();
    $_SESSION['auth']=false;
    header ("Location: test9143b.php" );
    exit();

    test9143b.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $_SESSION['auth']=true;
    header ("Location: test9143c.php" );
    exit();

    test9143c.php => affiche bool(false)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    session_start();
    if (isset($_SESSION['auth']))
    {
     var_dump($_SESSION['auth']);
    }
    Si je rajoute session_start(); dans test9143b.php alors test9143c.php affiche bool(true)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start();
    $_SESSION['auth']=true;
    header ("Location: test9143c.php" );
    exit();
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Merci pour vos réponses, mais sachez que ce n'est pas résolu.

    A priori, ce n'est pas un problème de session_start manquant, sachant que toutes mes pages ont cette structure (conseil de jreaux62) :
    Code php : 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
     
    <?php 	require_once(dirname(__DIR__).'\_includes\html0-topPHP.php'); // INIT + FONCTIONS et autres config en PHP
    // -----------------------------------------------------------
    // page DEFAUT
    // -----------------------------------------------------------
     	// ICI, on peut mettre des traitements PHP,....  SPECIFIQUE A LA PAGE
    ?>
    <?php 	require_once(dirname(__DIR__).'/_includes/html1-debut.php'); // contient le DEBUT du code HTML, le contenu de <head> SANS la balise </head> ?>
     
    <?php 	// ICI, on peut mettre des scripts, CSS SPECIFIQUE A LA PAGE (donc AVANT la  balise </head>)?>
     
    <?php 	require_once(dirname(__DIR__).'/_includes/html2-milieu.php'); // contient la balise </head>et le DEBUT du <body>, A PARTIR DE la balise </head> ?>
     
    <?php 
     
    	echo "squelette<br/>";
    ?>	
     
    <?php 	require_once(dirname(__DIR__).'/_includes/html3-fin.php'); // contient la FIN du code HTML, jusqu'au </body></html> ?>
    et que html0-topPHP.php contient un session_start. De plus, ma recherche m'a fait trouver cette très vieille discussion dont j'ai tenu compte :

    html0-topPHP.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 	
    error_reporting(E_ALL ^ (E_NOTICE|E_WARNING|E_DEPRECATED));
    header('Content-type: text/html; charset=UTF-8');
    if(!isset($_SESSION['flag'])) {
    session_start();
    $_SESSION['flag'] = true;
    } 
    ...
    ?>

    J'ai aussi rajouté session_write_close en fin de mes scripts authenticate.php et index.inc.php mais le problème reste...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Je mettrais le session_start() avant le header.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  6. #6
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Petite question qui me vient, tu ne passerai pas d'une URL en http://www.domaine.tld vers http://domaine.tld ou inversement ?

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    J'ai inversé le header et le session_start(), mais même problème (détail peut-être important : le problème existe avec Firefox mais pas avec Internet Explorer 11, ni avec Google Chrome).

    En fait, il ne s'agit pas d'internet mais d'intranet, et la redirection me fait passer de http://adresse_IP/eis2/page/authenticate.php à http://adresse_IP/eis2/page/index.inc.php
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Les cookies sont bien activées sur Firefox ?

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Je n'aurais pas pensé aux cookies mais la réponse est oui...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    J'avoue être un peu perdu car si je teste ton script, badaze, au post #3, ça m'affiche bien true alors que le mien affiche false (avec Firefox uniquement).

    J'essaie de donner mon code.

    1- authentification (authenticate.php) :
    Code php : 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
    33
    34
    35
    <?php // en tout début de fichier (RIEN AVANT)	
    if(!isset($_SESSION['flag'])) {
    		session_start();
    		$_SESSION['flag'] = true;
    		}
    ...
    function authentification()
    { 
    global $bdd;
     
    		$auth=false;
     
    		$sql = 'select * from `users`';
     
    		$qid = $bdd->prepare($sql);
    		$qid->execute();
    		while ($row=$qid->fetch(PDO::FETCH_ASSOC) ) {
    				$usr = $row['user']; 
    				$password = $row['password'];  
    				if (($usr == $_POST['login2']) && ($password == $_POST['pwd2'])) {
    					$auth = true;
     
    					$_SESSION['user']=$usr;
    					$_SESSION['pass']=$password;						
    				}
    		  }
    	echo "auth=".$auth."debug_authenticate l.27<br/>";
    	$_SESSION['auth']=$auth;
     
     return $auth;
    }
     $auth=authentification();
     header ("Location: $_SERVER[HTTP_REFERER]" );
     exit();
     session_write_close();

    2-dans mon test $_SERVER[HTTP_REFERER] vaut http://.../index.inc.php

    index.inc.php :

    Code php : 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 	
    if(!isset($_SESSION['flag'])) {
    session_start();
    $_SESSION['flag'] = true;
    }
    ...
    echo "index_inc 7 _SESSION['auth']=".$_SESSION['auth']."<br/>" ;
     
    	if (isset($_SESSION['auth']))
    		{var_dump($_SESSION['auth']);
                      if ($_SESSION['auth'])
    	          {
    	           ...
    	          }
    		 else echo "15 index_inc pas auth<br/>";}
    Le echo dans authenticate (ligne 27) n'est visible que si je commente la redirection mais mon test montre que c'est bon.

    Est-ce que quelqu'un y voit clair ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #11
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Dans le code ci-dessous si 'flag' est défini session_start() n'est pas appelé. Essaie en le mettant avant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php // en tout début de fichier (RIEN AVANT)	
    if(!isset($_SESSION['flag'])) {
    		session_start();
    		$_SESSION['flag'] = true;
    		}
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Je viens d'essayer, mais problème non résolu
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  13. #13
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu n'as que ces deux fichiers là ?

    Une chose. Tu devrais paramétrer ta requête SQL. Si tu as 3 utilisateurs ça peut aller mais si tu en as des milliers c'est pas terrible.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Il y a d'autres fichiers (indispensables : inits à faire et si nécessaire, affichage du formulaire d'authentification) mais j'arrête pour ce soir (crevé). Donc la suite, demain (faut-il les détails de ces fichiers ?)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour Laurent,

    c'est gentil de citer mon nom, mais évite de le faire quand tu BRICOLES le code derrière !!

    Je ne t'ai jamais dit de le mettre dans une condition :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php // en tout début de fichier (RIEN AVANT)	
    session_start(); // PREMIERE INSTRUCTION DU CODE !!!
    // ....

    LA SEULE CONDITION ACCEPTABLE EST CELLE-CI :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php if( session_id()=='' ){ session_start(); } // on ouvre la SESSION SI CE N'EST PAS DEJA FAIT
    // ....

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    OK, j'ai supprimé le test et je vais donner plus de code car dans les lignes 6 de authenticate.php et index.inc.php du post #10 les ... sont des includes.
    Pour l'instant, le problème reste : la variable de session $_SESSION['auth'] vaut true avec IE11 et Goocle Chrome mais false avec Firefox.

    authenticate.php :

    Code php : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php // en tout début de fichier (RIEN AVANT)session_start();
     
     	require_once(dirname(__DIR__).'\_includes\html0-topPHP.php'); // INIT + FONCTIONS et autres config en PHP
     
     	require_once(dirname(__DIR__).'/_includes/html1-debut.php'); // contient le DEBUT du code HTML, le contenu de <head> SANS la balise </head>
     
    	require_once(dirname(__DIR__).'/_includes/html2-milieu.php'); // contient la balise </head>et le DEBUT du <body>, A PARTIR DE la balise </head>
     
     
     	function authentification()
    { echo "11 authenticate<br/>";
    global $bdd;
     
    		$auth=false;
     
    		$sql = 'select * from `users`';
     
    		$qid = $bdd->prepare($sql);
    		$qid->execute();
    		while ($row=$qid->fetch(PDO::FETCH_ASSOC) ) {
    				$usr = $row['user']; 
    				$password = $row['password'];  echo "authenticate 20 usr=".$usr."/pwd=".$password."<br/>";
    				if (($usr == $_POST['login2']) && ($password == $_POST['pwd2'])) {
    					$auth = true;
     
    					$_SESSION['user']=$usr;
    					$_SESSION['pass']=$password;
     
    				}
    		  }
    	echo "auth=".$auth."debug_authenticate l.31<br/>";
    	$_SESSION['auth']=$auth;
     
     return $auth;
     
    }
     $auth=authentification(); echo "37 authenticate _SERVER[HTTP_REFERER]=".$_SERVER[HTTP_REFERER]."<br/>";
     header ("Location: $_SERVER[HTTP_REFERER]" );
     exit(); 
     
    require_once(dirname(__DIR__).'/_includes/html3-fin.php'); // contient la FIN du code HTML, jusqu'au </body></html> 
     session_write_close();

    index.inc.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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?php 
    echo "index.inc.php 2";
    require_once(dirname(__DIR__).'\_includes\html0-topPHP.php'); // INIT + FONCTIONS et autres config en PHP
    // -----------------------------------------------------------
    // page DEFAUT
    // -----------------------------------------------------------
     	// ICI, on peut mettre des traitements PHP,....  SPECIFIQUE A LA PAGE
    ?>
    <?php 	require_once(dirname(__DIR__).'/_includes/html1-debut.php'); // contient le DEBUT du code HTML, le contenu de <head> SANS la balise </head> ?>
     
    <?php 	// ICI, on peut mettre des scripts, CSS SPECIFIQUE A LA PAGE (donc AVANT la  balise </head>)
     
    	require_once(dirname(__DIR__).'/_includes/html2-milieu.php'); // contient la balise </head>et le DEBUT du <body>, A PARTIR DE la balise </head> 
     
     
     
    echo "index_inc 17 _SESSION['auth']=".$_SESSION['auth']."<br/>" ;
     
    	if (isset($_SESSION['auth']))
    		{var_dump($_SESSION['auth']);if ($_SESSION['auth'])
    	{echo "index_inc 21<br/>" ;
     
    	$nompage="test";
    	?>	<table class="bold table_border_no_cell background-colorlightblue width-normal">
    ...		
    	</table>
     
     
     
    	<?php
    	}
    		else echo "32 index_inc pas auth<br/>";}
    ?>	
     
    <?php 	require_once(dirname(__DIR__).'/_includes/html3-fin.php'); // contient la FIN du code HTML, jusqu'au </body></html>
     
     ?>
    html0-topPHP.php :
    Code php : 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
    <?php 
    session_start();
     
    error_reporting(E_ALL ^ (E_NOTICE|E_WARNING|E_DEPRECATED));
     
     
    header('Content-type: text/html; charset=UTF-8');
     
    include_once dirname(__DIR__)."\config\config.php"; 
    include_once dirname(__DIR__)."\connect_mysql.php";
    include_once dirname(__DIR__)."\connect_mysql_planning.php";
     
    /* language management */ 
    if ( empty($_SESSION['lang']) ) $_SESSION['lang'] = 'fr'; // par défaut
    $lang = (isset($_GET['lang'])) ? trim($_GET['lang']) : $_SESSION['lang'];
    if ( !empty($lang) ) $_SESSION['lang'] = $lang; // to put in SESSION
     
    include_once dirname(__DIR__)."\language.".$_SESSION['lang'].".inc.php";
    ?>

    html1-debut.php :
    Code php : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <html>
    <head>
       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
       <meta http-equiv="X-UA-Compatible" content="IE=9" />
       <title> EIS System Support Site</title>
        <link rel="stylesheet" href="http://fontawesome.io/assets/font-awesome/css/font-awesome.css"> 
       <link href="<?php echo SITE_URL_HTTP; ?>/css/style.css" rel="stylesheet"/>
       <link href="<?php echo SITE_URL_HTTP; ?>/css/style-menu2.css" rel="stylesheet"/>
     
       <link href="<?php echo SITE_URL_HTTP; ?>/css/style-menu_images.css" rel="stylesheet"/>  
       <!-- css for authentification (html2-milieu.php) -->
     
     <!--- line for the planning -->
       <link rel="stylesheet" type="text/css" href="<?php echo SITE_URL_HTTP; ?>/calendar-pdo/stylesheets/calendar.css" media="screen" />
          <?php //if (isset($_GET['eff'])) { ?>
       <!--<script>
       jseff=document.getElementsByClassName('cacher');
       jseff.style.display=none;
       </script>-->
       <?php if (isset($_GET['eff'])) { ?>
    <style type="text/css">.cacher { display: none; }
     
    </style>
     <?php 
    $_SESSION['eff']=1;
    }?>
     
    <!-- partie pour add_event.php -->
    	<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
    	<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
    	<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    	<link rel="stylesheet" href="/resources/demos/style.css">
    	<!--<link rel="stylesheet" href="../../css/style.css">-->
    	<script>
    $(function() {
    	$('#datepickerd').datepicker({ 
    		dateFormat: 'dd-mm-yy', firstDay:1, minDate: new Date(),
    		onSelect: function() {
    			if( $("#datepickerf").val() == '' )
    			{
    				$('#datepickerf').val( $(this).val() );
    			}
    		},
     
          changeMonth: true,
     
          changeYear: true		
    	});
     
    	$('#datepickerf').datepicker({ 
    		dateFormat: 'dd-mm-yy', firstDay:1, minDate: new Date(),
     
          changeMonth: true,
     
          changeYear: true
    	});
     
    	$('#datepickeros').datepicker({ 
    		dateFormat: 'dd-mm-yy', firstDay:1, minDate: new Date(),
     
          changeMonth: true,
     
          changeYear: true
    	});
    });
    	</script>

    html2-milieu.php :
    Code php : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    </head>
    <body>
    <!-- debut body html2-milieu 3 -->
    <?php
    /* fcts for SSO are in fct_SESA.php. $_SESSION['user'] is used in header.inc.php and is supposed to contain the SESA.
      test about empty($SESA) if for the browser Firefox : for this browser, SSO doesn't work.
    */
    include "fct_SESA.php";
    $_SESSION["auth"]=false;
    $_SESSION['user']=$SESA=connexionWindows(); echo "10 html2-milieu SESA=".$SESA."<br/>";
    if ((isset($SESA))&&!(empty($SESA))) {
    		$_SESSION["auth"]=true;
    		$_usr=$_pwd=$SESA;
    		if ($SESA=="...") {
    			$_usr="...";
    			$_pwd="...";
    		}
    }
     
    if ( ! $_SESSION["auth"]) 
    	{
    		$_SESSION['eff']=0; //this initialization is placed here because it has to be done only at the beginning
    		?>
     
     
    		<main>
    		  <section><?php echo "27 html2-milieu ";echo SITE_URL_HTTP;?>/page/authenticate.php
    			<form id="authform" action="<?php echo SITE_URL_HTTP;?>/page/authenticate.php" method="post">
    			<p>
    			<a href="http://www.schneider-electric.com/b2b/en/campaign/life-is-on/life-is-on.jsp" target="_blank">
    			<img src="<?php echo SITE_URL_HTTP; ?>/images/logo/LifeIsOn1x30_transparent.jpg" alt=''/></a><span class="dblock"></span>
    			<?php echo $str[323]; ?>  <h2><i class="fa fa-user-o" aria-hidden="true"></i>
    		 LOGIN</h2>
    			  <p>
    				<label for="login2">Username</label>
    				<input id="login2" type="text" size="30" value="" name="login2" />
    			  </p>
    			  <p>
    				<label for="pwd2">Password</label>
    				<input class="btsubmit" id="pwd2" type="password" size="30" value="" name="pwd2" />
    			  </p>
    			  <p>
    				<input type="submit" value="Submit" name="goAuth" />
    			  </p>
    			</form>
    		  </section>
     
    		  <br />
     
    		</main>
     
     
    	<?php	
    	}
     
    else { /* if $_SESSION["auth"] is true --*/
     
    	include dirname(__DIR__)."\\language.".$lang.".inc.php"; 
    	include dirname(__DIR__)."\\header.inc.php";
    	include dirname(__DIR__)."\\menupage.php";
     ?>
    <?php }	// ICI, ON MET LE CONTENU SPECIFIQUE A LA PAGE (HTML, PHP,...) ?>

    html3-fin.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    if (  $_SESSION["auth"])
    	include dirname(__DIR__)."\\footer.inc.php";
    if ((isset($_SERVER['SERVER_NAME'])) && ($_SERVER['SERVER_NAME'] == 'localhost' ))
    	{
    ?>
    	<br/><br/><a href="<?php echo SITE_URL_HTTP;?>/annul_auth.php"><?php echo $str[118];?></a>
    <?php } ?>	
    </body></html>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    et ce mic-mac, c'est quoi ? :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    include "fct_SESA.php";
    $_SESSION["auth"]=false;
    $_SESSION['user']=$SESA=connexionWindows(); echo "10 html2-milieu SESA=".$SESA."<br/>";
    if ((isset($SESA))&&!(empty($SESA))) {
    		$_SESSION["auth"]=true;
    		$_usr=$_pwd=$SESA;
    		if ($SESA=="...") {
    			$_usr="...";
    			$_pwd="...";
    		}
    }
    $auth=authentification(); arrive plus tard dans le code...
    C'est QUOI ce BINZZZZZz ???


    Le créateur est plus monstrueux que sa créature... Dr FrankensteinSc !

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Le "mic-mac", c'est une tentative de mettre du SSO (single Sign On). L'instruction $SESA=connexionWindows(); est censée retourner l'identifiant (username) Windows (chez Schneider, c'est le code SESA d'où le nom de la variable) et justement elle fonctionne bien avec IE ou Chrome mais pas avec Firefox (sa valeur de retour est vide). Donc avec IE ou Chrome $_SESSION['auth'] est bien mise à true mais pas avec Firefox. Dans ce dernier cas, comme montré au post #16 (code de html2-milieu), on affiche un formulaire d'authentification dont l'action est authenticate.php. Dans cette action, on a justement l'instruction $auth=authentification(); et la fonction authentification compare les identifiants renseignés et s'ils sont trouvés dans la table MySQL qui contient tous les identifiants, $auth puis $_SESSION['auth'] sont mises à true.

    Pour moi, il n'y a pas de mic-mac.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  19. #19
    Invité
    Invité(e)
    Par défaut
    RELIS ce que TU viens d'écrire.
    Ca ne te saute pas aux yeux ?

    L'instruction $SESA=connexionWindows(); ......... mais pas avec Firefox (sa valeur de retour est vide).
    Il semble clair que le problème n'a RIEN à voir avec les SESSION, mais avec TON code : $SESA=connexionWindows(); * !!



    * Dont on ne sait rien, comme d'habitude...

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Re

    Si ça me sautait aux yeux, cette discussion n'existerait pas

    Le code de connexionWindows est donné dans cette discussion : https://www.developpez.net/forums/d1...ows-futur-sso/ au post 4 et je n'ai rien changé.

    Je pense en effet que le problème est dans mon code, mais je ne vois pas où
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. File.exists() est false, alors que je m'attends à ce qu'elle soit true
    Par domxaline dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 19/01/2014, 13h20
  2. [Débutant]Test lancé alors que je ne veux pas
    Par youkoun dans le forum Maven
    Réponses: 2
    Dernier message: 20/12/2010, 11h55
  3. Réponses: 4
    Dernier message: 29/05/2010, 00h22
  4. Réponses: 4
    Dernier message: 17/09/2008, 13h05
  5. Réponses: 7
    Dernier message: 30/03/2007, 14h58

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