Je veux connaître le nombre de sessions ouvertes sur mon site (dans le cadre d'une messagerie).
J'ai trouvé un script de compteur :
Code
<?php
if ( $d = opendir( session_save_path() ) ) {
$count = 0;
$session_timeout = 1 * 60;
while ( false !== ( $file = readdir( $d ) ) ) {
if ( $file != '.' && $file != '..' ) {
if ( time()- fileatime(session_save_path() . '/' . $file) < $session_timeout ) {
$count++;
}
}
}
}
echo $count;
?>
if ( $d = opendir( session_save_path() ) ) {
$count = 0;
$session_timeout = 1 * 60;
while ( false !== ( $file = readdir( $d ) ) ) {
if ( $file != '.' && $file != '..' ) {
if ( time()- fileatime(session_save_path() . '/' . $file) < $session_timeout ) {
$count++;
}
}
}
}
echo $count;
?>
...Mais j'ai cette erreur :
Citation :
Warning: opendir(): open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/clients/web3:/upload) in /clients/web3/public_html/messagerie/conv.php on line 109
Warning: opendir(/tmp): failed to open dir: Operation not permitted in /clients/web3/public_html/messagerie/conv.php on line 109
Warning: opendir(/tmp): failed to open dir: Operation not permitted in /clients/web3/public_html/messagerie/conv.php on line 109
Alors j'ai tenté de faire autrement, avec des txt :
un fichier compteur.txt (avec incrémentation du nbre de visiteurs) et un fichier users.txt avec la liste des utilisateurs connectés
au niveau du log :
Code
/////////compteur sessions ouvertes
$fichier=fopen("compteur.txt","w+");
$nbre = file("compteur.txt");
$nbre=$nbre[0]+1;
fwrite($fichier,"$nbre");
fclose ($fichier);
/////////récup pseudo sessions ouvertes
$file=fopen("users.txt","a");
$user=$_SESSION['pseudo']."<br>";
fwrite($file,"$user");
fclose ($file);
$fichier=fopen("compteur.txt","w+");
$nbre = file("compteur.txt");
$nbre=$nbre[0]+1;
fwrite($fichier,"$nbre");
fclose ($fichier);
/////////récup pseudo sessions ouvertes
$file=fopen("users.txt","a");
$user=$_SESSION['pseudo']."<br>";
fwrite($file,"$user");
fclose ($file);
et du logout :
Code
/////////compteur sessions ouvertes
$fichier=fopen("compteur.txt","w+");
while (!feof($fichier)) {
$nbre=fgets($fichier, 4096); // lire 4096 octets
}
$nbre=$nbre-1;
fwrite($fichier,"$nbre");
fclose ($fichier);
/////////récup pseudo sessions ouvertes
$file=fopen("users.txt","w+");
$user = file("users.txt");
for($i=0;$i<=sizeof($users);$i++) {
if($user[$i]==$_SESSION['pseudo']) {
unset($user[$i]); // efface dans le tableau l'elt pseudo en délog
}
}
echo "$user";
fwrite($file,$user);
fclose ($file);
$fichier=fopen("compteur.txt","w+");
while (!feof($fichier)) {
$nbre=fgets($fichier, 4096); // lire 4096 octets
}
$nbre=$nbre-1;
fwrite($fichier,"$nbre");
fclose ($fichier);
/////////récup pseudo sessions ouvertes
$file=fopen("users.txt","w+");
$user = file("users.txt");
for($i=0;$i<=sizeof($users);$i++) {
if($user[$i]==$_SESSION['pseudo']) {
unset($user[$i]); // efface dans le tableau l'elt pseudo en délog
}
}
echo "$user";
fwrite($file,$user);
fclose ($file);
PB : mon compteur reste toujours à 1, et quand je fais mon logout, j'ai un "Array" qui se place dans la liste...
Bref, je comprends plus.
Avez-vous une idée ? Y'a peut-être plus simple...
Merci d'avance pour votre aide !