18041 sujets
Questions générales et questions de débutants
Alors je n'ai pas accès à ta capture (je suis au taf ...)
Mais si cela correspond au passage de ta variable $_SESSION['pseudo'], c'est que ta valeur n’existe pas.
Quand tu arrives sur cette page, l'utilisateur c'est-il déjà connecté à un compte ou c'est-il enregistré ?
Si oui fait un var_dump( $_SESSION) pour voir et affiche moi le résultat stp.
Mais si cela correspond au passage de ta variable $_SESSION['pseudo'], c'est que ta valeur n’existe pas.
Quand tu arrives sur cette page, l'utilisateur c'est-il déjà connecté à un compte ou c'est-il enregistré ?
Si oui fait un var_dump( $_SESSION) pour voir et affiche moi le résultat stp.
<?php
var_dump( $_SESSION);
try
{
$bdd = new PDO('mysql:host=localhost;dbname=monsite;charset=utf8', 'root', '');
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
biduletruck, non, c'est sur
L'erreur est
la ligne 24 corresponds à l'execute.
Merci.
if ($pseudoExist === false) // Le pseudo ne se trouve pas dans la table, on va l'ajouter.
{
$bdd->prepare('INSERT INTO connect_chat (pseudo, timestamp) VALUES (?, NOW())');
$bdd->execute(array($_SESSION['pseudo']));
}
L'erreur est
Fatal error: Call to undefined method PDO::execute() in C:\wamp64\www\monsite\chat_connectes.php on line 24
la ligne 24 corresponds à l'execute.
Merci.
Normal ...
tu fais:
alors qu'il faut préparer la requête dans une variable et exécuter cette variable et non exécuter $bdd:
tu fais:
$bdd->prepare('INSERT INTO connect_chat (pseudo, timestamp) VALUES (?, NOW())');
$bdd->execute(array($_SESSION['pseudo']));
alors qu'il faut préparer la requête dans une variable et exécuter cette variable et non exécuter $bdd:
if ($pseudoExist === false) // Le pseudo ne se trouve pas dans la table, on va l'ajouter.
{
$req = $bdd->prepare('INSERT INTO connect_chat (pseudo, timestamp) VALUES (?, NOW())');
$req->execute(array($_SESSION['pseudo']));
}
else // Le pseudo se trouve déjà dans la table, on met juste à jour le timestamp.
{
$req = $bdd->prepare('UPDATE connect_chat SET timestamp = NOW() WHERE pseudo = ?');
$req->execute(array($_SESSION['pseudo']));
}
Bon, voici un code sécurisé qui fonctionne....Enfin.....!!!
Un grand MERCI à toi biduletruck...!!!
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=monsite;charset=utf8', 'root', '');
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// ÉTAPE 1 : on vérifie si le pseudo se trouve déjà dans la table.
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "pseudo" le pseudo du visiteur.
$reqpseudo = $bdd->prepare('SELECT pseudo AS existe_pseudo FROM connect_chat WHERE pseudo= ?');
$reqpseudo->execute(array($_SESSION['pseudo']));
$pseudoExist = $reqpseudo->fetch();
if ($pseudoExist == 0) // Le pseudo ne se trouve pas dans la table, on va l'ajouter.
{
$verif = $bdd->prepare('INSERT INTO connect_chat (pseudo, timestamp) VALUES (?, ?)');
$verif->execute(array($_SESSION['pseudo'], time()));
}
else // Le pseudo se trouve déjà dans la table, on met juste à jour le timestamp.
{
$verif = $bdd->prepare('UPDATE connect_chat SET timestamp="'.time().'" WHERE pseudo="'.$_SESSION['pseudo'].'"');
$verif->execute(array($_SESSION['pseudo']));
}
// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 1 minutes.
// On stocke dans une variable le timestamp qu'il était il y a 1 minutes :
$timestamp_min = time() - (60*2); // nombre en secondes par minute * par nombre de minute
$bdd->query('DELETE FROM connect_chat WHERE timestamp<"'.$timestamp_min.'"');
// ÉTAPE 3 : on compte le nombre de pseudo stockées dans la table. C'est le nombre de visiteurs connectés.
$retour = $bdd->query('SELECT GROUP_CONCAT(pseudo SEPARATOR ", ") AS existe_pseudo FROM connect_chat')->fetchAll();
$utilisateur = htmlspecialchars($retour[0][0]);
?>
Un grand MERCI à toi biduletruck...!!!