Créer un profil pour page membres en php

Par Maxine99, il y a 7 ans


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, il y a 7 ans

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, il y a 7 ans

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...

Carouge10, il y a 7 ans

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

Maxine99, il y a 7 ans

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!

Carouge10, il y a 7 ans

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