PHP - Aumentar El Tiempo De Sesion Activa En PHP

 
Vista:
Imágen de perfil de Jose

Aumentar El Tiempo De Sesion Activa En PHP

Publicado por Jose (4 intervenciones) el 26/03/2018 23:03:04
Hola amigos de la web del programador el dia de hoy necesito de su ayuda para poder aumentar el tiempo de vida y tambien cantidad de usuarios online, el codigo php es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if($active){
for ($i = 0; $i <= count($active) -1; $i++) {
$uid = $database->getUserField($active[$i]['username'],'id',1);
$varray = $database->getProfileVillages($uid);
$totalpop = 0;
foreach($varray as $vil) {
    $totalpop += $vil['pop'];
}
        if($active[$i]['tribe'] == 1){
        $tribe = "Roman";
        } else if($active[$i]['tribe'] == 2){
        $tribe = "Teuton";
        } else if($active[$i]['tribe'] == 3){
        $tribe = "Gaul";
        }
echo '

como pueden ver alli en este codigo hace una llamada a la base de datos para que muestre los usuarios activos del juego, el problema es que cuando los jugadores dejan de jugar y pasan 5 minutos automaticamente se quita de la lista, lo que necesito en realidad es que la sesion activa me dure 24 horas osea un dia, si alguien me puede ayudar para poder aumentar que los usuarios que hayan entrado durante el dia queden logueados durante todo el dia.

Este es el codigo de la tabla active:

1
2
3
4
5
6
7
8
9
10
1	username	varchar(100)	utf8_general_ci		No	None		Change Change	Drop Drop
Primary Primary
Unique Unique
Index Index
More
	2	timestamp	int(11)			Yes	NULL		Change Change	Drop Drop
Primary Primary
Unique Unique
Index Index
More

Cuando ingreso a phpmyadmin puedo visualizar que los usuarios que en listado de usuarios online aun estan alli por lo que quiere decir que quedan logueados pero el codigo php los elimina a los 5 minutos, si alguien me puede ayudar le estaria muy agradecido, aqui les dejo unas fotos para que las miren, Gracias.

Atte.Jose Oliva
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de italo
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Aumentar El Tiempo De Sesion Activa En PHP

Publicado por italo (150 intervenciones) el 27/03/2018 04:23:58
hola, para aumentar el tiempo de duracion de las sesiones hay mychas maneras, la mas rapida es cambiar en la configuracion de tu file php.ini


file php.ini

1
2
3
4
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
; http://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440

buscar: session.gc_maxlifetime y lo cambias por 24 horas de duracion en segundos:

quedaria asi (sin el ; al inicio)

1
2
session.gc_maxlifetime = 86400
; 1440 minutos = 24 horas

luego stop y star de apache, prueba.

salud2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Aumentar El Tiempo De Sesion Activa En PHP

Publicado por Jose (4 intervenciones) el 27/03/2018 04:36:25
Hola Italo lastimosamente no tengo acceso al archivo php.ini pero lo que me impresiona es que los usuarios activos solo me duran 5 minutos y luego se quitan de la lista aqui te dejo el codigo completo que hace la llamada a la base de datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
@include("GameEngine/Database.php");
@include("GameEngine/Admin/database.php");
$active = $admin->getUserActive();
?>
 
<?php
include_once("GameEngine/Generator.php");
$start_timer = $generator->pageLoadTimeStart();
 
 
 
use App\Utils\AccessLogger;
 
 
 
 
include_once("GameEngine/Village.php");
AccessLogger::logRequest();
 
if(isset($_GET['ok'])){
	$database->updateUserField($session->uid,'ok','0','1'); $_SESSION['ok'] = '0';
}
if(isset($_GET['newdid'])) {
    $_SESSION['wid'] = $_GET['newdid'];
    $database->query("UPDATE ".TB_PREFIX."users SET village_select=".$database->escape((int) $_GET['newdid'])." WHERE id=".$session->uid);
	header("Location: ".$_SERVER['PHP_SELF']);
	exit;
} else {
	$building->procBuild($_GET);
}
?>
<style type="text/css">
a:hover
{
background-color:purple;
}
a:link {color:lime;}
a:visited {color:lime;}
a:active {color:red;}
</style>
 
<title>TravianForce Online System!</title>
<body background="back.jpg">
<style>
.del {width:12px; height:12px; background-color:orange">';}
</style>  
<center><a href="dorf1.php"><img src="back.gif" alt="Return To The TravianForce Game!" title="Return To The TravianForce Game!" /></a></center>
<center><b>Please Vote For TRAVIANFORCE In TOPG You Win 15 Gold!</b>
<p><a href="https://topg.org/travian-private-servers/in-483564" target="_blank"><img src="https://topg.org/topg2.gif" width="88" height="31" border="0" alt="travian private servers"></a></p>
<b>Please Vote For TRAVIANFORCE In ARENA TOP 100 You Win 15 Gold!</b>
<p><a href="http://www.arena-top100.com/" target="_blank"><img src="http://www.arena-top100.com/button.php?u=tutuyales&buttontype=static" alt="Travian Private Servers" title="Travian Private Servers" /></a></p></center>
<table id="member">
  <thead>
    <tr>
        <th colspan="6">Online TravianForce Players (<?php echo count($active);?>)</th>
    </tr>
  </thead>    
    <tr>
        <td><b>Player</b></td>
        <td><b>Time</b></td>
        <td><b>Tribe</b></td> 
        <td><b>Pop</b></td> 
        <td><b>Villages</b></td> 
        <td><b>Gold</b></td>  
    </tr>
<?php 

if($active){         
for ($i = 0; $i <= count($active) -1; $i++) {
$uid = $database->getUserField($active[$i]['username'],'id',1);
$varray = $database->getProfileVillages($uid);
$totalpop = 0;
foreach($varray as $vil) {
    $totalpop += $vil['pop'];
}
        if($active[$i]['tribe'] == 1){
        $tribe = "Roman";
        } else if($active[$i]['tribe'] == 2){
        $tribe = "Teuton";
        } else if($active[$i]['tribe'] == 3){
        $tribe = "Gaul";
        }
echo '
    <tr>
        <td><b><a href="http://travianforce.altervista.org/spieler.php?uid='.$uid.'">'.$active[$i]['username'].' ['.$active[$i]['access'].']</b></a></td>
        <td><b>'.date("d.m.y H:i:s",$active[$i]['timestamp']).'</b></td>
        <td><b>'.$tribe.'</b></td>
        <td><b>'.$totalpop.'</b></td>
        <td><b>'.count($varray).'</b></td>
        <td><b><img src="../img/admin/gold.gif" class="gold" alt="Gold" title="This TravianForce Player Has: '.$active[$i]['gold'].' gold"/> '.$active[$i]['gold'].'</b></td>
 
    </tr>
';
} 
}else{
echo '<tr><td  colspan="6" class="hab">No Online TravianForce Players</td></tr>';
 
}
 
?>


lo que quiero es indicarle a esta parte del codigo con time que los usuarios activos duren 24 horas osea 86400, en esta parte creo que puedo indicarle esta funcion:

1
2
3
if(isset($_GET['ok'])){
	$database->updateUserField($session->uid,'ok','0','1'); $_SESSION['ok'] = '0';
}

por favor si alguien me podiese ayudar le estaria infinitamente agradecido!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aumentar El Tiempo De Sesion Activa En PHP

Publicado por Jose (4 intervenciones) el 27/03/2018 04:49:00
Ya he buscado en el archivo admin algo acerca de del time pero no he encontrado nada, en este codigo se ve que hace llamado a la funcion:

1
$active = $admin->getUserActive();

osea que active es igual a admin y la funcion getUserActive pero no he encontrado nada, jeje esto ya me esta volviendo loco jajajajaja Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Aumentar El Tiempo De Sesion Activa En PHP

Publicado por xve (6935 intervenciones) el 27/03/2018 08:19:51
Hola Jose, otra manera que puedes hacer, es utilizar cookies en vez de variables de sesión, de esta manera, tu puedes controlar el tiempo que dure la sesión.

Eso, si, no podrás guardar ni el usuario ni la contraseña en la cookie por temas de seguridad, tendrás que generar un token o cadena a guardar en la cookie, que tu internamente relaciones con ese usuario mediante base de datos.

No se si te puede servir...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aumentar El Tiempo De Sesion Activa En PHP

Publicado por Jose (4 intervenciones) el 27/03/2018 16:52:14
Hola xve gracias por tu respuesta, lo que me gustaria saber es como puedo hacer para que la cookies no expiren en mi web? cualo seria el codigo? desde ya muchas gracias, este codigo lo saque del menu.tpl y es un codigo que lo que hace es pregntarle a la base de datos cuantos usuarios online hay, si pudiese usar este codigo y colocarle el tiempo, tribu , poblacion y oro estaria perfecto, este es el codigo:

1
2
3
4
5
6
7
<?php
 
	$return = mysqli_query($link,"SELECT Count(*) as Total FROM " . TB_PREFIX . "users WHERE timestamp > ".(time() - (3600*1))." AND tribe!=0 AND tribe!=4 AND tribe!=5");
	$online=(!empty($return))? mysqli_fetch_assoc($return)['Total']:0;
	echo $online;
 
?>

y este es el codigo que quiero añadir del codigo que esta arriba:

1
2
3
4
5
6
7
8
<tr>
	<td><b><a href="http://travianforce.altervista.org/spieler.php?uid='.$uid.'">'.$active[$i]['username'].' ['.$active[$i]['access'].']</b></a></td>
	<td><b>'.date("d.m.y H:i:s",$active[$i]['timestamp']).'</b></td>
	<td><b>'.$tribe.'</b></td>
	<td><b>'.$totalpop.'</b></td>
	<td><b>'.count($varray).'</b></td>
	<td><b><img src="../img/admin/gold.gif" class="gold" alt="Gold" title="This TravianForce Player Has: '.$active[$i]['gold'].' gold"/> '.$active[$i]['gold'].'</b></td>
</tr>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Aumentar El Tiempo De Sesion Activa En PHP

Publicado por xve (6935 intervenciones) el 27/03/2018 21:34:56
Indicar a la cookie una caducidad es sencillo...
[url]php.net/manual/es/function.setcookie.php[/url]

Por ejemplo, una hora seria:
1
setcookie("MiCookie", $value, time()+3600);
1 dia seria:
1
setcookie("MiCookie", $value, (time()+3600)*24);

Te sirve?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar