time out/champs/php/monnai-heur/blems

time out/champs/php/monnai-heur/blems - PHP - Programmation

Marsh Posté le 04-02-2006 à 19:38:57    

bonsoir a vous tous,
 
voila , j'expose mes divers soucis.
Pour commencer , il s'agit plutot d'une question, voila sur mon site integralement php/mysql avec session , je desirais que l'internaute apres un laps de temps de fasse delloguer , il faut parametré le php.ini , j'ai chercher des renseignements mais ca ne fonctionne pas, tout d'abord est ce qu'en local cela marche ou pas? ensuite faut-il mettre un code sur les page php pour ce "deloguage"?.
 
ensuite , sur mon site , j'aimerais faire un style de diverses action qui neccesite de l "argent virtuel" que l'on acquerirai avec les connections au site, exemple 1heure de connection = 100credits . j'ai chercher , je ne trouve pas, est ce que ca se situe au niveau du php.ini ou dans les script avec un champs 'credits' creer?je ne demande pas un script tout fait qui m'avancerais a rien , a ne rien comprendre, si des personnes peuvent m'aidez je les remercierais du fond du coeur!
 
 
merci  
 
A+ :)

Reply

Marsh Posté le 04-02-2006 à 19:38:57   

Reply

Marsh Posté le 06-02-2006 à 12:37:33    

ben je serais toi je créerai une variable de session qui serait le mktime() de la seconde d'acces au site... que je teste a chaque page,
 

Code :
  1. function CheckSession ()
  2.        {
  3.        $hour  = Date ("H" );
  4.        $minute = Date ("i" );
  5.        $second = Date ("s" );
  6.        $month  = Date ("n" );
  7.        $date  = Date ("j" );
  8.        $year  = Date ("Y" );
  9.        // On vérifie si la session est activée
  10.        if(isset($_SESSION['StartTime'])
  11.              {
  12.              // La session expire dans $TimeOut secondes
  13.              $TimeOut = 3600 ;
  14.              $ExpireTime = $_SESSION['StartTime'] + $TimeOut ;
  15.              // On teste
  16.              if(mktime ($hour, $minute, $second, $month, $date, $year) > $ExpireTime )
  17.                           {
  18.                           // Session expirée
  19.                           session_destroy();
  20.                           header("location:session_timeout.php" );
  21.                           }
  22.              }
  23.        else
  24.              {
  25.              // Le visiteur vient d'arriver sur le site
  26.              $_SESSION['StartTime'] = mktime ($hour, $minute, $second, $month, $date, $year);
  27.              }
  28.       }


Ca c'est pour le TimeOut de session :) A mettre en tete de chaque fichier PHP. Dans le cas ou evidemment tu utilises une identification par session :)
 
Meme principe pour ton chrono.... Mais au lieu de detruire la session au bout de $Timeout secondes, tu fais une requete SQL ;)


Message édité par the_bigboo le 06-02-2006 à 12:37:59
Reply

Marsh Posté le 06-02-2006 à 17:48:00    

merci  
 
j'ai tester , simplement en mettant se script que tu m'as donner , mais meme apres 20 minute (en prenant $timeout = 60 ), si je reactualise la page elle revien sans probleme.Est ce que je dois changer alors des parametres dans le ini?
 
Pour ce qui est des "credits" et du calcule temps , je dois remplacer "session_destroy(); par une requete sql , cest bien ca?alors il faudra creer un champs "credit" dans ma base de donnee?
 
merci a toi :)


Message édité par rut le 06-02-2006 à 17:48:56
Reply

Marsh Posté le 06-02-2006 à 19:55:13    

touche rien nulle part !

Reply

Marsh Posté le 06-02-2006 à 21:54:59    

ok , mais je desire que la session soit destroy apres 10 minutes d'inactivité jusqua la prochaine action ou refresh
 
par contre "Meme principe pour ton chrono.... Mais au lieu de detruire la session au bout de $Timeout secondes, tu fais une requete SQL " je ne comprend pas , si je ne peux toucher a rien?:s

Reply

Marsh Posté le 07-02-2006 à 01:01:13    

en disant touche a rien je parlais de la modification du PH.ini !!
 
la fonction tu l'adapte :)
 
10 minutes = 60 secondes ; tu mets $TimeOut = 600 ; dans la fonction et basta :)

Reply

Marsh Posté le 07-02-2006 à 04:55:52    

pkoi dans ton script tu passes pas tout simplement part un time () ?  :??:  
y a 0 interet à stocker le jour, le mois, l'année .. le timestamp c'est fait pour ça

Reply

Marsh Posté le 07-02-2006 à 08:46:28    

Une mauvaise habitude, car apres quand j'utilise le mktime, j'utilise aussi ces attributs de date() , donc oui , time() suffit largement, j'ai mis mktime par habitude ;)

Reply

Marsh Posté le 07-02-2006 à 17:40:48    

salut
 
voila j'ai tester mais ca ne fonctionne pas , apres meme 1 heure , si on reactualise , la page revien sans probleme :s
 
pour se qui est du niveau , +100creds par heure de connection , je ne vois pas quel requete sql faire
 
:)

Reply

Marsh Posté le 07-02-2006 à 18:30:06    

c'est bête : nous non plus ! Pas de structure de table et on ne lis pas dans le marc de café ici :o

Reply

Marsh Posté le 07-02-2006 à 18:30:06   

Reply

Marsh Posté le 07-02-2006 à 18:43:38    

je dois donc fournir plus d'info? je n'ai aucune table de creer pour ce qui est des "credits"

Reply

Marsh Posté le 07-02-2006 à 22:22:58    

Tu as une structure de projet au moins :??:

Reply

Marsh Posté le 07-02-2006 à 22:59:53    

oui , 1an et 2mois que je programme sur ce projet , mais la avant de le mettre en ligne , j'veux que mon site soit ok avant de louer un server dedie , ce serais bete de perdre du temps inutile si je n'ai pas fait tout mon site :)
 
par contre pour ce qui est du timeout , apres 10 minute d'inactiviter , j'aimerais envoyer l internaute sur la page de login , ce que j'ai assayer avec ton script qui ne donne guere de succes , ensuite pour les "credits" je n'ai rien fait ,puisque je n'ai sais comment faire pour que 1heur de connection est egal a Xcredits , je devrais certainement creer une table ou champ "credit" , mais je ne sais pas comment etablir 1heure=Xcredit qui ajouteront Xcredit dans le champs "credit" a l' 'id_user'  
 
:)

Reply

Marsh Posté le 07-02-2006 à 23:52:05    

comment marche ton systeme d'authentification ? Par session ?? Par cookie ??

Reply

Marsh Posté le 08-02-2006 à 15:11:15    

voila enfait l'internaute se connecte sur login.php , il y met son login+mdp le tout present dans la base de donnee et apres verification , il est rediriger sur une page x.php  
 
voici ce que j'ai a chaque page pour verifier si l'user est loguer:
 
session_start();  
if (session_is_registered("authentification" )){
}
else {
header("Location:index.php?erreur=intru" );  
}
 
donc en principe je pense que c'est par session non? car je n'utilise aucune fois $setcookie ou une de ces variantes
 
:)

Reply

Marsh Posté le 08-02-2006 à 18:46:42    

as tu commencé toutes tes pages par session_start() ????

Reply

Marsh Posté le 08-02-2006 à 18:58:21    

affirmatif

Reply

Marsh Posté le 08-02-2006 à 19:50:05    

adapte le script pour qu'il affiche le temps restant avant le timeout, ca te fera deja un bon debug, apres tout je ne vais pas le debugger , je vais te guider et tu arrangeras ca tout seul comme un grand !
 
pour savoir developper , il faut savoir faire des erreurs , et donc débuguer !

Reply

Marsh Posté le 08-02-2006 à 21:06:27    

oui , mais ce qui me semble bizarre c'est qu'il n'y a pas de champs a faire sur la base de donnee?

Reply

Marsh Posté le 08-02-2006 à 21:49:01    

non... pourquoi voudrait tu qu'elle intervienne ? Cette fonction est capable de stocker ta date d'arrivée sur le site, et celle actuelle... C'est tout ce dont on a besoin !
 
