[RESOLU] Problème de Update à la déconnexion avec session

Eléphanteau du PHP | 24 Messages

19 mars 2019, 10:35

Salut,
Quand je consulte le panneau de l'utilisateur sur le forum, je trouve le titre "Votre activité" et ces deux informations : Enregistré le et Dernière visite. Je comprends que c'est enregistré et je veux faire pareil chez moi. A la connexion j'ai ceci : etat='connecté', arrivee='$date' et ça fonctionne mais à la déconnexion rien ne se passe dans la base.
Voici ma page de déconnexion :
	session_start();
			if ($_SESSION['acces']!="oui")  {
				header("Location:http://localhost/monsite.cg");
			}
	echo $_SESSION['matricule'];
   
	echo "<hr /> ";
		try
		{
			$bdh = new PDO('mysql:host=localhost;dbname=monsite;charset=utf8', 'root', '');
		}
		catch(Exception $e)
		{
			die('Erreur : '.$e->getMessage());
		}
				
		$date=date("Y/m/d H:i:s");
		$aze = $bdh->prepare("UPDATE comptes SET etat='déconnecté', depart='$date' WHERE matricule =:matricule");
		$aze->execute(array(':matricule'=>$_SESSION['matricule']));
		$aze->closeCursor();

	session_destroy();
   header("location:http://localhost/monsite.cg/connexion");
Je vous écoute..

Mammouth du PHP | 1967 Messages

19 mars 2019, 10:41

Commence par vérifier que $_SESSION['acces'] est bien égale à 'oui' sinon rien ne se passera
as tu bien ton echo $_SESSION['matricule'] ?

ensuite vérifie que ta requète est bien envoyé et qu'elle ne contient pas d'erreur car tu ne capture pas les erreurs.

si tu prépare ta requète pour y insérer le matricule, pourquoi ne pas insérer la date de la même manière, ce serait plus logique.

en fin de compte je pense que le système doit fonctionner de manière un peu différente, avec un time out.
Chaque action peut updaté une date de dernière activité et le site affiche comme connecté toutes personnes qui a une activité de moins de X minutes
Rien n'empèche de vider ce champs à la déconnexion volontaire, mais beaucoup de monde ferme leur navigateur sans se déconnecter.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 24 Messages

19 mars 2019, 14:13

$_SESSION['acces'] est bien égale à 'oui' ;
echo $_SESSION['matricule'] renvoie le résultat.
Il n'y a pas d'erreur dans la requête.
Aidez-moi..

Mammouth du PHP | 1967 Messages

19 mars 2019, 20:06

affiche tes erreurs mysql car si le code est éxécuté mais la table pas updaté c'est qu'il y a une erreur
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 24 Messages

25 mars 2019, 16:25

J'ai cette erreur :
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE9' for column 'etat' at row 1 in C:\wamp\www\monsite.cg\deconnexion.php on line 26
( ! ) PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE9' for column 'etat' at row 1 in C:\wamp\www\monsite.cg\deconnexion.php on line 26

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 mars 2019, 18:13

Problème d'encodage de caractère \xE9 correspond au caractère "é" en ISO-8859-1.

Les problématiques d'encodage de caractère c'est toujours la galère. Configure ton éditeur de code en UTF8, ainsi que ton serveur et ta bdd.
Il y a un tuto ici :
https://j-willette.developpez.com/tutor ... e-en-utf8/
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 24 Messages

02 avr. 2019, 09:31

Qu'est-ce qui fait qu'à la connexion etat="connecté" ne donne pas d'erreur ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

02 avr. 2019, 09:40

Qu'est-ce qui fait qu'à la connexion etat="connecté" ne donne pas d'erreur ?
Aucune idée, il faut que tu cherches de ton côté car un pb de charset ça dépend de la configuration de ton serveur et de ton éditeur de code, donc difficile à reproduire sans être dans ton environnement de dev.
Quand tout le reste a échoué, lisez le mode d'emploi...