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);
?>
obtenir les infos de l'utilisateur sur le profil
Profil
Descripition:
Nom d'utilisateur:
Email:
Age:
Prenom:
Nom:
sans info, ou message d'erreur
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));
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...
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