affiché connecté

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 mai 2006, 21:11

attention à ces lignes:
$query ="UPDATE comptes SET quipass='$conqui', heurepass='$conheure' WHERE nom='$connom'";
$_SESSION['connom'] = $data['$connom'];
$query ="insert into connecte values('','$connom')";}

mysql_query($query, $connect); 
tu construit 2 requetes mais une seule n'est exécutée.

Pour le timestamp je sais pas comment tu as testé mais il ne devais pas avoir de problème comme ceci:
$query ="insert into connecte values('','".$connom."',".time().")";
si tu as un message d'erreur te gênes pas pour le donner :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 124 Messages

22 mai 2006, 18:19

bonjour
ok c bon ça fonctionne
mais je vais pas me servir de cette ligne de code ,dans ma table compte j'ai un champ heurepass qui correspond au timestamp de la table conecte
$query ="UPDATE comptes SET quipass='$conqui', heurepass='$conheure' WHERE nom='$connom'";
donc l'heure quand tu te connecte et directement enregistré , ile me restera a faire une requete pour actualiser suivant le temp passé
pour ce que tu me dit dans le msg precedent c vrai j'avais pas fait attention que une seule requete s'executée

j'ai essayé $query et $query1 mais ça fonctionne pas non plus
sinon j'ai essaye toutes les requete une a une elle fonctionne toutes sauf celle pour le champ connecte
Connecte ENUM('oui\non)
quand je verifie dans la table il ni a qu'1 seul bouton radio , c'est normal??

et la requete ne fonctionne pas
$query ="UPDATE comptes SET connecte='$oui' WHERE nom='$connom'";
merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 mai 2006, 22:16

un souci de définition peut être

Le type ENUM se définit avec des aspostrophes pour chaque élément de type chaine de caractères => ENUM( 'oui' , 'non' )

Mais par souci d'optimisation on notera 0 et 1 au lieu de non et oui :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 124 Messages

23 mai 2006, 22:09

bonsoir
ok pour le champ enum j'avais oublié une apostrophe
mais elle fonctionne que dans un sens pas dans l'autre
dans valide connection je fais un update sur ce champ avec la valeur oui la ça fonctionne
mais sur le bouton deconnection un udpate avec la valeur non , la aucune modif sur la table ,je revise mon code je devrai pouvoir trouvé pkoi
sinon dan un msg precdent tu dit qu'une seulle requete est executé ,apres verif oui c vrai ,j'ai cherchr dans difernet tuto sur les requete mais je vois vois pas comment faire plusieur requete ou alorspovoir les concaténées
je cherche encore
merci :wink:
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 mai 2006, 23:08

Pour le type enum tu as bien séparé les deux propositions par des quotes ?
'oui' , 'non'
Sinon préfère un type int(1) avec 0 ou 1 pour une optimisation de la table.

Pour exécuter 2 requêtes ne cherche pas midi à 14h :wink:
fait 2 appel à mysql_query() l'un après l'autre avec chacune une requête.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 965 Messages

24 mai 2006, 08:08

je pense qu'on peut fusionner avec mon topis etant donné que c'est le même sujet :)

par contre je n'ai toujours pas trouver comment tuer ma session au bout de 5 minutes en même temps qu'il detruit l'entrée de ma table... a chaque rechargement de la page il detruit la session sans verrifier la condition mais delete bien qu'au bout de 5 minutes ...

Eléphant du PHP | 124 Messages

24 mai 2006, 18:29

bonsoir
bon pour faire plusieur requete c bon ça fonctionne , j'ai esayé comme tu m'a dit , super :D
le champ connecte ENUM je l'ai changé en INT mais la toujours le meme probleme ça marche a la validation compte mais pas a la deconnection pourtant c la meme requete, ya que la valeur a update qui change, c a ce tapé la tete sur le mur ya des moment
je met le script au ka ou

Validation compte
<?php

session_start();


SetCookie("espace_login","$connom");
SetCookie("espace_pass","$conpass");

include("sources/config.php");


$connect=mysql_connect($host,$user,$pass) or die ("Impossible de se connecter");
mysql_select_db($base, $connect) or die ("Impossible de selectionner la base de donnees");


if ((!$connom)|| (!$conpass)){
echo("<script language=\"javascript\">location=\"erreurcon.php\";</script>");}


$conqui= date("Y-m-d");
$conheure= date("H:i:s");


$conpass=md5($conpass);


$result=mysql_query ("SELECT * FROM comptes WHERE nom='$connom' and pass='$conpass'") or die ("Requete impossible");
$nbconnom = mysql_num_rows($result);
if ($nbconnom==0) {

echo("<script language=\"javascript\">location=\"erreurcon.php\";</script>");}
else {echo("<script language=\"javascript\">location=\"compte.php\";</script>");

$query ="UPDATE comptes SET quipass='$conqui', heurepass='$conheure' WHERE nom='$connom'";

mysql_query ("UPDATE comptes SET connecte='1' WHERE nom='$connom'");}
$_SESSION['connom'] = $data['$connom'];


mysql_query($query, $connect);
mysql_free_result($result);
mysql_close($connect);
?>
Déconnection
<?php

session_start();

include("sources/config.php");



SetCookie("espace_login","$connom");
SetCookie("espace_pass","$conpass");


include("sources/config.php");


$connect=mysql_connect($host,$user,$pass) or die ("Impossible de se connecter");
mysql_select_db($base, $connect) or die ("Impossible de selectionner la base de donnees");

