affiché connecté

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 mai 2006, 18:34

Mais oui biensûr regarde à la ligne 2541 caractère 215 qui ne doit pas être bon. #-o

Sérieusement, ils nous faudrait le bout de code que tu as testé pour qu'on puisse te donner un avis correct sinon ma 1ère remarque est tout ce que tu puisse espérer :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

14 mai 2006, 18:39

voila mon script
<?php

session_start();

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

//Fichier necessaire
include("sources/config.php");

// Verifie si on peut se connecter a la base sql
$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");

//Verification que tous les champs ont ete rempli
if ((!$connom)|| (!$conpass)){
echo("<script language=\"javascript\">location=\"erreurcon.php\";</script>");}

//Configure les dates et les heures
$conqui= date("Y-m-d");
$conheure= date("H:i:s");

//Cryptage du mot de passe
$conpass=md5($conpass);

//Verification du mot de passe
$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>");
//Enregistre l'heure et la date de connexion
$query ="UPDATE comptes SET quipass='$conqui', heurepass='$conheure' WHERE nom='$connom'";
//$_SESSION['connom']=array()
if ($connom)
$_SESSION = array()
$_SESSION['connom'] = $data['connom'];
}

  
  


 




//Libere la base de donnees
mysql_query($query, $connect);

mysql_free_result($result);

mysql_close($connect);
?>
si ça peut t'eclairer

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 mai 2006, 18:58

Bien sûr que ça éclaire, il faut bien comprendre que nous ne voyons pas le code que tu testes. Il y a tant de manières de faire de travers qu'on ne peut pas tous les imaginer et donner des explications en fonction.

Maintenant je crois que tu n'as pas compris qu'une session est propre à un utilisateur. Une variable de session n'est donc active que pour un membre tu ne peut pas affecter une valeur à une variable de session est espérer la récupérer pour un autre utilisateur.

Donc cette idée tombe un peu à l'eau.