La redirection ne se fait pas. Donc soir les variables sont mal enregistrées , soit elles ne se metent pas a jour :) , affiche $ExpireTime et ce que vaut mktime ($hour, $minute, $second, $month, $date, $year), et tu compares, tu devrai avoir une idée plus précise du probleme

Reply

Marsh Posté le 08-02-2006 à 22:37:42    

quelque chose ainsi : select mktime ... mais puisqu il y a pas de table etc :s , je ne vois pas quoi faire.
 
l'internaute se connecte sur login.php , verif etc et rediriger sur buro.php sur lequel je mets ton script , je me demande si le probleme ne vient pas sur la page login.php , car sur celle si je declare toute les variable de session , genre :
   $_SESSION['nom'] = $row_verif['nom'];  
   $_SESSION['prenom'] = $row_verif['prenom'];  
   $_SESSION['login'] = $row_verif['login'];
peut etre que je devrais mettre un genre de :
$_SESSION['timeout'].... ?

Reply

Marsh Posté le 08-02-2006 à 22:44:48    

connais tu le principe de chacune des fonctions que j'ai utilisé dans ma fonction en haut ??

Reply

Marsh Posté le 08-02-2006 à 22:48:22    

Non , enfin je ne comprend pas exactement , je ne vois pas comment afficher le $expiretime

Reply

Marsh Posté le 08-02-2006 à 23:00:24    

echo $expiretime ;
 
Tout bettement , tu le rajoute a l'interieur de la fonction ;) juste apres l'attribution de sa valeur :)

Reply

Marsh Posté le 08-02-2006 à 23:10:16    

<?php
function CheckSession ()
{
$hour  = Date ("H" );
$minute = Date ("i" );
$second = Date ("s" );
 $month  = Date ("n" );
 $date  = Date ("j" );
 $year  = Date ("Y" );
 // On vérifie si la session est activée
 if(isset($_SESSION['StartTime']))
 {
 // La session expire dans $TimeOut secondes
 $TimeOut = 600 ;
 $ExpireTime = $_SESSION['StartTime'] + $TimeOut ;
 
 
 // On teste
 if(mktime ($hour, $minute, $second, $month, $date, $year) > $ExpireTime )
 {
 // Session expirée
 session_destroy();
 header("location:index.php" );
 }
 }
 else
 {
 // Le visiteur vient d'arriver sur le site
 $_SESSION['StartTime'] = mktime ($hour, $minute, $second, $month, $date, $year);
 }
 }  
echo " ".$ExpireTime." ";
 ?>
 
donne : Notice: Undefined variable: ExpireTime in c:\weblocal\test\buro.php on line 46
 
ligne 46 egale a echo...

Reply

Marsh Posté le 08-02-2006 à 23:21:38    

dans la fonction !!!!!!!!

Code :
  1. echo $ExpireTime ;


Avant l'accolade !


Message édité par the_bigboo le 08-02-2006 à 23:22:57
Reply

Marsh Posté le 09-02-2006 à 13:26:42    

j'ai essayer mais il n'affiche rien , si je fait echo "eee"; ca n'affiche rien aussi , enfin je ne sais pas , j'ai fait echo"eee"; histoire de voir si expirtime n'as pas de valeur ou si l'echo ne va pas

Reply

Marsh Posté le 09-02-2006 à 13:41:52    

regarde ce que je t'ai écris....

