par
jim0205 » 11 mai 2010, 19:29
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
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é:
[php]
// #### 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'];
[/php]
mais je ne vois pas trop ou est le prob