Session clients

Résolu/Fermé
Lolo - 9 juin 2011 à 12:48
 Profil bloqué - 9 juin 2011 à 15:33
Bonjour,

Comme promis voici mon code pour les sessions :


Formulaire d'identification:

<div id="identifier">
<form method='post' action='identifier.php'/>
<p> S'identifier
<input type="email" value="email" name="email"/>
<input type="password" value="mot de passe" name="mot_de_passe"/>
<input type="submit" value="Ok"/> </p>
</form>
</div>


Connexion session :

<?php session_start();
$_SESSION['email'] = $_POST['email'];
$_SESSION['mot_de_passe'] = $_POST['mot_de_passe'];
?>


Requête Sql pour récupérer les données d'identification :

<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=album_photos', 'root', '', $pdo_options);

$req=$bdd->prepare('SELECT prenom, email, mot_de_passe FROM session WHERE email = ? AND mot_de_passe = ?');
$req -> execute (array($_POST['email'], $_POST['mot_de_passe']));

if ($req->rowCount() == 0)
{
echo 'Se compte n\'éxiste pas';
}
else
{
while ($donnees = $req->fetch())
{
echo 'Bienvenue ' .htmlspecialchars($donnees['prenom']);
}
}
$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur: '.$e->getMessage());
}
?>

Problème :

Une fois identifié le client peut de nouveau s'identifier. Aucun compte particulié n'est ouvert. Les données des pages panier et commande peuvent être accessible à n'importe qui.

2 réponses

Profil bloqué
9 juin 2011 à 13:07
<?php session_start();
$_SESSION['email'] = $_POST['email'];
$_SESSION['mot_de_passe'] = $_POST['mot_de_passe'];
?>

Non ^^'

Après ton code sql, si tu as trouvé ce qu'il faut, tu mets ça

$_SESSION['email'] = $_POST['email'];
$_SESSION['mot_de_passe'] = $_POST['mot_de_passe'];

(avec htmlscpecialchars)

Et en haut de ta page tu laisses bien session_start.

Et en principe tu devrais pouvoir accéder à l'email et au mot de passe partout, une fois qu'ils ont eut une valeur.

Teste
0
Meoran Messages postés 1562 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 8 avril 2015 203
Modifié par Meoran le 9/06/2011 à 13:49
Il faut mettre en variable de session les valeurs récupérés par la requête si il y en a !

Sinon en effet tout le monde peut s'identifier avec n'importe quel login et mdp ^^

Si ta requête sql ne retourne rien, c'est que l'utilisateur n'existe pas et tu dois le jerter sans le connecter...

Autrement question sécurité, j'espère que tu cryptes tes mdp...
0
Profil bloqué
9 juin 2011 à 13:48
crypte + htmlspecialchars partout + isset empty et compagnie...
0
Alors à priori ça marche...

J'ai placé

<?php
$_SESSION['email'] = $_POST['email'];
$_SESSION['mot_de_passe'] = $_POST['mot_de_passe'];
?>

après ma requête Sql. A part. Quand j'essaie de récupérer la variable de session 'email' dans une autre page il m'indique bien la bonne donnée.
Inversement il me note mon message d'erreur quand l'email ou le mot de passe ne sont pas bons.
Est ce que comme ça je peux considérer que j'ai créé une session client qui sera retenir les informations du panier du client pour qu'il puisse faire sa commande ??

Comment faire pour que l'email du client soit inscrit en permanence sur les page du site à la place du formulaire d'identification ?

Merci beaucoup...
0
Profil bloqué
9 juin 2011 à 14:42
<?php echo $_SESSION['email']; ?>

Tu mets ça où tu veux pour que ce soit marqué.

Cette session te permet simplement de retenir qui est ton client. Il te faut le connecter à la bdd, ac sa ligne correspondante, et mettre son panier et tout à jours au fur et à mesure.

Mais tu sauras qui est connecté.
0
Ok merci.

Donc première étape terminée. J'ai bien une session client de créée.
Maintenant reste à savoir comment faire :

"le connecter à la bdd, ac sa ligne correspondante, et mettre son panier et tout à jours au fur et à mesure." ???
0
Profil bloqué
9 juin 2011 à 14:56
Il faut que tu fasses une fonction avec un update, à chaque fois qu'un client ajoutera quelque chose à son panier, genre

"UPDATE lepanier SET ".'cequetuveuxmettre'." FROM mabdd WHERE emailclient=".'$_SESSION['email']'

Enfin c'est un exemple. Mais c'est le concept.

PS pense à bien t'assurer que l'email entré est valide.
0