Code :
  1. function CheckSession ()
  2.        {
  3.        $hour  = Date ("H" );
  4.        $minute = Date ("i" );
  5.        $second = Date ("s" );
  6.        $month  = Date ("n" );
  7.        $date  = Date ("j" );
  8.        $year  = Date ("Y" );
  9.        // On vérifie si la session est activée
  10.        if(isset($_SESSION['StartTime'])
  11.              {
  12.              // La session expire dans $TimeOut secondes
  13.              $TimeOut = 3600 ;
  14.              $ExpireTime = $_SESSION['StartTime'] + $TimeOut ;
  15.              echo 'Ca vaut :'. $ExpireTime ;
  16.              echo var_dump($ExpireTime);
  17.              // On teste
  18.              if(mktime ($hour, $minute, $second, $month, $date, $year) > $ExpireTime )
  19.                           {
  20.                           // Session expirée
  21.                           session_destroy();
  22.                           header("location:session_timeout.php" );
  23.                           }
  24.              }
  25.        else
  26.              {
  27.              // Le visiteur vient d'arriver sur le site
  28.              $_SESSION['StartTime'] = mktime ($hour, $minute, $second, $month, $date, $year);
  29.              }
  30.       }


tu affiches apres l'attribution de la valeur ! Dis moi ce que ce t'écris...


Message édité par the_bigboo le 09-02-2006 à 13:43:08
Reply

Marsh Posté le 09-02-2006 à 15:11:45    

T'as pensé à mettre un "session_start()" quelque part?

Reply

Marsh Posté le 09-02-2006 à 15:21:21    

Un exit après le header ne serait pas plus judicieux??

Reply

Marsh Posté le 09-02-2006 à 15:47:11    

le header met fin a l'exécution de toute facon, ajouter un exit serait superflu ! :/

Reply

Marsh Posté le 09-02-2006 à 16:40:07    

@the_bigboo : si je mets ton code avec les echo , cela n'affiche rien :s
 
@omega2 : oui il y a un session_start , j'ai ceci avant le script de thebigboo :
 
 
session_start();  
if (session_is_registered("authentification" )){
}
else {
header("Location:index.php?erreur=intru" );  
}

Reply

Marsh Posté le 09-02-2006 à 16:53:58    

rut a écrit :


session_start();  
if (session_is_registered("authentification" )){
}
else {
header("Location:index.php?erreur=intru" );  
}


Ca c'est pas bien du tout !! :o caca beurk ! :vomi:
Fais plutot :

Code :
  1. if (!isset($_SESSION['authentification']))
  2.       {
  3.       header("Location:index.php?erreur=intru" ); 
  4.       }


Plus court, plus clair , juste l'essentiel ! mettre une condition qui ne fais rien , ca ne sert a rien !
ensuite s'il n'affiche rien c'est qu'une erreur a provoqué un exit , place des echo "gygy" un peu partout dans ton code pour savoir ou ca bloque.


Message édité par the_bigboo le 09-02-2006 à 16:56:50
Reply

Marsh Posté le 09-02-2006 à 17:00:38    

si je fait ca , apres avoir entrer le mot de passe et login , je ne suis meme pas ridiriger , mais j'ai droit a index.php?erreur=intru

Reply

Marsh Posté le 09-02-2006 à 17:02:30    

j'ai rajouter }  
else { , et la je suis bien rediriger sur la bonne page

Reply

Marsh Posté le 09-02-2006 à 19:44:54    

pourtant il n'y a aucune différence entre ton code et le mien :o
c'est normal , je l'ai pas rajouté c'est sous entendu mais rassure moi , tu as laissé ton session_start() en mettant mon code???


Message édité par the_bigboo le 09-02-2006 à 19:48:31
Reply

Marsh Posté le 09-02-2006 à 20:10:58    

j'ai ceci:
 
<?php
 
 
session_start();  
if (session_is_registered("authentification" )){  
}
else {
header("Location:index.php?erreur=intru" ); }
 
 
?>
...
<?php
function CheckSession ()
{
$hour  = Date ("H" );
$minute = Date ("i" );
$second = Date ("s" );
 $month  = Date ("n" );
 $date  = Date ("j" );
 $year  = Date  
... suite de ton code
 
je me rapele que j'avais rajouter un " )"  a la ligne 10 de ton code ,  peut etre qu'il y a une autre erreur aussi ?

Reply

Marsh Posté le 10-02-2006 à 00:27:11    

non , j'avais effectivement oublié une parenthese :) Tu as essayé de voir ou ca bloquait en faisant afficher des echo un peu partout ?

Reply

Marsh Posté le 11-02-2006 à 01:31:03    

ui j'ai tester a diverses endroit , ca n'indique que quand l'echo est mis apres l'accolade comme montrer plus haut

Reply

Marsh Posté le 12-02-2006 à 15:34:55    

petit up :$

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed