Souvenir de moi

Résolu/Fermé
Chooper01 - 30 août 2016 à 15:58
jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 - 30 août 2016 à 22:38
Bonjour,

Voila je voudrais mettre un bouton Se souvenir de moi, les Cookies reste quand je me deco du site mais lorsque je retourne sur l’accueil je suis toujours pas connecté .. je vous mets mon code


Connexion :
<?php
session_start()
?>
<?php
try
{
$bdd = new PDO("mysql:host=localhost;dbname=cuisine;charset=utf8", "**", "**", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch (PDOException $e)
{
echo 'Echec de la connexion : ' . $e->getMessage();
exit;
include_once['svndemoi.php'];
}

if (isset($_POST['formconnect']))
{
$pseudoconnect = htmlspecialchars($_POST['pseudoconnect']);
$mdpconnect = sha1($_POST['mdpconnect']);
if (!empty($pseudoconnect) AND !empty($mdpconnect))
{
$requser = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ? AND mdp = ? ") ;
$requser->execute(array($pseudoconnect, $mdpconnect)) ;
$userexist = $requser->rowcount() ;
if($userexist == 1)
{
if (isset($_POST['souvenirmoi']))
{
setcookie('pseudoconnect',$pseudoconnect,time()+365*24*3600,null,null,false,true);
setcookie('mdpconnect',$mdpconnect,time()+365*24*3600,null,null,false,true);
}
$confirm = $bdd->prepare("SELECT confirm FROM membres WHERE pseudo = ? ") ;
$confirm->execute(array($pseudoconnect));
$confirm->rowcount();
$confirm2 = $confirm->fetch() ;
if ($confirm2['confirm'] == 1)
{
$userinfo = $requser->fetch();
$_SESSION['id'] = $userinfo['id'] ;
$_SESSION['pseudo'] = $userinfo['pseudo'] ;
$_SESSION['email'] = $userinfo['email'] ;
header("Location: index.php");
}


Souvenirdemoi:
<?php
if (!isset($_SESSION['id']) AND isset($_COKKIE['pseudoconnect'], $_COKKIE['mdpconnect']))
{
$requser = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ? AND mdp = ? ") ;
$requser->execute(array($_COOKIE['pseudoconnect'], $_COOKIE['mdpconnect'])) ;
$userexist = $requser->rowcount() ;
if($userexist == 1)
{
$confirm = $bdd->prepare("SELECT confirm FROM membres WHERE pseudo = ? ") ;
$confirm->execute(array($pseudoconnect));
$confirm->rowcount();
$confirm2 = $confirm->fetch() ;

if ($confirm2['confirm'] == 1)
{
$userinfo = $requser->fetch();
$_SESSION['id'] = $userinfo['id'] ;
$_SESSION['pseudo'] = $userinfo['pseudo'] ;
$_SESSION['email'] = $userinfo['email'] ;
}
}
}
?>


Deco:

<?php
session_start();
setcookie('pseudoconnect','',time-3600);
setcookie('mdpconnect','',time-3600);
session_destroy();
header("Location: connexion.php");
?>
<?php

try
{
$bdd = new PDO("mysql:host=localhost;dbname=cuisine;charset=utf8", "**", "**", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch (PDOException $e)
{
echo 'Echec de la connexion : ' . $e->getMessage();
exit;
}
?>


Voila ah oui dans toutes les pages j'ai rajouté en dessous de la bdd cette ligne :

include_once['svndemoi.php'];

3 réponses

jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 4 698
30 août 2016 à 17:15
Bonjour,

1 -

catch (PDOException $e)
{
echo 'Echec de la connexion : ' . $e->getMessage();
exit;
include_once['svndemoi.php'];
}

Tout ce qui se trouve APRES un EXIT ... ben... ne se fait pas !

2 - Les cookies peuvent être gérés aussi par le navigateur... ne l'as tu pas paramétré pour les supprimer automatiquement lorsque tu le fermes ?

3 - Ajoutes donc un peu de debug
déjà.. un print_r($_COOKIE); pour voir quels cookies sont dispos dans ton navigateur

4 - Evite d'ouvrir/fermer des balises PHP inutilement....
par exemple
</code>
<?php
session_start()
?>
<?php
try
{</code>
les :
 ?> <?php 

sont en trop......

5 - Active l'affichage des erreurs PHP
error_reporting(E_ALL);

Ainsi que la gestion des erreurs PDO :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs


Une fois que tout ça sera fait.... si tu ne trouves toujours pas ton erreur... reviens nous voir avec ton code modifié.


1
Salut merci de ta reponse
1) bah ou je dois mettre mon include ?

2) non j'ai verifié il me crée bien les cokkies quand je me deco les retiens mais quand je retourne sur profil.php ou accueil bah je suis pas co....

3) Le echo je le mets ou ?
0
jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 4 698
30 août 2016 à 20:40
1)
Où tu veux... tant que c'est avant le EXIT
et puis... dans le TRY plutôt que dans le catch...
0
Chooper01 Messages postés 4 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 30 août 2016 2
30 août 2016 à 20:58
Voila sa me mets une erreur :



<?php
try
{
$bdd = new PDO("mysql:host=localhost;dbname=cuisine;charset=utf8", "****", "**", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
include_once['svndemoi.php'];
} catch (PDOException $e)
{
echo 'Echec de la connexion : ' . $e->getMessage();
exit;
}


la ligne 8 =
include_once['svndemoi.php'];
1
jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 4 698
30 août 2016 à 21:23
Faut des parenthèses... pas des crochets
0
Chooper01 Messages postés 4 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 30 août 2016 2
30 août 2016 à 21:33
Ah oui juste bah toujours rien ..

Deso d'avance j'ai du mal à comprendre ^^
1
jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 4 698
30 août 2016 à 21:52
Ben traite les points 4 et 5
Puis poste ton code...
Après je regarderai. ..
0
Chooper01 Messages postés 4 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 30 août 2016 2
30 août 2016 à 22:08
le points 5 je le mets dans le catch ?
0
jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 4 698 > Chooper01 Messages postés 4 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 30 août 2016
30 août 2016 à 22:18
Le error_reporting est à placer AU DEBUT de tes scripts PHP.
Pour ce qui est de la gestion d'erreur PDO ...elle passe par l'utiliser de blocs TRY/CATCH au niveau de CHAQUE requête SQL
0
Chooper01 Messages postés 4 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 30 août 2016 2
30 août 2016 à 22:38
Niquel j'ai réussis merci !
0
jordane45 Messages postés 38286 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 14 novembre 2024 4 698 > Chooper01 Messages postés 4 Date d'inscription mardi 30 août 2016 Statut Membre Dernière intervention 30 août 2016
30 août 2016 à 22:38
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0