mysql_query ("UPDATE comptes SET connecte='0' WHERE nom='$connom' ");
 unset($_SESSION['connom']);
 
session_destroy();
echo("<script language=\"javascript\">location=\"index.php\";</script>");

merci
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 mai 2006, 18:37

agité >> faut voit ton code :wink:

tilillois >>oubli d'une ligne non ?
$connom = $_SESSION['connom'];
mysql_query ("UPDATE comptes SET connecte='0' WHERE nom='$connom' ");
unset($_SESSION['connom']); 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 124 Messages

24 mai 2006, 18:48

re bonsoir

ben j'ai rajouté la variable mais c toujours pareil

plus haut tu met INT(1) avec 0 et 1
0 et 1 ça ce met quand la requete est executé

moi j'ai INT(11) mais ça c'est mi automatiquement quand je cré le champ
est ce que ça peut avoir un raport??
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????

Mammouth du PHP | 965 Messages

24 mai 2006, 21:54

J'ai creer une table pour mes session en cours avec des info sur :

-le pseudo = $_SESSION['login']
-l'ip = $_SERVER['REMOTE_ADDR']
-la sessions ID = $_SESSION['session_id']
-temps = time()
-connecte : ENUM 'oui 'non'

Quand quelqu'un arrive sur mon site on verrifie si son IP est dans la BDD :

-si non -> on ajoute a la table les info et on le met en connecte 'non'
-si oui -> on met a jour la table avec le time()

Si le client est logue on regarde si son IP est dans la BDD

-si non -> ajouter toute les info
-si oui -> on met a jour le time() la session et on met connecte 'oui'

Ensuite je compte le nombre d'entrées dans ma table qui sont en 'oui' et le nombre en 'non' et j'indique qui est logué et qui visite.

Pour l'instant tout marche sur des roulettes mais maintenant je veux changer ca car il faut mettre des temps de sessions sur mon server et la je coince a la cloture de la session:

Quand le temps de la BDD depasse 5 minutes on tue la session
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query("DELETE FROM sessions WHERE timestamp < '".$timestamp_5min);
Encore une fois tout vas bien au bout de 5 minutes l'entrée sur la base est detruite par contre j'aimerais savoir comment tuer la session par la même occasion j'ai tout tester avec session_destroy() mais toujours la même chose que je le mette dans un while ou n'importe quoi d'autre il ne veux pas.

La dessus je bloque depuis un moment, si vous avez une idée n'hesitez pas !

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 mai 2006, 22:33

>>tilillois

ton 1er code n'est pas structuré et une requete qui ne sert à rien ($query). je ne vois pas d'où sortent les variables :
mysql_query ("UPDATE comptes SET connecte='1' WHERE nom='$connom'");}
$_SESSION['connom'] = $data['$connom']; 
par exemple $data['$connom'] et $connom vienent d'où ?

pareil pour le code de déconnexion => $connom ?

affiche cette variable pour vérifier son contenu. n'oublis pas les mysql_error() (mais dans le cas d'une requete UPDATE tu n'auras pas d'erreur si la variable est vide juste aucune ligne affectée ce qui semble être ton cas.

[/u]

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

24 mai 2006, 22:38

agité>>
session_destroy();
unset($_SESSION);
sinon en plus (pour le cas où tu me diras "ça marche pas") écrase la variable de session par un tableau vide:
$_SESSION = array();

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 124 Messages

25 mai 2006, 06:27

bonjour

plus nul que moi tu meurt :oops:

je pouvai changé le coe autant de foi que je voulai rien n'y aurai fait
en fait j'avais 2 fichier deco , 1 a la racine l'autre dans un dossier bien evidement je transfere dans le mauvais (j'ai honte :oops: )
la tous fonctionne
maintenant vais m'occupé du temp de session en retournat voir ton tuto
encore merci pour tous tes conseil mais reste dans le coin car je devrai certainement encore en avor beoin
merci a bientot :wink:
on regle beaucoup de chose avec le php,
et pour la misere du monde ,on peut s'en servir aussi????

Mammouth du PHP | 965 Messages

25 mai 2006, 08:09

j'ai changer en ca :
if($timestamp_5min = time() - (60 * 5)) {// 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query("DELETE FROM sessions WHERE timestamp < '".$timestamp_5min);
session_destroy();
unset($_SESSION);
}
il me renvois une errerur et apparement il ne teste pas les 5 minutes mais detruit ma session automatiquement, c'est la dessus que je bloque il ne verrifie pas si les 5 minutes sont ecoulé et ne detruit pas de la table les entrée si le session_destroy() est present.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 mai 2006, 13:35

agité >>

Ok, enfait ce que tu veux faire n'est pas possible comme tu le penses.

Le code est linéaire et donc toutes les lignes sont exécutées, là tu n'effectue aucun test pour les opération de destruction de la session de l'utilisateur en cours.

Ce que tu peux faire par contre est une nouvelle requête, après la requête de mise à jour, sur la table des connectées pour vérifier si le pseudo de la variabvle de session y est toujours:
$sql="SELECT id FROM session WHERE pseudo ='".$_SESSION['pseudo']."'";
si tu n'as pas de retour alors destruction de la session.

Mais si tu as la main mise sur le php.ini tu peux modifier la valeur de "session.lifetime".

Et par défaut la session se détruit à la fermeture du navigateur.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute