Bonjour,

Voila je rencontre un petit problème avec mon code.
c'est simple, j'ai codé mon code pour que des informations tels que login, nom et prénom rentrent dans la base de donnée. je peux créer un utilisateur, mais lors de la redirection vers sa page de profil, impossible d'afficher les $_SESSION

ma page de profil:

<?php
session_start();
require_once('InfoTable.php');

$bdd = new PDO('mysql:host=localhost;dbname=base test', 'root', ''); 
try { 
$bdd = new PDO('mysql:host=localhost;dbname=base test', 'root', '');
 } 
catch (Exception $e) 
{        
die('Erreur : ' . $e->getMessage()); }

/* Variable existe, (et sup à 0 car pas variable à 0) si oui alors afficher tout sinon on affiche rien */
if(isset($_GET['id_user']) AND $_GET['id_user']>0)
{

/* $getid= convertir en nombre si utilisateur fait n'imp*/
    $getid = intval($_GET['id_user']);
/* requete péparer, sélectionner info de user*/
    $req = $bdd->prepare('SELECT * FROM membres WHERE id_user='.$_GET['id_user']);
/* requete, */
    $req->execute(array($getid));
    $utilisateur = $req->fetch();
?>

<html>
<head>
<title> Profil </title>
</head>
<body>
    <div align="center">
        <h1> Profil </h2>
        <br /> <br />
        <h2> Descripition: </h2>
        Nom d'utilisateur: <?php echo $utilisateur['login']; ?>
        <br />
        Email: <?php echo $utilisateur['mail']; ?>
        <br />
        Age:
        <br />
        Prenom: <?php echo $utilisateur['prenom']; ?>
        <br />
        Nom: <?php echo $utilisateur['nom']; ?>
        <br />
        <?php
        if(isset($_SESSION['id_user']) AND $utilisateur['id_user'] == $_SESSION['id_user'])
            { ?>
            <a href='personaliser_profil.php'> Personaliser mon profil </a>
            <a href='deconnexion.php'> Se déconnecter </a>
            <?php
            } ?>

    </div>
</body>
</html>

<?php
}
else
{header("Location:ConnexionDepart.php?erreur=intru"); // redirection en cas d'echec
exit;
} ?>

ma page de connexion:

<?php
require_once('InfoTable.php');

session_start(); // début de session

if (isset($_POST['login'])){ // execution apres envoi du formulaire
    $login = mysqli_real_escape_string($dbprotect, $_POST['login']); // mise en variable du nom d'utilisateur
    $pass = sha1($_POST['pass']); // mise en variable du mot de passe crypté

    // requete sur la table administrateurs (on récupère les infos de la personne)
    mysqli_select_db($dbprotect, $database_dbprotect);
    $verif_query = sprintf("SELECT * FROM $tablename_dbprotect WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
    $verif = mysqli_query($dbprotect, $verif_query) or die(mysqli_error($dbprotect));
    $row_verif = mysqli_fetch_assoc($verif);
    $utilisateur = mysqli_num_rows($verif);

    if ($utilisateur) {    // On test s'il y a un utilisateur correspondant
        $_SESSION['authentification'] = 1; // enregistrement de la session

        /* déclaration des variables de session */
        $_SESSION['id_user']= $row_verif['id_user'];
        $_SESSION['privilege'] = $row_verif['privilege']; 
        $_SESSION['nom'] = $row_verif['nom']; 
        $_SESSION['prenom'] = $row_verif['prenom']; 
        $_SESSION['login'] = $row_verif['login']; 
        $_SESSION['pass'] = $row_verif['pass']; 
        /* Redirection vers son profil personel!*/
        header("Location: profil.php?id_user=" .$_SESSION['id_user']);
        exit;
}
    else {
        header("Location: ConnexionDepart.php?erreur=login"); // redirection si utilisateur non reconnu
        exit;
    }
}

// GESTION DE LA Déconnexion
if (isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un "contexte" de déconnexion
header("Location: ConnexionDepart.php?erreur=delog");
exit;
}
?>
<html>
<head>
<title>Connexion au compte </title>
<style type="text/css">
<!--
.Style2 {color: #0000FF}
.Style5 {color: #FF0000}
.Style6 {font-family: Verdana, Arial, Helvetica, sans-serif}
.Style7 {font-size: 12px}
.Style10 {
    font-size: 14px;
    font-weight: bold;
}
-->
</style>
</head>
<body>
<form action="" method="post" name="connect" class="Style6">
  <p align="center" class="Style7"><strong>      
      <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login")) 
      {         if(isset($_GET['erreur']) && ($_GET['erreur'] == ""))

            // Affiche l'erreur
      echo '<span class="Style5"> Echec d\'authentification !!! login ou mot de passe incorrect </span>'; 
      }
      if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) { // Affiche l'erreur
      echo '<span class="Style2">Déconnexion réussie... A bientôt '.$_SESSION['prenom'].' !</span>';
      session_unset();
      }
      if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { // Affiche l'erreur 
      echo '<span class="Style5">Echec d\'authentification !!! > Aucune session n\'est ouverte</span>
      <span class="Style5">ou vous n\'avez pas les droits pour afficher cette page.</span>';
      } ?>
  <p align="center" class="Style7"><em>Authentification sécurisée utilisant :<br>
  - BDD MySQL<br> 
  - Sessions PHP<br>
  - Cryptage en SHA1</em></p>
  <p align="center" class="Style7"><em><a href="lisez_moi.htm">lire les instructions >></a></em></p>
  <div align="center" class="Style7">  
    <table width="300" border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
      <tr>
        <td>
        <table width="400"  border="0" cellpadding="10" cellspacing="0" bgcolor="#eeeeee">
          <tr>
            <td width="50%"><span class="Style7">LOGIN</span></td>
            <td width="50%"><input name="login" type="text" id="login"></td>
          </tr>
          <tr>
            <td width="50%"><span class="Style7">MOT DE PASSE </span></td>
            <td width="50%"><input name="pass" type="password" id="pass"></td>
          </tr>
          <tr>
            <td height="34" colspan="2"> 
                <div align="center">
                <input type="submit" name="Submit" value="Se connecter">
                </div>
            </td>
          </tr>
          <tr>
            <td>
                <p align="center" class="Style7"> <a href="AjoutUtilisateur.php">Me créer un compte</a></p>
            </td>
          </tr>
        </table>
        </td>
      </tr>
    </table>  
 </div>

</form>
</body>
</html>

ma page "InfoTable":

<?php
// paramètres de connexion
$hostname_dbprotect = "localhost";  // nom de votre serveur
$username_dbprotect = "root";       // nom d'utilisateur (root par défaut) !!! ATTENTION, en utilisant root, vos visiteurs ont tous les droits sur la base
$password_dbprotect = "";           // mot de passe (aucun par défaut mais il est conseillé d'en mettre un)
$database_dbprotect = "dbprotect";  // nom de votre base de données   
$tablename_dbprotect= "membres";    // nom de la table utilisée
$dbprotect = mysqli_connect($hostname_dbprotect, $username_dbprotect, $password_dbprotect) or trigger_error(mysqli_err($dbprotect),E_USER_ERROR); 
?>

Ce que je veux

obtenir les infos de l'utilisateur sur le profil

Ce que j'obtiens

Profil

Descripition:
Nom d'utilisateur:
Email:
Age:
Prenom:
Nom:

sans info, ou message d'erreur

5 réponses


Carouge10
Réponse acceptée

Bonjour,
Soit tu utilies PDO soit mysqli mais pas les deux en même temps
Ensuite pour PDO, tu fais 2 fois $bdd = new PDO.... donc inutile
Ensuite lors du developpement de ton site, il te faut activer les erreurs PDO
Enfin, prépare correctement tes requêtes car ceci n'est pas bon :

$req = $bdd->prepare('SELECT * FROM membres WHERE id_user='.$_GET['id_user']);
/* requete, */
$req->execute(array($getid));

Mais cela oui

$req = $bdd->prepare('SELECT * FROM membres WHERE id_user= :id_user);
/* requete, */
    $req->execute(array("id_user" => $getid));
Maxine99
Auteur

bonjour, merci de repondre aussi vite!

Effectivement je n'avais pas vu que j'avais mis les deux et écrit deux fois...
Pour afficher les erreurs POD j'ai utilisé:

try { 
$bdd = new PDO('mysql:host=localhost;dbname=base test', 'root', '');
 } 
catch (Exception $e) 
{        
die('Erreur : ' . $e->getMessage()); }

c'est correcte? Mais toujours aucune erreur ne s'affiche!

Ensuite j'ai effectivement utilisé votre code à la place du mien, mais toujours aucun changement malheureusement...

Non la c'est juste pour la conexion à la BDD sinon, je n'aurai pas mis ma phrase.

Maxine99
Auteur

J'ai trouvé le code :
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
Du coup merci beaucoup je ne savais pas qu'il existait. mon erreur venait du nom de ma base... aussi bête que ça!

Pas de soucis.
Plus qu'à passer les autres codes en PDO ou tout mysqli mais il ne devrait pas y avoir les 2 en même temps car c'est source d'erreur