Ce que tu devrais faire est ajouter un champ (si ce n'est pas déjà fait) en type enum (1 ou 0 ). Si le membre s'identifie le champ passe à 1 lors de la déconnexion il passe à 0.

Tu peux regarder ce tuto pour de l'inspiration

/!\ 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

14 mai 2006, 19:10

ok je vais jeté un oeil dessus (pas trop loin vais pas le retrouvé :D )
tous ça, ça m'aura permi d'apprendre quelque truc en sup
je te remerci de ta patience et te tien au courant du deroulement
merci encore :wink:

Eléphant du PHP | 124 Messages

15 mai 2006, 20:14

bsr
j(ai peut etre trouve un solution a ce que je veut

j'ai crée une table connecte avec un seul champ (pseudo)

quand une personne ce logue sur le site j'insert le pseudo dans la table connect
$query ="insert into connecte values('','$connom')";
jusque la tous va bien
quand la personne quitte le site la session et detruite
voila ce que j'ai fait mais ça me met toujours une erreur
<? 
               // initialisation 



session_destroy();        // on détruit la session 

unset($_SESSION['$connom']); 

if session_destroy();
{
$result=mysql_query ("DELETE FROM connecte WHERE nom='$connom' ") or die ("Erreur de suppression");}


?>
si j'arrive a resoudre ça me restera plus qu'a faire une requete pour affiché tous les pseudo de la table connecte
et une fonction pour raafraichier tous les X temp

réalisable ou pas ????
merci de vos avis :D

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 mai 2006, 21:54

clair que tu as des erreurs en retour, le code n'est absolument pas structuré.

essaie avec:
<?
session_start();
$result=mysql_query ("DELETE FROM connecte WHERE nom='".$_SESSION['connom']."' ")
unset($_SESSION['connom']);
session_destroy();        // on détruit la session
?>
fait attention aux "$" dans $_SESSION['$connom'] à ne pas placer partout

/!\ 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

16 mai 2006, 18:39

bonjour, bonsoir
merci truc pour ton code mais ça marche toujours pas
mais je crois que ça viens de moi au niveau session
je m'eplique:
j'ai une page de logue qui quand le pseudo et le pass sont bon fon apel a une fontion php (validercompte)qui elle affiche le compte
pour moi je demare la session dans la page validercompte
session_start();
$session['$connom'];

///$connom qui correspond au pseudo

quand la page compte souvre j'ai la frame gauche qui est inclut dans lasquelle je voudrai voir les connecté
donc dans celle si une session_start en debut de code dans la frame gauche et dans la page compte

et la fonction destroy en fin de code quand on quite le site sur la frame gauche, la session est detruite enfin normalemnt
la rien ,quand la page compte souvre avec la frame gauche ça me met une erreur sur la ligne unset
voila , alorsp eut etre la session est mal configuré mais je pense avoir comme dans les tutos
une autre question si je ne m'abuse
toutes les variables de sesion sont stocker je supose sur le server
n'y a t'il pas un moyens de les recuperer??
merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 mai 2006, 22:38

fait attention à l'utilisation de
$session['$connom'];
et
$session['connom'];
le session start tu peux le mettre ou tu veux ou plus précisément quand tu veux. Dès la page d'index tant que tu n'affecte rien au variables de sessions les parties réservées le resteront.

Pour la récupéraion des variables non pas possible hormis dans tes scripts.

/!\ 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

19 mai 2006, 17:52

desolé truc ça marche toujours pas , j'ai essayé plusieurs ordre pour le sripte mais toujours la meme erreur au niveau du unset
la variable de session et bonne car elle s'inscrit sur ma page
si je met unset en premier et apre la requete la pas d'erreur mais pas de modif au niveau de la table
une question me tulupine
la fonction unset et destroy comment sont elles aplé exactement
ne faudrai-il pas mettre le script a part??
merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 mai 2006, 14:15

arf, ne me dis pas que tu as un parse error sur cette ligne :?

Parce qu'il manque un point virgule sur la ligne de la requête dans mon code précédent.

sinon teste ça:
$_SESSION = array();
la plus rien dans la session.

/!\ 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

21 mai 2006, 10:19

bonjours
non le ; je l'ai rajouté ,je debute mais quand meme :D
le probleme viens du fait que je sais pas comment executé cette fonction
automatiquement a la sortie du site
faudrait que je fasse un bouton se deconnecter et la je pense que ça fonctionnerai , mais si on quite le site sans se servir du bouton ma requete ne serai pas executé
tu a une idée??

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 mai 2006, 12:48

Et bien oui ce script doit être appelé sur un bouton déconnexion. Pour ce qui est du gars qui quitte sans passer par ce script il faut automatiser la mise a jour tous les X secondes.
Le tuto que je t'ai proposé de suivre au début le fait très bien
2. Ensuite, on regarde les autres adresses IP déjà enregistrées dans la table. On supprime toutes les IP qui ont été inscrites depuis plus de 5 minutes.
Il faut donc parcourir la table et si le timestamp est supérieur à un certain temps tu supprimes ce pseudo de la table des connectées.

/!\ 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

21 mai 2006, 18:26

ben voila ça fonctionne enfin plus ou moins , j'explique
dans la table connecte un seul champ (nom)
l'insertion du pseudo et la supression de celui ci avec le bouton deconneté fonctionne
si je rajoute un champ timestamp INT(12)
la , l'insertion du pseudo et la supression ne fonctionne pas
pourtant j'ai pas encore fait de fonction comme dans ton tuto qui mais a jours ce champs
est du a ça??

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

21 mai 2006, 19:06

Non il n'y a pas de lien entre les champs qui pourrait provoquer des erreurs. Montre nous comment tu as essayé d'ajouter les données dans la table connectés.

/!\ 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

21 mai 2006, 19:28

voila les different code
code de validation qui inscrit par la meme occasion le pseudo dans la table connecte
<?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'";
$_SESSION['connom'] = $data['$connom'];
$query ="insert into connecte values('','$connom')";}

mysql_query($query, $connect);
mysql_free_result($result);
mysql_close($connect);
?>
la le code qui suprime le pseudo de la table connecte quand on click sur le bouton deconnecter
$connom=$HTTP_COOKIE_VARS["espace_login"];
$conpass=md5($HTTP_COOKIE_VARS["espace_pass"]);
$result=mysql_query ("SELECT * FROM comptes WHERE nom='$connom' and pass='$conpass'") or die ("Requete impossible");

$autoconnect = mysql_num_rows($result);


if ($autoconnect==0) {
echo("<script language=\"javascript\">location=\"erreur.php\";</script>");}

 

$result=mysql_query ("DELETE  FROM connecte WHERE nom='".$_SESSION['connom']."' ");

 unset($_SESSION['connom']);
 

session_destroy();
?><a href="../index.php">../index.php</a>
si j'ai dans la table un champ timestamp INT() ça fonctionne pas , quand je le suprimme ça fonctionne
j'ai essayé aussi un champ de type enum , idem ça fonctionne pas non plus
par contre j'ai relu ton tuto sur le nombre de connecte
je doit pouvoir le modifier pour afficher les pseudo , mais est ce que cette fonction s'execute tous les X temp ou alors faut créer une autre fonction qui apelerai celle ci tous les x temp???
je commence a touché au but
merci pour ton aide et ta patience :wink: