Page 1 sur 1

probleme affichage nombre de connecté en ligne (invites/memb

Posté : 11 mai 2010, 19:29
par jim0205
bonjour je tente de passer le script "coolforum" sous php5. a la base il est prevu pour php4

j ai un soucis a chaque fois que j actualise ma page il me compte comme un invite de plus et je me retrouve avec en fait 15 invite en ligne si j actualise 20 fois ...


voici je pense la fonction que j ai trouvé:
// #### ENREGISTRMEMENT DE LA SESSION POUR CHAQUE MEMBRE / INVITE ####
function getsession()
{
	global $_COOKIE, $_USER, $sql, $_PRE, $SessLieu, $SessForum, $SessTopic;
	$tablename								=		array();

	if(!empty($SessLieu))
	{
		$pseudo 								= 		getformatdbtodb($_USER['username']);

		if(!isset($_COOKIE['CF_sessionID']))
	   		$_COOKIE['CF_sessionID'] 			= 		init_session();

		$now									=		time();
		$perim									=		$now - 300;
		
		$delsql									=		$sql->query("DELETE FROM ".$_PRE."session WHERE time<".$perim);

		$query									=		$sql->query("SELECT sessionID, username, userid, userstatus, typelieu, forumid, topicid FROM ".$_PRE."session");
		$nb										=		mysql_numrows($query);

		$found 									= 		false;
		$i										=		0;

		if($nb>0)
		{
			while($j=mysql_fetch_array($query))
			{
				if($_USER['userid']>0 && $_USER['username']==$j['username']) // si trouvé membre
				{
					$updsess					=	$sql->query("UPDATE ".$_PRE."session SET sessionID='".$_COOKIE['CF_sessionID']."', time=$now, typelieu='$SessLieu', forumid=$SessForum, topicid=$SessTopic WHERE username='".$pseudo."'");
					$tablename[$i]['name']		=	$j['username'];
					$tablename[$i]['status']	=	$j['userstatus'];
					$tablename[$i]['userid']	=	$j['userid'];
					$found 						= 	true;
					$tablename[$i]['typelieu']	=	$SessLieu;
					$tablename[$i]['forumid']	=	$SessForum;
					$tablename[$i]['topicid']	=	$SessTopic;
				}
				elseif($j['sessionID']==$_COOKIE['CF_sessionID']) // sinon si les sessions concordent => soit invité soit vient de se logguer
				{
					$updsess					=	$sql->query("UPDATE ".$_PRE."session SET username='".$pseudo."', userid=".$_USER['userid'].", userstatus=".$_USER['userstatus'].", time=$now, typelieu='$SessLieu', forumid=$SessForum, topicid=$SessTopic  WHERE sessionID='".$_COOKIE['CF_sessionID']."'");
					$tablename[$i]['name']		=	$_USER['username'];
					$tablename[$i]['status']	=	$_USER['userstatus'];
					$tablename[$i]['userid']	=	$_USER['userid'];
					$found 						= 	true;
					$tablename[$i]['typelieu']	=	$SessLieu;
					$tablename[$i]['forumid']	=	$SessForum;
					$tablename[$i]['topicid']	=	$SessTopic;
				}
				else //sinon ce n'est pas moi
				{
					$tablename[$i]['name']		=	$j['username'];
					$tablename[$i]['status']	=	$j['userstatus'];
					$tablename[$i]['userid']	=	$j['userid'];
					$tablename[$i]['typelieu']	=	$j['typelieu'];
					$tablename[$i]['forumid']	=	$j['forumid'];
					$tablename[$i]['topicid']	=	$j['topicid'];
				}				
				$i++;
			}
			
		}

		if(!$found)
		{
			$query								=	$sql->query("INSERT into ".$_PRE."session (sessionID, username, userid, userstatus, time, typelieu, forumid, topicid) VALUES ('".$_COOKIE['CF_sessionID']."','$pseudo', ".$_USER['userid'].",'".$_USER['userstatus']."','$now','$SessLieu','$SessForum','$SessTopic')");
			$tablename[$i]['name']				=	$_USER['username'];
			$tablename[$i]['status']			=	$_USER['userstatus'];
			$tablename[$i]['userid']			=	$_USER['userid'];
			$tablename[$i]['typelieu']			=	$SessLieu;
			$tablename[$i]['forumid']			=	$SessForum;
			$tablename[$i]['topicid']			=	$SessTopic;
									
			$LastINI							=	intval($_COOKIE['CF_LastINI']);
			if($_USER['userid'] > 0)
				$query							=	$sql->query("UPDATE ".$_PRE."user SET lastvisit = $LastINI WHERE userid = ".$_USER['userid']);
		}

		sendcookie("CF_sessionID",$_COOKIE['CF_sessionID'],-1);
		sendcookie("CF_LastINI",$now,-1);
	}
	return($tablename);

}

function get_connected($Lieu = "",$forumid = 0, $topicid = 0)
{
	global $NombreConnectes, $tpl;
	
	$InfoMember['nbmembres']		=	0;
	$InfoMember['nbguests']		=	0;
	$InfoMember['nbtotalvisit']	=	0;

	$NbTotalcon					=	count($NombreConnectes);
	$ListMembres				=	array();
	$nameconnect				=	array();
	
	// **** Définition du nbre de membres et d'invités selon le lieu ****
	for($i = 0; $i < $NbTotalcon; $i++)
	{
		$mbvalid = false;

		if($Lieu == "TOP" && $Lieu == $NombreConnectes[$i]['typelieu'] && $forumid == $NombreConnectes[$i]['forumid'] && $topicid == $NombreConnectes[$i]['topicid'])
			$mbvalid = true;
		elseif($Lieu == "FOR" && ($Lieu == $NombreConnectes[$i]['typelieu'] || $NombreConnectes[$i]['typelieu'] == "TOP") && $forumid == $NombreConnectes[$i]['forumid'])
			$mbvalid = true;	
		elseif(strlen($Lieu) > 0 && $Lieu != "TOP" && $Lieu != "FOR" && $Lieu == $NombreConnectes[$i]['typelieu'])
			$mbvalid = true;

		if(strlen($Lieu) == 0)
			$mbvalid = true;

		if($mbvalid)
		{
			if(!empty($NombreConnectes[$i]['name']))
			{
				$InfoMember['nbmembres']++;
				$ListMembres[]	=	$i;
			}
			else
				$InfoMember['nbguests']++;
		}		
	}

	$InfoMember['nbtotalvisit']	=	$InfoMember['nbmembres'] + $InfoMember['nbguests'];
mais je ne vois pas trop ou est le prob

Re: probleme affichage nombre de connecté en ligne (invites/memb

Posté : 12 mai 2010, 23:14
par Aureusms
Peut être que comme tes variables sont globales (global $_COOKIE, $_USER, $sql, $_PRE, $SessLieu, $SessForum, $SessTopic;), elles sont comptées ailleurs une autre fois. Je pense peut être à $_USER ou $NombreConnectes.