Aller au contenu

scripts php (demande de l'aide)


sitti

Sujets conseillés

bonjour à tous !

j'ai un problème énorme et j'ai besoin d'aide.

je vous explique:

j'ai une application php où beaucoup d'utilisateurs ont accès

je veux developper un script en php qui permet de calculer le temps de travail de chacun , autrement le temps que chacun reste connecté parce qu'il sont tous dotés d'ordinateur et l'application fonctionne en intranet.

j'ai imaginé ceci: un compteur ou un chronometre se lance quand un utilisateur est connecté et commence à compter jusqu'à ce que cet utilisateur se deconnecte.

pouriez vous m'aider à demarrer?

je vous remercie d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour et bienvenue sur le HUb !

C'est simple à faire en php :)

Il faut que tu repères l'endroit dans tes sources où tes utilisateurs se connectent, et que tu y appelles la fonction time().

Par exemple comme ceci:

$debut=time();

Ensuite tu stockes cette variable dans une session...

Et au moment où l'utilisateur se déconnecte, tu appelles la fonction time() à nouveau comme ceci:

$fin = time();

Le temps de connexion sera égal à $fin - $_SESSION['debut'] (en secondes).

Si tu utilises des sessions, il faudra que toutes tes pages comportent l'instruction

session_start();

tout au début (avant tout écho d'un caractère, quel qu'il soit, vers le navigateur).

La date et l'heure du début de connexion seront dans ce cas accessibles sur toutes les pages à travers la variable $_SESSION['debut']

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Ceci est une bonne solution, la seule limite est que si l'utilisateur ferme son navigateur sans cliquer sur le bouton "déconnecter", tu ne pourras pas lancer le script de déconnexion.

Il te faut donc éduquer tes utilisateurs.....pas gagné !

Lien vers le commentaire
Partager sur d’autres sites

bonjour à tous

je vous remercie beaucoup et je vous suis trés reconnaissante.

en fait j'ai télechargé des cours en particulier sur les fonctions qui concernent le temps, durée....

je vois bien ce que vous me proposer et je vous remercie tous mais je gallère trop, sur la façon de stockage .

en gros, je ne vois pas comment je vais stocker ce temps qui sera appelé lors de la connexion et comment je vais récuperer la durée(tpsfin-tpsdebut) en fin de connexion(lors de la deconnexion).

pouriez vous continuer à m'aider làdessus.

je vous remercie de nouveau.

Lien vers le commentaire
Partager sur d’autres sites

Pour faire ce que tu cherches, je pense que tu devras utiliser AJAX.

Un évènement en "onload" lance un timer en javascript, et un autre en "onunload" récupère cette valeur, et la stocke (en base, par exemple).

Par contre, pour que ça fonctionne, il faut qu'aucun de tes employés ne pense à désactiver le JavaScript ...

Lien vers le commentaire
Partager sur d’autres sites

bonjour à tous

je tiens toujours à vous remercier.

si les sessions permettent le stockage temporaires, comment, en fait avec kelfonction il faut le faire?

merci, de votre aide.

bonjour

en particulier pour M. captain_torche

merci beaucoup mais je ne connais rien en ajax

merci

Lien vers le commentaire
Partager sur d’autres sites

C'est bien de vouloir se mettre au php, mais il y a quand même un minimum a savoir ne serait ce qu'en recherche d'informations, une simple recherche sous google avec comme expression PHP + session te permet de trouver grand nombre de sites qui t'explique comment faire, comme par exemple ce dernier : http://www.phpdebutant.org/article69.php

Lien vers le commentaire
Partager sur d’autres sites

bonjour à tous!

je vous remercie de votre aide et je vous suis trés reconnaissant M. Dadou.

je débute dans php, voire memece que je veux est madeuxième application en php.

en fait j'ai developpé une application en php qui gère les entré-sortie des livres dans une bibliàthèque.

mais aujourdhui c'est la première fois que je veux travailler avec des sessions.

c'est surtout pour cela que je galère.

Lien vers le commentaire
Partager sur d’autres sites

bonjour

je vous rappelle mon but: je veux calculer le temps passé entre la connexion et la deconnexion d'un utilissteur.

j'utilise php4, windows, firefox.

on m'avait conseillé ceci:

reperer l'endroit de connexion et appeler la fonction time et puis stocker la valeur dans une session:

$debut=time();

$_SESSION['debut'] = time();

appeler à nouveau la fonction time au moment où l'utilisateur se deconnecte.

$fin = time();

etaprés mon temps je l'aurai de cette façon:

$duree = $fin-$_SESSION['debut'];

mais on sait bien que lorsque l'utilisateur se deconnecte là, la session est detruite , comment pourai-je faire ?

quelcun peut me dire quelque chose làdessus car j'avais essayé ça ne marche et je me suis rendue compte de cela.

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

Principes fondamentaux pour que ça marche :

1/ arrivée de l'internaute - connexion de l'internaute via un formulaire (obligatoire) - début session - stockage temporaire dans session

2/ ....

3/ déconnexion de l'internaute via un formulaire (obligatoire) - recup de l'heure - stockage définitif dans BDD

voilà...

Lien vers le commentaire
Partager sur d’autres sites

bonjour

je vous rappelle mon but: je veux calculer le temps passé entre la connexion et la deconnexion d'un utilissteur.

j'utilise php4, windows, firefox.

on m'avait conseillé ceci:

reperer l'endroit de connexion et appeler la fonction time et puis stocker la valeur dans une session:

$debut=time();

$_SESSION['debut'] = time();

appeler à nouveau la fonction time au moment où l'utilisateur se deconnecte.

$fin = time();

etaprés mon temps je l'aurai de cette façon:

$duree = $fin-$_SESSION['debut'];

mais on sait bien que lorsque l'utilisateur se deconnecte là, la session est detruite , comment pourai-je faire ?

quelcun peut me dire quelque chose làdessus car j'avais essayé ça ne marche et je me suis rendue compte de cela.

--------------------

merci

mais là je pense que je suis vraiment perdue car pour le debut desession ça marche : via un formulaire l'internaute entre son nom d'utilisateur et son mot de passe pour se connecter.

mais lors de la deconnexion, juste il clique sur un bouton deconnexion. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!

d'autre part, ça se fait comment les stockage definitifs, car mois je connais $_session['variable']...... pour stocker et j'ai cherché sur le net la fonction ou la minère dont on doit proceder pour stocker definitivement dans bd je ne trouve pas.

avez vous une idée???????

Lien vers le commentaire
Partager sur d’autres sites

euh, c'est un peu confus pour moi ^^

ton premier probleme lors de la deco n'en est pas un... au moment ou l'utilisateur utilise le bouton de deconnexion, la page sur laquelle il arrive doit contenir le code pour recuperer la variable de session, et faire la difference entre le time() courant et celle ci. En aucun cas la variable de session ne disparait... c'est fait pour ^^

Sinon pour stocker dans des bases de donnees, en PHP le mieux reste les BD Mysql, la encore je te renvoie sur le site de w3schools.

Mais il faut savoir que les acces BD prennent vite beaucoup de temps et rallongent le chargement des pages... Apres c'est un choix ^^ on peut toujours stocker en dur dans des fichiers textes bruts, (la encore w3schools est ton ami ^^ )

Modifié par Nanane
Lien vers le commentaire
Partager sur d’autres sites

Salut,

Bon, ma première idée serait d'utiliser une BD avec une table membre et un champ qui cumule le temps qu'il était connecté et une table session avec une id_session, login, time

A la connexion, un script rempli la table session

A chaque chargement de page, un script met à jour le cumul du membre et la table session si il est connecté (si c'est lui qui éffectue ce changement de page) et un script qui fait qu'a chaque chargement d'une page il vérifie que toutes les sessions sont toujours valables (que la personne est toujours connecté au bout d'un temps définis) sinon mise à jour de son temps total de connexion et suppression de la session dans la table session !

Ainsi, même si un utilisateur se conncete, si il ne navigue pas son cumul n'augmente pas !

C'est un peu le principe qu'utilise les forums pour connaitre les membres en ligne !

Tu peux utiliser ça avec les SESSIONS ou COOKIES ou encore par l'url ...

Lien vers le commentaire
Partager sur d’autres sites

merci beau, bonnes idées

mais pour toi, YannCo, ton idée est trés mais pas trés pratique pour mon application qui existe déjà, je l'ai dejà essayé et ça colle pas.

pour toi Nanane, ça a l'air d'y aller ton idée , je me lance pour voir mais j'ai constaté une chose : ce que les utilisateurs se loguent dans une page appelée ''' php_conges ''' dont l'url: http://localhost/php_conges/ , c'est où on arrive tu fais easyphp/weblocal/php_conges

et quand un utilisateur a cliqué sur deconnexion, il entre dans cette même page , alors là je vais finir par mettre le code qui recupère l'heure de connexion et celle de deconnexion dans la même page.

tu imagine un peu ce qui passera!!

d'autre part, j'utilise mysql comme base de donnée.

merci de ton aide, j'aurai aimé à ce que tu continue car gràce à toi j'ai l'impression que ça ira.

Lien vers le commentaire
Partager sur d’autres sites

Ouai j'ai une grande capacité a faire croire qu'un projet avance ^^ c'est la fac qui m'a appris ca...

Et compte sur moi pour continuer ^^ ca ne me derange aucunement de passer mon temps libre a faire des applis PHP inutiles...

Donc si ca peut servir a quelqu'un. bref...

Pour ton souci d'avoir tout le code dans la meme page... Je crois que tu pensais que le script allait calculer l'heure de connexion et de deconnexion en meme temps...

Mais il suffit de mettre un if ^^ et de tester quel formulaire a été rempli.

ca donnerai un truc du style :

<?
...
if( $_POST["connexion"] )
{
creation de variable session = time()
}
elseif($_POST["deconnexion"])
{
$decotime = time();
$cotime = variable de session;
$elapsed = $decotime - $cotime;
echo "vous avez passé ".$elapsed." secondes sur le site"
}
...
?>

Les noms des variables "connexion" et "deconnexion" correspondent au nom du bouton de soumission du formulaire correspondant.

Pour le formulaire de connexion tu devra avoir dans cette exemple

<form method="post">
...
<input type="submit" name="connexion" value="Login">
</form>

et pour celui de deco :

<form method="post">
...
<input type="submit" name="deconnexion" value="Logout">
</form>

J'espere avoir bien compris la question ^^ sinon j'ai repondu dans le vent ...

PS:

C'est bien de vouloir se mettre au php, mais il y a quand même un minimum a savoir ne serait ce qu'en recherche d'informations, une simple recherche sous google avec comme expression PHP + session te permet de trouver grand nombre de sites qui t'explique comment faire, comme par exemple ce dernier : http://www.phpdebutant.org/article69.php

+1. mais -1 en meme temps... Ce forum a principalement pour but le partage des connaissances (je pense)

Modifié par Nanane
Lien vers le commentaire
Partager sur d’autres sites

bonjour à tous vous etes si courageux!

tu pourais etre un peu claire car moi avec le javascript ça colle pas mais je regarde descours, sur le net et surtout je meurs de la fatigue morale je regrette d'exister.

ça fait un mois de plus que je cherche et que je ne trouve pas pour ce problème.

comme vous lesavez avant de faire quoi que ce soit je doit stocket aprés qu'un utilisateur s'est connecté, son nom d'utilisateur(u_login), la date du jour(datejour), son heure de connexion(cotime), son heure de deconnexion(decotime) dans la table conges_users_log(id_log, u_login, dtaejour, cotime, decotime, elapsed(elapsed=decotime-cotime)).

j'ai fait ce code , j'arrive maintenant à me connectr , il y'a pas des erreurs, mais le code ne stocke rien dans la table conges_users_log.

ce code je l'ai inseré dansla page de session comme, suit:

-------------------------------------------------------------

voilà le code de ma page de session et ce qui est entouré par //-----------sitti //------------sitti , c'est mon code.

<?php

//
// MAIN
//

/*** initialisation des variables ***/
$session_username="";
$session_password="";
/************************************/

//
// recup du num de session (mais on ne sais pas s'il est passé en GET ou POST
$session=(isset($_GET['session']) ? $_GET['session'] : ((isset($_POST['session'])) ? $_POST['session'] : "") ) ;
/*******************sitti
******************************************/
$DEBUG=FALSE;
//$DEBUG=TRUE;

if($DEBUG==TRUE) { print_r($_SESSION); echo "<br><br>\n"; }

if ($session != "")
{
if(session_is_valid($session) == TRUE)
{
session_update($session);
//--------------------------------sitti
if($session=(isset($_GET['session']) ? $_GET['session'] : ((isset($_POST['session'])) ? $_POST['session'] : "")))
{
//connexion mysql
$db = mysql_connect('localhost', 'dbconges','motdepasse') or die('Erreur de connexion '.mysql_error());
//selection de la base
mysql_select_db('db_conges', $db) or die('Erreur deselection '.mysql_error());
//code
$cotime = time();
$u_login = "session_username";
$_SESSION['cotime']="cotime";
$_SESSION['u_login']="u_login";
$datejour = date("Y-m-d");
$sql = "INSERT INTO conges_users_log(u_login,datejour,cotime)";
//$sql .=
$sql .="VALUES('$u_login','$cotime','$datejour')";
}
//---------------------------------------- sitti

}
else
{
session_delete($session);
$session="";
$session_username="";
$session_password="";
$_SESSION['config']=init_config_tab(); // on recrée le tableau de config pour l'url du lien

echo "<center>\n";
echo "Pas de session ouverte<br>\n";
echo "Veuillez <a href='".$_SESSION['config']['URL_ACCUEIL_CONGES']."/index.php' target='_top'> vous authentifier</a>\n";
echo "</center>\n";

exit;
}
}
else // $session == ""
{
if(isset($_POST['session_username'])) { $session_username=$_POST['session_username']; }
if(isset($_POST['session_password'])) { $session_password=$_POST['session_password']; }

if ( ($_SESSION['config']['how_to_connect_user'] == "CAS") && ($session_username != "admin") )
{
$usernameCAS = authentification_passwd_conges_CAS();
if($usernameCAS != "")
{
if(session_id()!="")
session_destroy();

// on initialise la nouvelle session
session_create($usernameCAS);

}
else //dans ce cas l'utilisateur n'a pas encore été enregistré dans la base de données db_conges
{
echo "<center>\n";
echo "Il n'existe pas de compte correspondant à votre login dans la base de données de PHP_CONGES<br>\n";
echo "Contactez l'administrateur de php_conges";
echo "</center>\n";
}
}
else
{
if (($session_username == "") || ($session_password == "")) // si login et passwd non saisis
{
// SAISIE LOGIN / PASSWORD :
session_saisie_user_password("", "", ""); // appel du formulaire d'intentification (login/password)
exit;
}
else
{
// AUTHENTIFICATION :

// le user doit etre authentifié dans la table conges (login + passwd) ou dans le ldap.
// si on a trouve personne qui correspond au couple user/password

if ( ($_SESSION['config']['how_to_connect_user'] == "ldap") && ($session_username != "admin") )
{
if(session_id()!="")
session_destroy();

if (authentification_ldap_conges($session_username,$session_password) != $session_username)
{
$session="";
$session_username="";
$session_password="";

$erreur="login_passwd_incorrect";
session_saisie_user_password($erreur, $session_username, $session_password); // appel du formulaire d'intentification (login/password)
exit;
}

if ((authentification_ldap_conges($session_username,$session_password) == $session_username) && ($session_username != ""))
{
if (valid_ldap_user($session_username)==TRUE) // LDAP ok, on vérifie ici que le compte existe dans la base de données des congés.
{
// on initialise la nouvelle session
session_create($session_username);
}
else//dans ce cas l'utilisateur n'a pas encore été enregistré dans la base de données db_conges
{
$erreur="login_non_connu";
session_saisie_user_password($erreur, $session_username,$session_password); // appel du formulaire d'intentification (login/password)
exit;
}
}
} // fin du if test avec ldap
elseif ($_SESSION['config']['how_to_connect_user'] == "dbconges")
{
if(session_id()!="")
session_destroy();

if (autentification_passwd_conges($session_username,$session_password) != $session_username)
{
$session="";
$session_username="";
$session_password="";

$erreur="login_passwd_incorrect";
session_saisie_user_password($erreur, $session_username,$session_password); // appel du formulaire d'intentification (login/password)
exit;
}

if ((autentification_passwd_conges($session_username,$session_password) == $session_username) && ($session_username != ""))
{
// on initialise la nouvelle session
session_create($session_username);
}
}
}
}

}

?>

ayez vous unesur l'emplacement , car aucune erreur ne s'affiche je suppose que peut c pas là où je dois placer lecode.

merci de votre aide.

Edit captain_torche : merci d'utiliser la balise CODEBOX pour présenter les codes longs

Lien vers le commentaire
Partager sur d’autres sites

$sql = "INSERT INTO conges_users_log(u_login,datejour,cotime)";

//$sql .=

$sql .="VALUES('$u_login','$cotime','$datejour')";

il n'y a pas de ; a la fin de ta requete SQL (des fois ca joue)

Et je crois qu'il manque un espace dans ta requete, au moment ou tu fais le .= tu as la parenthèse fermante qui se colle a VALUES, ca aussi ca peut jouer...

Mais surtout je crois qu'il te manque une ligne ^^

mysql_query($sql);

Elle sert a exécuter la requete Tu m'etonnes que ta base n'enregistre rien héhé

Place la une fois que ton $sql est complet. et n'oublie pas de recuperer le resultat dans une variable pour pouvoir verifier que la requete s'est bien effectuée.

A plus sous l'bus

PS :

Pour eviter de dire des betises... j'ai repris une requete d'insertion toute bete d'un de mes vieux scripts :P :

$query = "INSERT INTO `LocationInternet` ( `id` , `nom` , `heure` , `minute` ) VALUES ( 'W', 'X', 'Y', 'Z');";

ATTENTION :

entre INTO ET VALUES c'est des apostrophes inversés (backtick) : `

et apres VALUES c'est des apostrophes : '

je sais pas si ca peut changer quelquechose ca...

Et maintenant que j'y pense, ce script a servi a calculer les temps d'utilisation des postes d'un cyber café ^^ sensiblement le meme sujet que toi lol

Modifié par Nanane
Lien vers le commentaire
Partager sur d’autres sites

Ben je vais me feliciter aussi alors :P une fois n'est pas coutume...

Content en tout cas d'avoir peut etre servi. Si tu as d'autres problemes n'hesites pas :)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines plus tard...
mmh, pas de nouvelles, bonne nouvelle?

--------------------

bj

t'es bien

en fin ça marche mais j'obtiens le temps en seconde et j'aurais aimé le trouver en min.

t'as une idée?

Lien vers le commentaire
Partager sur d’autres sites

Ben je vais me feliciter aussi alors :P une fois n'est pas coutume...

Content en tout cas d'avoir peut etre servi. Si tu as d'autres problemes n'hesites pas :)

pas du tout , moi je dirais oui

et je reconnais vos aides!!!

Lien vers le commentaire
Partager sur d’autres sites

en fin ça marche mais j'obtiens le temps en seconde et j'aurais aimé le trouver en min.

t'as une idée?

diviser par 60 pour avoir les minutes, et encore par 60 si tu veux des heures.

Exemple : 35624s

35624 / 60 / 60 = 9.895555555555 heures

Ca te fait donc 9h et des poussieres

pour connaitre les poussieres tu ne gardes que la partie décimale (il existe une fonction pour ca, je ne sais plus laquelle) et tu la multiplies par 60.

donc ici tu as 9h d'un coté et 0.8955555555 poussieres

0.895555555 x 60 = 53.733333333333 minutes

donc 9h 53 minutes et encore des poussières... une fois de plus tu gardes la partie décimale et tu multiplies par 60.

0.733333333 x 60 = 44 secondes :)

donc !!!

35624 secondes seraient équivalentes a 9heures 53minutes et 44secondes? CQFD :smartass:

Mais tu commencerais presque a me faire douter de tes capacités de raisonnement mathématique ^^

une conversion secondes -> minutes -> heures... c'est pas la fin du monde :D

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...