PHP - Cambiar la hora de la sesión

   
Vista:
Imágen de perfil de novo34

Cambiar la hora de la sesión

Publicado por novo34 (8 intervenciones) el 04/06/2016 12:52:09
Hola amigos,

Estoy tratando de cambiarle la hora de la sesión, para que al realizar un registro se ponga la hora local y no la del servidor, he buscado mucho pero no doy con la manera.

Encontré que si lo que quiero es colocar la hora en la base de datos, al realizar una conexión a esa base de datos debo cambiar la hora de la sesión, una vez conectado mi script a la base de datos, la primera consulta debe ser:

1
SET @@session.time_zone = "America/Guayaquil";

Para tener la hora de Ecuador durante la conexión.

pero no logro hacerlo, esta es la primer consulta que realizo 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
<?php
 
if(!isset($_SESSION["user_id"])) {
$user = $_POST['mail'];
$pass = sha1(md5($_POST['password']));
 
$base = new Database();
$con = $base->connect();
 $sql = "select * from user where (email= \"".$user."\" or username= \"".$user."\") and password= \"".$pass."\" and is_active=1";
//print $sql;
$query = $con->query($sql);
$found = false;
$userid = null;
while($r = $query->fetch_array()){
	$found = true ;
	$userid = $r['id'];
}
 
if($found==true) {
//	session_start();
	$_SESSION['user_id']=$userid ;
	print "Cargando ... $user";
	print "<script>window.location='home.php';</script>";
}else {
	print "<script>window.location='login.php';</script>";
}
 
}else{
	print "<script>window.location='home.php';</script>";
 
}
?>

Espero alguien pueda ayudarme.
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 kip

Cambiar la hora de la sesión

Publicado por kip (564 intervenciones) el 04/06/2016 18:46:13
Hola, creo que deberias usar la funcion date_default_timezone_set.
Establece la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script.

Ejemplo:

1
2
3
4
5
<?php
    date_default_timezone_set('America/Guayaquil'); //Establecemos zona horaria
    $zonahoraria = date_default_timezone_get();  //preguntamos la zona horaria
    echo 'Zona horaria predeterminada: ' . $zonahoraria;
?>

Haz la prueba y comentanos.

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 novo34

Cambiar la hora de la sesión

Publicado por novo34 (8 intervenciones) el 04/06/2016 20:18:43
Gracias kip por tu sugerencia, tu código me imprime en pantalla la hora correcta, pero, al momento de registrar una venta en la base de datos con "NOW()" no pone la hora correcta, es decir, si son las 20:17 en la base pone 18:17.
Espero haberme explicado.
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

Cambiar la hora de la sesión

Publicado por xve (5518 intervenciones) el 04/06/2016 22:10:50
Para saber la diferencia horaria, puedes hacer:
1
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);


Para obtener la fecha en UTC, puedes hacer:
1
SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`


Espero que te sirva...
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
Imágen de perfil de novo34

Cambiar la hora de la sesión

Publicado por novo34 (8 intervenciones) el 05/06/2016 12:54:24
Gracias por tu sugerencia pero no me sirvió de mucho, o tal vez yo no se utilizarlo bien...

Lo que me interesa es saber como cambiar la hora de la sesión, una vez conectado mi script a la base de datos, con:

1
SET @@session.time_zone = "America/Guayaquil";

esta es la conexión 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
<?php
class Database {
	public static $db;
	public static $con;
	function Database(){
		$this->user="root";$this->pass="";$this->host="localhost";$this->ddbb="dbname";
	}
 
	function connect(){
		$con = new mysqli($this->host,$this->user,$this->pass,$this->ddbb);
		return $con;
	}
 
	public static function getCon(){
		if(self::$con==null && self::$db==null){
			self::$db = new Database();
			self::$con = self::$db->connect();
		}
		return self::$con;
	}
 
}
?>

Muchas gracias por su tiempo
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