Vous n'êtes pas identifié.
Bonjour a tous !! Ca fait très lgt :p
J’espère que vous aller tous bien =)
Voila je reviens vers vous, car je penche sur un asser gros problème que je ne résous pas :(
Voila je voudrais afficher une image (un rond vert • ) sur la photos des membre connecter.
Pour le moment ca marche, mais le système ne me conviens pas. En effet, quand un membre se connecte, il met a jour le champ 'online' qui se trouve en BDD pour l'on enregistrement.
Sur l'image, je test si dans le champ online du membre, il est a 1, j'affiche ce rond. Si il est a 0, je n'affiche pas.
Et lors de la déconnexion, le membre remet a jour la BDD, et met un 0 dans le champ online pour son propre enregistrement.
Mais ce que je cherche a faire, c'est tester la connexion avec les $_SESSION ou les $_COOKIES.
J'aimerais afficher ce rond si la personne est réélement sur le site. C'est a dire si je me connecter, et que je ferme simplement le navigateur, je passe offline sur le site. Et si je me remet sur le site (sans me reconnecter, car je le suis déjà) il va afficher le rond ver et me repasser en online
Voila j’espère avoir été asser clair dans mes explication :)
MERCI A VOUS :)
Dernière modification par tydoo (11-04-2011 03:56:05)
Hors ligne

