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 :

Perte de $_SESSION lors d'une redirection


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut Perte de $_SESSION lors d'une redirection
    Bonjour,

    D'un prog de controle de formulaire j'appelle une fonction redirect

    ____________________
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     if($reg==0)    
           redirect('modregint.php');
     
          	        else                         
               redirect('devoirseleve.php');  
         exit;
     
     
     
    	}   
     
     ?>
    Source de la fonction redirect :

    _______________________
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function redirect($filename) {
        if (!headers_sent())
            header('Location: '.$filename);
        else {
            echo '<script type="text/javascript">';
            echo 'window.location.href="'.$filename.'";';
            echo '</script>';
            echo '<noscript>';
            echo '<meta http-equiv="refresh" content="0;url='.$filename.'" />';
            echo '</noscript>';
        }
    }
    La redirection s'effectue sans problème vers devoirseleve.php dont voici le début :

    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
     
    <?php   
          	session_start(); 
    header('Content-Type: text/html; charset=UTF-8');
     
    ?>
    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" style="height: 241px;">
    		<?php
        $bdd  = $_SESSION['BDD'];       
        $serveur   = $_SESSION['serveur'];
        $pass_bdd  = $_SESSION['pass_bdd'];
        $ut_bd   = $_SESSION['ut_bd'];  
         $conn = mysqli_connect($serveur, $ut_bd, $pass_bdd, $bdd);  		 
        if (mysqli_connect_errno())      
        {
        echo "La connexion au serveur MySQL n'a pas abouti : " . mysqli_connect_error();
        }

    Et lors de la redirection se perd la partie de $_SESSION créée dans le prog de controle de formulaire, (pas ce qui a été crée avant)
    Et ce sur 1&1 en version PHP > 7.0
    Cela fonctionne avec les versions PHP précédentes, ça commence à ne plus aller en PHP 7.1

    A noter que dans mon localhost créé par WAMP et en PHP 7.2.18 cela fonctionne très bien aussi

    Bref au secours je ne comprends rien

    Merci d'avance à qui peut m'aider!

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        $bdd  = $_SESSION['BDD'];       
        $serveur   = $_SESSION['serveur'];
        $pass_bdd  = $_SESSION['pass_bdd'];
        $ut_bd   = $_SESSION['ut_bd'];
    C'est une TRÈS MAUVAISE pratique !!
    On ne met JAMAIS des données sensibles (mot de passe,...) dans des variable $_POST, $_GET ou $_SESSION !


    ON crée un fichier connect.php, dans lequel on met tout le code de connexion.
    Les paramètres de connexion à la BDD sont généralement définis UNE ET UNE SEULE FOIS par des CONSTANTES (et/ou dans un fichier séparé et protégé).

    Tu peux t'inspirer (et adapter la syntaxe PDO -> mysqli *) cette méthodologie : PDO une soupe et au lit !
    * Ou mieux : passer à PDO !
    Dernière modification par rawsrc ; 14/10/2019 à 00h23.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    Ok je modifierai ça. merci pour le conseil
    Mais ça ne répond pas du tout à ma question.
    C'est une autre partie de $_SESSION qui est concernée

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Et lors de la redirection se perd la partie de $_SESSION créée dans le prog de controle de formulaire,
    Bonjour, tu peux nous montrer tout ce qui concerne ce script-là, justement ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    Ok, comme il est assez petit, je le mets en entier.
    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
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    <?php
     session_start();
    $msg = ' ' ;
     $id = $_POST['Id'];
     $verif_id = strtolower($id); 
    $mp = $_POST['mp']; 
     $verif_mp = strtolower($mp); 
       include 'fonctions.php';     
     
       // Si le site est fermé
       if ($_SESSION['siteferme'] == "oui") {
     
     
       if ($verif_id != "pandu" OR $mp !="papa"){
       redirect('index.php?js=1'); 
       exit ;                                   }  
                                            }
         var_dump($_SESSION) ;
     
      $bdd  = $_SESSION['BDD'];
        $serveur   = $_SESSION['serveur'];
        $pass_bdd  = $_SESSION['pass_bdd'];
        $ut_bd   = $_SESSION['ut_bd']; 
         $conn = mysqli_connect($serveur, $ut_bd, $pass_bdd, $bdd);
        if (mysqli_connect_errno())
        {
        echo "La connexion au serveur MySQL n'a pas abouti : " . mysqli_connect_error();
        }     
     
     
     
     
     
    $sql = "SELECT id_eleve,pass_eleve,Date_der_connect,id_prof,reg_inter,classe_eleve,directeur FROM  eleves WHERE  id_eleve  ='$verif_id'" ;
    $result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
    $data = mysqli_fetch_assoc($result);      $n = mysqli_num_rows($result);
    		$_SESSION['id_prof']=$data['id_prof'];
        $idprof = " ";
    		$idprof= $data['id_prof'];
    		$reg= $data['reg_inter'];
    		 		 $_SESSION['directeur']=$data['directeur'];
    		$_SESSION['classe_eleve']=$data['classe_eleve'];  
    if(empty($n))
    {$msg ='Identifiant inconnu';}
    elseif ($verif_mp != $data['pass_eleve'])
    {$msg ='Mot de passe incorrect';}
     
     
        // Controles IP
          if( $msg == ' ') {
            $dotted = get_ip();
            $ip = IPAddress2IPNumber($dotted);        $_SESSION['ip']=   $ip;
             $sql = "SELECT * FROM  connect_ip WHERE  id_eleve  ='$verif_id' AND adresse_ip=$ip" ;
    $result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
    $data = mysqli_fetch_assoc($result); $n = mysqli_num_rows($result); 
            if($n==0){  // Nouvelle IP
                      	$sql = "INSERT INTO connect_ip (id_eleve ,adresse_ip)
    VALUES (  '$verif_id', 	$ip)" ; 
       	$result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
                                    // Regarde s'il faut éjecter le profil à partir de la nouvelle ip 
                                   // A faire
     
                      }            else { $fin=$data['Jours_exclusion'];
                                   if (time()<$fin)$msg=htmlentities('Connexion non autorisée.');
     
                                        }
     
                            }   
         // MAJ DER CONNECT   
         		$date = date("ymd");
    $sql = "SELECT * FROM  eleves WHERE  id_eleve  ='$verif_id'" ;
    $result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
    $dat = mysqli_fetch_assoc($result); 
         		$sql="UPDATE eleves SET Date_der_connect = $date WHERE id_eleve ='$verif_id'";
    	$result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error()); 
           mysqli_close();
           $_SESSION['message'] = ' ';
     
     if( $msg != ' ') {    
    	$_SESSION['message'] = $msg;  
    redirect('index.php?js=1');
    }
    	else {
           visites(1);		     
    		$_SESSION['id_eleve'] =$verif_id;
    $_SESSION['id_prof']=$idprof;
    $_SESSION['m_p']=$verif_mp;
    		if($idprof != '')
    		{  
    		$s = $idprof ;
     
    			  		}
    		else
    		{ 
     
     		$s = $verif_id ;
        }                      
        $c = $s[0];
        $c =  strtoupper($c) ;
         $s[0]=$c ;
          			$msg= 'Bonjour '.$s.' !' ;
        // Message de bienvenue
    				$_SESSION['mesage'] = $msg;
    		    // Ecriture dans le log général
            include 'datetableau.php';
            $repertoire = dirname(__FILE__)."/Devoirs/";         
        		$s2 = "log.txt";
        		if(empty($idprof))
        		$s="Le ".$data." connexion de ".$verif_id."\n";
        		else
        		$s="Le ".$data." connexion de ".$verif_id." alias ".$idprof."\n";    		
    $bavard        = $repertoire.$s2 ;
    $fp = fopen($bavard, "a+");
    fwrite($fp,$s);
    fclose($fp);                   
    		        // Redirection
     
     
          if($reg==0)    
           redirect('modregint.php');
     
          	        else                         
               redirect('devoirseleve.php');  
         exit;
     
     
     
    	}   
     
     ?>

    Merci pour votre aide

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 710
    Par défaut
    le soucis vient peut-être de la fonction "redirect".
    après l'appel à "header" vous devriez rajouter "exit();" sinon le code continue d'être exécuté et peut-être que ce code modifie les données de session.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    Citation Envoyé par mathieu Voir le message
    le soucis vient peut-être de la fonction "redirect".
    après l'appel à "header" vous devriez rajouter "exit();" sinon le code continue d'être exécuté et peut-être que ce code modifie les données de session.
    Non, ça ne change rien, de plus dans "redirect", on ne passe pas par "header" mais par le javascript.
    En fait j'ai mis des exit() aussi après les "redirect", mais bon, pas de modif

  8. #8
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Rebonjour Pandu...
    Indenter, indenter, indenter...
    Je n'ai fait que cela...
    Ensuite, ce soir, je prendrai le temps de relire ton code.
    Mais je suis sûre que toi aussi tu y verras plus clair si tu lis un code indenté.
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    <?php
    session_start();
    include 'fonctions.php';  
    if(empty(trim($_POST['Id'])) || empty(trim($_POST['mp'])) ){
      header('location:formulaire.php');exit;
    }
    $msg = ' ' ;
    $id = $_POST['Id'];
    $verif_id = strtolower($id); 
    $verif_mp = strtolower($mp); 
    $mp = password_hash($verif_mp ); 
     
    // Si le site est fermé
    if ($_SESSION['siteferme'] == "oui") {
      if ( ! ($verif_id == "pandu" && $verif_mp =="papa") ){
        redirect('index.php?js=1'); 
        exit ;
      } 
    }
    //var_dump($_SESSION) ;    
    $bdd  = $_SESSION['BDD'];
    $serveur   = $_SESSION['serveur'];
    $pass_bdd  = $_SESSION['pass_bdd']);
    $ut_bd   = $_SESSION['ut_bd']; 
    $conn = mysqli_connect($serveur, $ut_bd, $pass_bdd, $bdd);
    if (mysqli_connect_errno())
    {
      echo "La connexion au serveur MySQL n'a pas abouti : " . mysqli_connect_error();exit;
    }     
    $sql = "SELECT id_eleve,pass_eleve,Date_der_connect,id_prof,reg_inter,classe_eleve,directeur FROM  eleves WHERE  id_eleve  ='$verif_id'" ;
    $result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
    $data = mysqli_fetch_assoc($result);      $n = mysqli_num_rows($result);
    $_SESSION['id_prof']=$data['id_prof'];
    $idprof = " ";
    $idprof= $data['id_prof'];
    $reg= $data['reg_inter'];
    $_SESSION['directeur']=$data['directeur'];
    $_SESSION['classe_eleve']=$data['classe_eleve'];  
    if(empty($n)){$msg ='Identifiant inconnu';}elseif ($verif_mp != $data['pass_eleve']){$msg ='Mot de passe incorrect';}
    // Controles IP
    if( $msg == ' ') {
      $dotted = get_ip();
      $ip = IPAddress2IPNumber($dotted);        $_SESSION['ip']=   $ip;
      $sql = "SELECT * FROM  connect_ip WHERE  id_eleve  ='$verif_id' AND adresse_ip=$ip" ;
      $result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
      $data = mysqli_fetch_assoc($result); $n = mysqli_num_rows($result); 
      if($n==0){  // Nouvelle IP
        $sql = "INSERT INTO connect_ip (id_eleve ,adresse_ip)
        VALUES (  '$verif_id', 	$ip)" ; 
        $result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
        // Regarde s'il faut éjecter le profil à partir de la nouvelle ip 
        // A faire
      }
      else {
        $fin=$data['Jours_exclusion'];
        if (time()<$fin)$msg=htmlentities('Connexion non autorisée.');
        // MAJ DER CONNECT   
        $date = date("ymd");
        $sql = "SELECT * FROM  eleves WHERE  id_eleve  ='$verif_id'" ;
        $result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error());
        $dat = mysqli_fetch_assoc($result); 
        $sql="UPDATE eleves SET Date_der_connect = $date WHERE id_eleve ='$verif_id'";
        $result = mysqli_query($conn,$sql)or die('Erreur SQL !<br>'.$sql.'<br>'.mysqli_error()); 
        mysqli_close();
        $_SESSION['message'] = ' ';
        if( $msg != ' ') {    
          $_SESSION['message'] = $msg;  
          redirect('index.php?js=1');
        }
        else {
          visites(1);		     
          $_SESSION['id_eleve'] =$verif_id;
          $_SESSION['id_prof']=$idprof;
          $_SESSION['m_p']=$verif_mp;
          if($idprof != '')
          {  
            $s = $idprof ;
          }
          else
          {
            $s = $verif_id ;
          }                      
          $c = $s[0];
          $c =  strtoupper($c) ;
          $s[0]=$c ;
          $msg= 'Bonjour '.$s.' !' ;
          // Message de bienvenue
          $_SESSION['mesage'] = $msg;
          // Ecriture dans le log général
          include 'datetableau.php';
          $repertoire = dirname(__FILE__)."/Devoirs/";         
          $s2 = "log.txt";
          if(empty($idprof))
            $s="Le ".$data." connexion de ".$verif_id."\n";
          else
            $s="Le ".$data." connexion de ".$verif_id." alias ".$idprof."\n";    		
          $bavard= $repertoire.$s2 ;
          $fp = fopen($bavard, "a+");
          fwrite($fp,$s);
          fclose($fp);                   
          // Redirection
          if($reg==0)redirect('modregint.php');else redirect('devoirseleve.php');exit;
       }
    }

    PS, bien entendu la remarque de Jreaux reste cruciale, mais on verra après, disons.
    Autre chose, rawsrc m'a appris qu'il ne fallait jamais fermer la balise php d'un script qui n'est pas directement suivi du html. Ca peut être la source d'effets de bords imprévisibles.
    Donc teste ça... Avec un peu de chance...

    Jreaux ? Il n'y a plus la coloration syntaxique ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  9. #9
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    houlà les jeunes,

    où vous avez vu que sur un mot de passe on applique un trim() suivi d'une mise en minuscules avec strtolower() !

    Un mot de passe, reste tel quel, on y fait aucun traitement, aucune transformation, rien, que tchi, nada, que dalle.

    @Dendrite
    Le moteur de coloration syntaxique a en effet quelques soucis depuis quelques temps (code > 100 lignes), Anomaly essaie de le soigner.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Dendrite Voir le message
    Jreaux ? Il n'y a plus la coloration syntaxique ?
    @Dendrite
    [édit] (voir : explication de rawsrc)
    Dernière modification par Invité ; 24/10/2019 à 20h41.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bon.
    Du coup, je me suis un peu penché sur le code...

    2 remarques :

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $_SESSION['message'] = ' ';
    ...
          $_SESSION['mesage'] = $msg;
    message / mesage : ceci explique peut-être cela...

    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $sql = "SELECT * FROM  eleves WHERE  id_eleve  ='$verif_id'" ;
    ...
        $sql="UPDATE eleves SET Date_der_connect = $date WHERE id_eleve ='$verif_id'";
    AUCUNE requête n'est sécurisée, ni préparée

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    PS, bien entendu la remarque de Jreaux reste cruciale, mais on verra après, disons.
    Autre chose, rawsrc m'a appris qu'il ne fallait jamais fermer la balise php d'un script qui n'est pas directement suivi du html. Ca peut être la source d'effets de bords imprévisibles.
    Donc teste ça... Avec un peu de chance...


    Pas de chance, ça change rien

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    message / mesage : ceci explique peut-être cela...


    Non, pas de modif avec ça

  14. #14
    Invité
    Invité(e)
    Par défaut
    On ne sait toujours pas qu'elle(s) variable(s) de $_SESSION tu perds...

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $sql = "SELECT * FROM  eleves WHERE  id_eleve  ='$verif_id'" ;
    ...
        $sql="UPDATE eleves SET Date_der_connect = $date WHERE id_eleve ='$verif_id'";
    AUCUNE requête n'est sécurisée, ni préparée

    Je ne savais pas qu'il fallait préparer des requêtes

    Bon j'explique pourquoi ma prog peut paraître bizarre. Je suis un ancien chef de projet info spécial AS400, avec auparavant beaucoup de prog scientifique (FORTRAN, C, C++ etc..)

    J'ai arrêté l'info pendant plus de 20 ans, mais la curiosité m'a poussé à regarder la prog internet. J'ai donc commencé à créer cette application par jeu, en apprenant tout seul et en même temps HTML, PHP, Javascript, Ajax, Json. J'ai bien ri.
    Mais finalement je vais m'en servir de cette appli, mais je dois la terminer.
    Donc merci d'être un peu tolérant
    Je suis bon élève normalement et je vous écoute avec bcp d'attention.

    Merci

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    On ne sait toujours pas qu'elle(s) variable(s) de $_SESSION tu perds...

    PHP 7.1 chez 1&1 :

    array(7) { ["BDD"]=> string(11) "db562777799" ["serveur"]=> string(24) "db562777799.db.1and1.com" ["pass_bdd"]=> string(9) "Emmanue" ["ut_bd"]=> string(12) "dbo562338888" ["siteferme"]=> string(3) "non" ["message"]=> string(1) " " ["devoirseleve"]=> string(5) "30000" }

    PHP 7.0 chez 1&1 et PHP 7.2 chez moi :


    array(13) { ["BDD"]=> string(11) "db562777799" ["serveur"]=> string(24) "db562777799.db.1and1.com" ["pass_bdd"]=> string(9) "Emmanue" ["ut_bd"]=> string(12) "dbo562338888" ["siteferme"]=> string(3) "non" ["message"]=> string(1) " " ["id_prof"]=> string(7) "Laplace" ["directeur"]=> string(1) "1" ["classe_eleve"]=> string(2) "TS" ["ip"]=> float(2779376905) ["id_eleve"]=> string(5) "pand" ["m_p"]=> string(4) "papa" ["devoirseleve"]=> string(5) "30000" }

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        $bdd  = $_SESSION['BDD'];       
        $serveur   = $_SESSION['serveur'];
        $pass_bdd  = $_SESSION['pass_bdd'];
        $ut_bd   = $_SESSION['ut_bd'];
    C'est une TRÈS MAUVAISE pratique !!
    On ne met JAMAIS des données sensibles (mot de passe,...) dans des variable $_POST, $_GET ou $_SESSION !


    ON crée un fichier connect.php, dans lequel on met tout le code de connexion.
    Les paramètres de connexion à la BDD sont généralement définis UNE ET UNE SEULE FOIS par des CONSTANTES (et/ou dans un fichier séparé et protégé).

    Tu peux t'inspirer (et adapter la syntaxe PDO -> mysqli *) cette méthodologie : PDO une soupe et au lit !
    * Ou mieux : passer à PDO !
    C'est bon, j'ai changé partout mais ça ne change rien au pb de $_SESSION

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

    Citation Envoyé par pandu Voir le message
    C'est bon, j'ai changé partout...
    Super...

    Si tu ne montres pas ton code, ni les TESTS que tu as fais (pour chercher l'origine de ton souci), on ne peut que faire des SUPPOSITIONS.
    Dernière modification par Invité ; 25/10/2019 à 14h15.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 54
    Par défaut
    Là tout le code a été donné. Les tests sont des var_dump de $_SESSIOn
    avant redirect(..) tout est là, après (la ligne après) une partie disparaît au changement de page, mais seulement en PHP 7.1 chez 1&1.
    Eux disent que c mon code mais je commence à avoir des doutes ..

  20. #20
    Invité
    Invité(e)
    Par défaut
    Le code que tu montres ne suffit pas.
    Et vu que tu ne montres pas celui après corrections...
    Pas mieux.

Discussions similaires

  1. Erreur lors d'une redirection
    Par cels dans le forum Langage
    Réponses: 3
    Dernier message: 30/10/2006, 14h39
  2. Message Erreur lors d'une redirection
    Par TOPGUN89 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 28/08/2006, 16h00
  3. Affichage d'une page dans un <DIV> lors d'une redirection
    Par zoidy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/06/2006, 17h57
  4. [Sécurité] problème lors d'une redirection
    Par sam01 dans le forum Langage
    Réponses: 4
    Dernier message: 11/04/2006, 00h01
  5. [MySQL] Perte d'information lors d'une requête de visualisation
    Par niccco dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 21/10/2005, 14h46

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