Salut tydoo,
Peut être en utilisant l'évènement "unload" en Javascript associé à une fonction qui te permettrait de détruire la session à la fermeture du navigateur...par contre ça tue la session donc le membre est obligé de se reconnecter!
Hors ligne
Hein ...quoi tu dis...j'ai rien comprit?
Hors ligne
Si je ne me trompe pas, ça devrait être impossible :
on ne peut pas détruire un cookie si l'utilisateur n'est plus sur le site...
et ton serveur ne pourra pas chercher si un cookie existe sur un PC d'une manière autonome...
C'est un problème plutôt sympa, qui ne devrait pas être si facile que ça à résoudre...
Je pense qu'il faudrait se pencher sur les sessions et mener une étude pour savoir ce qu'il est possible de faire avec elles.
Au pire des cas, tu peux faire un test d'utilisation (à chaque fois que le membre change de page, il actualise son timestamp dans la BDD et toi, tu vas chercher si le timestamp a moins de 10min (par exemple) et si c'est le cas, tu considère que le membre est en ligne).
Cette solution est simple à mettre en place mais ne reflète pas vraiment la réalité...
Hors ligne
mic54800 a écrit:
on ne peut pas détruire un cookie si l'utilisateur n'est plus sur le site...
et ton serveur ne pourra pas chercher si un cookie existe sur un PC d'une manière autonome...
Sauf si il détecte la fermeture du navigateur et qu'il "balance" en arrière plan un script permettant de détruire celui-ci.
<html>
<head>
<script type="text/javascript">
<!--
function bonjour()
{
alert("Salut");
}
function aurevoir()
{
alert("Byby");
}
-->
</script>
</head>
<body onload="bonjour()" onUnload="aurevoir()">
<p>mon texte</p>
</body>
</html>On peut très bien imaginer que le site fonctionne avec 1 cookie et une session ou 2 sessions.
Une session de connexion normal pour loguer l'internaute au site.
Une session de présence sur le site.
L'internaute quitte le site ou ferme le navigateur » la session de présence par l'intermédiaire de la fonction aurevoir() change un paramètre en bd (0= absent et 1=présent) tout en gardant la session de connexion active.
L'internaute revient sur le site, la connexion est toujours active » la fonction bonjour() rentre en action et change un paramètre en bd.
Bon, ceci dit, ce n'est que de la théorie
...
Hors ligne
Donc si on met en apliquation en DBB :
<html>
<head>
<script type="text/javascript">
$user_id = $_SESSION['id'];
<!--
function bonjour()
{
mysql_query(" UPDATE membre SET
online='1'
WHERE
id_membre = '$user_id'
");
}
function aurevoir()
{
mysql_query(" UPDATE membre SET
online='0'
WHERE
id_membre = '$user_id'
");
}
-->
</script>
</head>
<body onload="bonjour()" onUnload="aurevoir()">
<p>mon texte</p>
</body>
</html>ca c'est possible ?
Dernière modification par tydoo (11-04-2011 20:47:12)
Hors ligne
@tydoo :
Là, tu me fais peur !!!!
PHP != JS
Tu nous colle du PHP dans du JS, et encore pire, tu ne déclare pas qu'il s'agit de PHP .... Beuuurk !!!
@c00lman :
En effet, ça se vaut, mais pour moi qui garde constamment mes dixaines d'onglets d'ouvert dans mon navigateur, ça veut dire que quand je met celui-ci en veille (la nuit) le site m'affichera en ligne si je ne me trompe pas ?
Dans ce cas, il faut coupler ton script à mon idée de timing (ça fait pas un peu le mec qui ne veut jamais avoir tord ? :p)
Au lieu d'utiliser PHP + SQL, je pensais à un fichier unique pour chaque membre qui contiendrait 1 ou 0 (ça serait plus simple à coder ça), on modifie ce script avec les fonctions bonjour() et aurevoir()...
Les idées fusent, il y aura peut-être un résultat intéressant à la fin ? ^^
Hors ligne
oui je sais pour le PHP et JS ^^ J’étais juste pour le principe xD ^^
Effectivement de tres bonne idée couplet pourrais aboutir au script PARFAIT ! Mais ca veut dire que il va faloir crée un fichier a chaque inscription .. Lourd derrière ..
Hors ligne
mic54800 a écrit:
@tydoo :
Là, tu me fais peur !!!!
moi aussi il me fait peur 
mic54800 a écrit:
En effet, ça se vaut, mais pour moi qui garde constamment mes dixaines d'onglets d'ouvert dans mon navigateur, ça veut dire que quand je met celui-ci en veille (la nuit) le site m'affichera en ligne si je ne me trompe pas ?
Exacte.
mic54800 a écrit:
Dans ce cas, il faut coupler ton script à mon idée de timing
Je pense que ça devrait être une bonne idée également. Du coup, il faudrait également signaler au membre en ligne inactif depuis trop longtemps qu'il est considéré comme "non présent" sur le site, ce qui engendre une action de sa part pour redevenir en "actif", donc présent.
mic54800 a écrit:
(ça fait pas un peu le mec qui ne veut jamais avoir tord ? :p)
Grave
arfff
Tu crois que le coup du fichier unique pour chaque membre serait mieux que PHP+SQL...? Perso. je n'en sais trop rien .. faut voir!
Maintenant qu'il y a les idées, faut voir si notre chers tydoo va si coller
ou pas
!
Hors ligne
Je parlais du fichier parce qu'il est plus simple de modifier un fichier en JS qu'une BDD non ?
J'ai comme un doute là ^^
Hors ligne
tydoo a écrit:
Effectivement de tres bonne idée couplet pourrais aboutir au script PARFAIT ! Mais ca veut dire que il va faloir crée un fichier a chaque inscription .. Lourd derrière ..
Lourd en quoi ?
Lors de l'inscription du membre :
<?php
$fp = fopen("membre-6.txt", 'w');
//le fichier existe
if(file_exists("$fp"));
{
//traitement du fichier
}
//Si le fichier n'existe pas encore il le crée automatiquement
?>Le code au dessus, c'est à vue de nez ...un gros "pifomètre".
fopen() : lire et écrire dans un fichier
tydoo a écrit:
Si si je vais m'y coller !!!!!!!! =) =)
Cool 
mic54800 a écrit:
Je parlais du fichier parce qu'il est plus simple de modifier un fichier en JS qu'une BDD non ?
Heuuuuuu, j'en sais rien du tout ... je suis toujours une grosse b*rne en Js 
Hors ligne
le code de singup est deja bien lourd ..
<?php
require_once('../script/config.php');
if(isset($_POST["Valider"])) {
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base")
or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données de connections.');
//DEFINITION DES VARIABLES
$login = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($_POST["login"]))));
$pass = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($_POST["pass"]))));
$pass2 = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($_POST["pass2"]))));
$email = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($_POST["email"]))));
$sex = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($_POST["sex"]))));
$age = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($_POST["age"]))));
$ville = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($_POST["ville"]))));
$classe = mysql_real_escape_string(htmlspecialchars(stripcslashes(trim($_POST["classe"]))));
$ip_singup = $_SERVER["REMOTE_ADDR"];
$date_singup = time();
if(empty($login)) {
header ('location: ../singup/?singup=v_pseudo');
}
elseif (strlen($login) < 4) {
header ('location: ../singup/?singup=4_pseudo');
}
elseif (strlen($login) > 15) {
header ('location: ../singup/?singup=15_pseudo');
}
elseif (empty($pass)) {
header ('location: ../singup/?singup=v_pass');
}
elseif (strlen($pass) < 4) {
header ('location: ../singup/?singup=4_pass');
}
elseif (empty($pass2)) {
header ('location: ../singup/?singup=v_pass2');
}
elseif ($pass != $pass2) {
header ('location: ../singup/?singup=pass_pass2');
}
elseif(empty($email)) {
header ('location: ../singup/?singup=v_email');
}
elseif($sex == 'Choisis :') {
header ('location: ../singup/?singup=v_sex');
}
elseif($age == 'Choisis :') {
header ('location: ../singup/?singup=v_age');
}
elseif (empty($ville)) {
header ('location: ../singup/?singup=v_ville');
}
elseif($classe == 'NULL') {
header ('location: ../singup/?singup=v_classe');
}
else {
//TEST LOGIN
$result = mysql_query("SELECT login FROM membre WHERE login='$login'");
if(mysql_num_rows($result)>=1) {
header ('location: ../singup/?singup=p_pseudo');
}
else {
$test_email_exite = mysql_query("SELECT email FROM membre WHERE email ='$email'" );
if(mysql_num_rows($test_email_exite)>=1) {
header ('location: ../singup/?singup=p_email');
}
else {
//INSIDE BDD MEMBRE
$in_bdd_membre= mysql_query(" INSERT INTO membre VALUES (
'',
'$login',
'$login',
'$pass',
'membre',
'membre',
'1',
'0',
'',
'0',
'$email',
'$ville',
'$age',
'$sex',
'$classe',
'1',
'',
'',
'0',
'0',
'',
'',
'',
'',
'',
'',
'0',
'1',
'10',
'$date_singup',
'$ip_singup',
'$date_singup',
'$ip_singup'
) ");
if (!$in_bdd_membre) {
die('Requête invalide (bdd membre) : ' . mysql_error());
}
else {
$recup_id_user = mysql_query("SELECT * FROM membre WHERE login ='$login'" );
while($b1 = mysql_fetch_array($recup_id_user)) {
$user_id = $b1['id'];
}
//----------------------------
//INSIDE BDD FEED1
//AVATAR
$in_bdd_feed_avatar = mysql_query(" INSERT INTO feed VALUES (
'',
'$user_id',
'$user_id',
'$date_singup',
'avatar',
'',
'0',
'0',
'0'
)");
//sing up
$in_bdd_feed_singup = mysql_query(" INSERT INTO feed VALUES (
'',
'$user_id',
'$user_id',
'$date_singup',
'compte',
'singup',
'1',
'0',
'0'
)");
//photo
$in_bdd_feed_photo = mysql_query(" INSERT INTO feed VALUES (
'',
'$user_id',
'$user_id',
'$date_singup',
'photo',
'',
'0',
'0',
'0'
)");
}
if (!$in_bdd_feed_photo && !$in_bdd_feed_singup && !$in_bdd_feed_photo) {
die('Requête invalide (bdd feed avatar): ' . mysql_error());
}
else {
$fichier = fopen("../script/tipsy.js","a+");
$ecriture_fichier = fwrite($fichier,"\$(function(){\$('#home_point".$user_id."').tipsy({gravity:'nw'});});"."\r");
fclose($fichier);
}
if (!$ecriture_fichier) {
die('Requête invalide (ECRITURE FICHIER) : ' . mysql_error());
}
else {
//LOGIN ET CLOSE
session_start();
$_SESSION['login'] = $login;
$_SESSION['id'] = $user_id;
mysql_close();
header ('location: step/1');
}
}}}}
else {
header('location: ../403');
}
?>Hors ligne
Penses tu que ce sois plus lourd que toutes les images que tes futurs membres vont uploader sur chacun de leurs comptes respectifs ..?
En faite c'est toi qui voit, nous on t'apporte d'éventuelles solutions ensuite c'est toi qui gère la chose comme tu l'entends
.
Hors ligne
1024 membres = 1024 fichiers de 1ko = 1mo de fichier en tout ....
Avant que ton site n'atteigne déjà 1024 membres, de l'eau aura coulé sous les ponts ^^
Ceci-dit, je ferais des testes quand j'en aurais le temps (en ce moment, j'ai trop de boulot pour ça...)
Hors ligne
@tydoo,
Pourquoi tu renvoies les erreurs du formulaire par un "header location" au lieu d'utiliser une simple variable?
if(empty($login)) {
$erreur_login = 'Login manquant!';
}Il y a un truc super désagréable dans ton formulaire d'inscription ... c'est la perte des informations saisies lors d'une erreur, il faut tout se retaper à chaque fois!
Hors ligne
Ba enfaite le script d'inscription se trouve sur une page anexe a la page singup. Donc pour revenir a la page de singup, je doit revenir sur la page par un header
Hors ligne
Enfaite j'ai des test live pour voir si les info sont bonne. Donc ca aide vraiment le membre a cliquer sur valider et de verifier si tout marche bien
http://tydoo.free.fr/singup/
Hors ligne
J'avais remarqué tes contrôles lors de la saisie et c'est plutôt pas mal
mais moi je te parle du faite que si il y a une erreur lors de l'inscription, le membre est obligé de tout recommencer puisque ton formulaire ne garde pas en mémoire la saisie.
Sinon pour ton site, j'ai un meilleurs titre .. Faceschool
... il y a comme qui dirait une légère ressemblance avec un site très connut...
Hors ligne
Propulsé par PunBB
© Copyright 2007
Forum créer un site