Foros del Web » Programando para Internet » PHP »

Consulta sobre la propagación de una sesión

Estas en el tema de Consulta sobre la propagación de una sesión en el foro de PHP en Foros del Web. Buenas a todos, en estos momentos me encuentro haciendo una intranet, la cual autentifica mediante LDAP, pero estoy viendo que para que la sesión se ...
  #1 (permalink)  
Antiguo 20/10/2005, 00:49
Avatar de PeiShar  
Fecha de Ingreso: abril-2001
Ubicación: España
Mensajes: 125
Antigüedad: 23 años
Puntos: 0
Consulta sobre la propagación de una sesión

Buenas a todos, en estos momentos me encuentro haciendo una intranet, la cual autentifica mediante LDAP, pero estoy viendo que para que la sesión se propage tengo que realizar un session_start(); al comienzo de la página, incluso antes de que el usuario llegue a autentificarse. ¿Que ocurre con esto? Que si realizo un:
Código PHP:
<?
echo session_id();
?>
veo que el id es idéntico al id que te proporciona una vez autentificado. Y me gustaría saber si esto es que funciona de esta manera, o si por lo contrario es que estoy haciendo mal el código.

¿Es a esto a lo que os referis a que la propagación de una sesión es insegura comparándola con el control por cookies?

Gracias
  #2 (permalink)  
Antiguo 20/10/2005, 03:53
Avatar de PeiShar  
Fecha de Ingreso: abril-2001
Ubicación: España
Mensajes: 125
Antigüedad: 23 años
Puntos: 0
Buenas, ya he arreglado el tema de tener siempre una session creada, ya se haya autentificado o no el usuario, pero me encuentro con el siguiente problema, cuando me autentifico en cuanto cambio de página no me mantiene la session, os dejo el código a ver si véis donde me he podido equivocar, gracias.
Código PHP:
<?php
if (!file_exists"includes/config.inc.php" )) {
    
header"Location: includes/obras.php" );
    exit();
}
require_once(
'includes/config.inc.php');
require_once(
'includes/breadcrumb.inc.php');

$user=strtoupper($_POST["user"]);
$pass=$_POST["pass"];
$formage=$_POST["formage"];

if(!empty(
$_SESSION['username'])){

    
session_start();

} else {

    if (isset( 
$_POST['submit'] )) {

       if ((!
$pass) || (!$user)) { echo "<script>alert('Debes rellenar todos los campos. Inténtelo de nuevo por favor.'); document.location.href='index.php';</script>\n"; exit();}

       if ((
$formage=="old") && ($user!=NULL)){ //Comprobamos que el formulario sea rellenado

          //Incluimos la class y creamos la conección
          
include ($_SERVER["DOCUMENT_ROOT"]."/sinSSL/intranet/includes/adLDAP.php");
          
$adldap = new adLDAP();

          
$failed=0;

          
//Autentificamos al usuario
          
if ($adldap -> authenticate($user,$pass)){
          
session_name ($user);
          
session_start();
          
$_SESSION['username']=$user;

          } else {

          
$failed=1;

          }
       }
     }
}
 
?>
  #3 (permalink)  
Antiguo 20/10/2005, 05:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si tu defines un nombre de sesión .. debes usarlo siempre en todo uso de sesiones que hagas en tu aplicación:

session_name ($user);
session_start();

Si eso lo haces ahí .. también tienes que hacerlo en otros inicio de uso de sesiones que uses .. es decir .. el mismo valor de $user .. antes de session_start() para la función session_name().

Sino, vas a trabajar con dos sesiones diferentes .. una (cuando fuerces el nombre de tu sesión por session_name()) con el nombre por defecto que PHP le dá a las sesiones (que lo define php.ini en su session.nomeacuerdo directiva) y otra con el nombre que le distes al usar session_name()

Lo único que veo es que estás confundiendo lo que significa usar un nombre de sesión (o definirlo) .. Las sesiones son únicas para el cliente que las crea, para eso tienes el SID (Identificador único de sesión) que las hace únicas y las relaciona con el cliente que las crea.

Definir un nombre de sesión en base a un dato de los que pueda propagar como ese "$user" .. la verdad no le veo mucho sentido .. y más cuando ya propagas esa variable en la sesión ($_SESSION['username']=$user;).

Recomendación .. no uses session_name() por lo menos de esa forma. Si quieres, usa un nombre de sesión "personalizado" para todo lo que haga tu aplicación (nombre fijo) .. pero insisto que no es para nada necesario ni tampoco ofrece ninguna utilidad práctica (o la desconozco) salvo esa personalización.

Por otro lado .. si tu haces una validación tipo:

if(!empty($_SESSION['username'])){

sin haber usado session_start() -antes- de pretender acceder a $_SESSIOn . .SIEMPRE te va a devolver "null" (vacio) .. debes usar session_start() si o si para realmente ver si esa "variable" en tu sesión está definida y con algún valor ..

No te preocupes por el SID si tiene el mismo IDentificador antes de tu autentificación o cuando pase tu validación de tu usuario .. Lo que "Manda" es la validación de la existencia de esa variable que ahí defines "$_SESSION['username']", por qué tu la creas sólo cuando pasas tu validación (por tu consulta a tu servidor LDAP y autentificación de tu usuario). Cuando no pasa dicha validación .. NO la creas por enden no existe.

Un saludo,
  #4 (permalink)  
Antiguo 20/10/2005, 06:02
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
una pregunta.. que interes se puede tener en usar varias sesiones.. o darles nombre? ( ahora mismo no se me ocurre ningun ejemplo.. que seguro que los hay y son evidentes pero..)

saludos
  #5 (permalink)  
Antiguo 20/10/2005, 07:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por cyborg
una pregunta.. que interes se puede tener en usar varias sesiones.. o darles nombre? ( ahora mismo no se me ocurre ningun ejemplo.. que seguro que los hay y son evidentes pero..)

saludos
Un ejemplo a mano ..

Este sitio usa sesiones para almacenar todos los datos sobre tu autentificación en el sistema, preferencias y demás información mientras estás en el sitio (se obtiene UNA vez de tu BD o incluso cookie y de ahí se usa como variables de sesión). Todo muere (variables de sesión) cuando sales del sitio (sea por tu logout o cerrando tu navegador).

En general .. las variables que uno propaga en una sesión NO viajan al cliente (por el URL o en una cookie) .. así que no tienes problemas de cantidad de variables a propagar. Tienen validez por el tiempo que dure tu sesión .. se asignan al cliente que las crea .. son seguras (nadie las puede alterar pues esos datos están en el servidor).

Un saludo,
  #6 (permalink)  
Antiguo 20/10/2005, 12:29
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
si.. pero una sesión.. pero crear sesiones distintas?
y darles nombre? para que?

p.d: si me has respondido no me he enterado :p

saludos
  #7 (permalink)  
Antiguo 20/10/2005, 12:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por cyborg
si.. pero una sesión.. pero crear sesiones distintas?
y darles nombre? para que?

p.d: si me has respondido no me he enterado :p

saludos
Podrías usarlo así en un proyecto muyyy grande .. pero en realidad es más lio andar cambiando de nombre de sesión que simplemente gestionar por ejemplo un array en tu sesión para "ordernar" esos datos que tengan alguna relación entre sí .. sin mezclaros con otros. De hecho no he visto ninguna aplicación que haga ese uso de sesiones por nombre de sesión en una misma sesión (valga la rebundancia).

Un saludo,
  #8 (permalink)  
Antiguo 20/10/2005, 13:27
Avatar de PeiShar  
Fecha de Ingreso: abril-2001
Ubicación: España
Mensajes: 125
Antigüedad: 23 años
Puntos: 0
Mañana probaré lo que me dices Cluster, gracias.
  #9 (permalink)  
Antiguo 20/10/2005, 15:34
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
Cita:
Iniciado por Cluster
Podrías usarlo así en un proyecto muyyy grande .. pero en realidad es más lio andar cambiando de nombre de sesión que simplemente gestionar por ejemplo un array en tu sesión para "ordernar" esos datos que tengan alguna relación entre sí .. sin mezclaros con otros. De hecho no he visto ninguna aplicación que haga ese uso de sesiones por nombre de sesión en una misma sesión (valga la rebundancia).

Un saludo,
te refieres a usar variables de sesion para pasar cosas como esta?
$_SESSION['username']?
si es otra cosa.. estoy muy torpe pq no pillo :p

saludos
  #10 (permalink)  
Antiguo 21/10/2005, 00:59
Avatar de PeiShar  
Fecha de Ingreso: abril-2001
Ubicación: España
Mensajes: 125
Antigüedad: 23 años
Puntos: 0
Buenas Cluster, creo que llegué a entender lo que me comentabas sobre las sesiones, adjunto el código por si ves algo raro que no te concuerde, aunque creo que me funciona correctamente. Estoy abierto a cualquier cosa que pueda mejorar el código, sobre todo en cuanto a seguridad se refiere. Gracias.

Código PHP:
<?php
if (!file_exists"includes/config.inc.php" )) {
    
header"Location: includes/obras.php" );
    exit();
}
require_once(
'includes/config.inc.php');
require_once(
'includes/breadcrumb.inc.php');

$user=strtoupper($_POST["user"]);
$pass=$_POST["pass"];
$formage=$_POST["formage"];

session_start();

    if (isset(
$_POST['submit'])) {

       if ((!
$pass) || (!$user)) { echo "<script>alert('Debes rellenar todos los campos. Inténtelo de nuevo por favor.'); document.location.href='index.php';</script>\n"; exit();}

       if ((
$formage=="old") && ($user!=NULL)){ //Comprobamos que el formulario sea rellenado

          //Incluimos la class y creamos la conección
          
include ($_SERVER["DOCUMENT_ROOT"]."/sinSSL/intranet/includes/adLDAP.php");
          
$adldap = new adLDAP();

          
$failed=0;

          
//Autentificamos al usuario
          
if ($adldap -> authenticate($user,$pass)){
          
$_SESSION['username']=$user;

          } else {

          
$failed=1;

          }
       }
     }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="es">
<head>
<!-- Meta Tags -->

<title><?php echo $page_title ?></title>
<meta name="keywords" content="Intranet">
<meta name="Description" content="P&aacute;gina principal: Intranet.">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="Author" content="YoMismo">
<meta name="Owner" content="el correo">
<meta name="Revisit" content="8 days">
<meta name="Robots" content="all">
<meta name="Language" content="Spanish">

<!-- Fin Meta Tags -->

<link href="css/estilo.css" type="text/css" rel="stylesheet" media="screen" />
</head>
<?php
$page_title 
"P&aacute;gina principal";
?>
<body>
<? echo session_name(); ?>
<div id="contenedor">
 <div id="cabecera">
    <h1>
    <a href="index.php" title="Ir al inicio">
    <img src="imagenes/logotipo.gif" alt="Intranet del Instituto Andaluz de la Juventud" /></a>
    </h1>
    <div id="form">
    <!-- Logín -->
<div id="formulario">
 <!--<span class="seccion">Login</span>-->
  <form name="login" method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
  <input type="hidden" name="formage" value="old">

      <label for="user">Usuario:</label><br />
      <input id="user" type="text" name="user" value="" /><br />

      <label for="pass">Contraseña:</label><br />
      <input id="pass" type="password" name="pass" /><br />

      <input class="center" type="submit" id="submit" name="submit" value="Entrar">
      <? //if(empty($user) || empty($pass)) { echo ("<br/><span class='rojo'>Debes rellenar todos los campos</span>"); } ?>
      <? //if ($failed){ echo "<script>alert('Nombre de usuario y/o contraseña incorrecta. Inténtelo de nuevo porfavor.'); document.location.href='index.php';</script>\n";} ?>
      <? if ($failed){ echo ("<br/><span class='rojo'>Login incorrecto!</span>"); } ?>
      <? if(!empty($_SESSION['username'])){ echo ("<br/><span class='verde'>".$_SESSION['username']." <a href='logout.php'>Salir</a></span>"); } ?>
</form>
</div> <!-- Fin Login -->
    </div> <!-- Fin Form -->
 </div> <!-- Fin Cabecera -->

<!-- Crea el menu y las migas de pan -->

<div class="migas">Est&aacute;s en : <?php breadCrumb($SCRIPT_URL); ?></div>

<!-- Inicio Menú Izquierda -->

...
  #11 (permalink)  
Antiguo 21/10/2005, 09:46
Avatar de PeiShar  
Fecha de Ingreso: abril-2001
Ubicación: España
Mensajes: 125
Antigüedad: 23 años
Puntos: 0
Buenas, me gustaría seguir con este tema para preguntaros sobre la seguridad del código que podéis ver en el mensaje anterior. ¿Es realmente seguro? ¿Se puede mejorar? o mejor dicho, que mejorarías del código, no es necesario que me escribáis código, con alguna explicación me valdría, aunque tampoco venga mal algo de código, gracias.
  #12 (permalink)  
Antiguo 21/10/2005, 10:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por cyborg
te refieres a usar variables de sesion para pasar cosas como esta?
$_SESSION['username']?
si es otra cosa.. estoy muy torpe pq no pillo :p

saludos
¨Si .. eso simplemente .. pero como variable de sesión y "array" que es $_SESSION ya de por sí .. si tu quieres, almacena un array más para tener ordenado tus variables:

Código PHP:
$_SESSION['usaurios']=array("id"=>1,"nombre"=>"pepe","apellido"=>"fernandez");
$_SESSION['aplicacion']=array("seccion"=>"indice","url"=>"http://www.tal.tal/indice.php"
Un saludo,
  #13 (permalink)  
Antiguo 21/10/2005, 12:26
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
y hay limite de tamaño?
pq vamos..... no se como de seguro sería..... pero se podria cargar una tabla.. en un array de sesion y asi controlar la variable de sesion en vez de estar accediendo a la tabla.....
pero.... hay limite de valores en el array? es seguro?

Y yo que mis ejemplos eran valores simples en las variables de sesion :p

si el array es:
$_SESSION['usaurios']=array("id"=>1,"nombre"=>"pepe","apellido"=>"ferna ndez");

como se accederia a cada valor?
  #14 (permalink)  
Antiguo 21/10/2005, 13:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por cyborg
y hay limite de tamaño?
pq vamos..... no se como de seguro sería..... pero se podria cargar una tabla.. en un array de sesion y asi controlar la variable de sesion en vez de estar accediendo a la tabla.....
pero.... hay limite de valores en el array? es seguro?

Y yo que mis ejemplos eran valores simples en las variables de sesion :p

si el array es:
$_SESSION['usaurios']=array("id"=>1,"nombre"=>"pepe","apellido"=>"ferna ndez");

como se accederia a cada valor?
Cita:
y hay limite de tamaño?
pero.... hay limite de valores en el array? es seguro?
El limite lo dará tanto PHP por el tamaño de memoria que pueda gestionar (que lo delimita la configuración de este en su php.ini) .. como del sistema de almacenamiento ("disco duro") de ese servidor o zona donde almacenas tus sesiones (en archivos por defecto según gestiona las sesiones PHP) .. Es decir .. el limite es bastante grande.

Y .. si .. sería seguro .. Entendiendo a que los datos los tenemos en el servidor.

Cita:
pq vamos..... no se como de seguro sería..... pero se podria cargar una tabla.. en un array de sesion y asi controlar la variable de sesion en vez de estar accediendo a la tabla.....
Pero .. para que quieres hacer eso? .. bajo que condiciones? .. Las Base de datos se inventaron junto con su lenguaje de acceso a ellas (SQL) justamente para prestarte ayuda y optimización a la hora de hacer consultas a esos datos ... Por ende .. si piensas usar un "array" (bidimensional como lo que tendrías ya en tu "tabla" de tu BD) para "consultarlo" .. dependiendo de las características de esos datos, creo que siempre sería más optimo consultar la BD .. Sobre todo por qué así obtendras los datos "frescos" (actualizados) de lo que tengas en tu BD .. no lo que "temporalmente" te llevastes a una sesión. Pero, claro .. todo depende del propósito que le des.

Cita:
si el array es:
$_SESSION['usaurios']=array("id"=>1,"nombre"=>"pepe","apellido"=>"ferna ndez");

como se accederia a cada valor?
Te hago la pregunta al reves .. Si yo te doy un array así:

$datos['usuario']=array("id"=>1,"nombre"=>"pepe","apellido"=>"ferna ndez");

como accederias a su valores? ..Bueno .. esto es simplemente para que veas a "$_SESSION" como un vulgar array que es. Lo accedes como si de cualquier otro tipo de array se tratase:

echo $_SESSION['usuarios']['id']; // el ID del "usuario"
echo $_SESSION['usuarios']['nombre']; // el nombre del "usuario"
etc ...

más info:
www.php.net/array

Un saludo,
  #15 (permalink)  
Antiguo 21/10/2005, 14:59
Avatar de PeiShar  
Fecha de Ingreso: abril-2001
Ubicación: España
Mensajes: 125
Antigüedad: 23 años
Puntos: 0
Bueno, y como véis el código en cuanto a seguridad? Gracias.

Por ejemplo, que es mejor para incluir un fichero con la configuración de conexión a base de datos, un include, un include_once, un require o require_once???

Código PHP:
require_once('includes/config.inc.php'); 
Esta bien colocar este otro código?

Código PHP:
if ((!$pass) || (!$user)) { echo "<script>alert('Debes rellenar todos los campos. Inténtelo de nuevo por favor.'); document.location.href='index.php';</script>\n"; exit();} 
O es mejor mostrar el mensaje sin javascript.

Véis bien que use el campo formage para controlar que se rellena el formulario?

Código PHP:
if (($formage=="old") && ($user!=NULL)) 
¿Como podría hacer para que el login llamara una web segura https:443 pero que la intranet siguiese en el http:80 para proteger la clave contra sniffers?

Seguro que se me ocurrirán bastantes preguntas, saludos y gracias.
  #16 (permalink)  
Antiguo 21/10/2005, 16:56
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
Cita:
Iniciado por Cluster

Pero .. para que quieres hacer eso? .. bajo que condiciones? .. Las Base de datos se inventaron junto con su lenguaje de acceso a ellas (SQL) justamente para prestarte ayuda y optimización a la hora de hacer consultas a esos datos ... Por ende .. si piensas usar un "array" (bidimensional como lo que tendrías ya en tu "tabla" de tu BD) para "consultarlo" .. dependiendo de las características de esos datos, creo que siempre sería más optimo consultar la BD .. Sobre todo por qué así obtendras los datos "frescos" (actualizados) de lo que tengas en tu BD .. no lo que "temporalmente" te llevastes a una sesión. Pero, claro .. todo depende del propósito que le des.
Un saludo,
bueno.. evidentemente eso se podria hacer en una tabla con datos que no cambien.. no se.. algun codigo descripcion.. o todos los datos relativos a la persona logueada..así solo sería una consulta en la bbdd.. y no x consultas..
no se.. es algo que se me ocurre.. igual es una tonteria.

saludos
  #17 (permalink)  
Antiguo 22/10/2005, 06:22
Avatar de PeiShar  
Fecha de Ingreso: abril-2001
Ubicación: España
Mensajes: 125
Antigüedad: 23 años
Puntos: 0
Parriba!!!
  #18 (permalink)  
Antiguo 22/10/2005, 06:26
Avatar de PeiShar  
Fecha de Ingreso: abril-2001
Ubicación: España
Mensajes: 125
Antigüedad: 23 años
Puntos: 0
Además de las preguntas que hice dos mensajes anteriores y no me habéis podido responder (seguro que es por falta de tiempo), necesito saber como podría añadirle a este script que la sessión durase un tiempo después de dejar de navegar por ella pero sin que el usuario cierre la ventana del navegador, no se si eso podrá controlarse.
  #19 (permalink)  
Antiguo 24/10/2005, 06:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por PeiShar
Además de las preguntas que hice dos mensajes anteriores y no me habéis podido responder (seguro que es por falta de tiempo), necesito saber como podría añadirle a este script que la sessión durase un tiempo después de dejar de navegar por ella pero sin que el usuario cierre la ventana del navegador, no se si eso podrá controlarse.
Sobre el uso de include() .. requiere() o equivalentes . .Te recomendaría ver la documentación de PHP al respecto para salir de dudas.

www.php.net/include
www.php.net/require

Sobre todo fijate bien que error (tipo) se genera cuando falla la función (cuando no puede abrir/leer tu script a incluir). Ahí está el detalle. Por lo general .. datos "críticos" a incluir es recomendable usar require() en lugar de include() (por qué genera un error fatal si falla el require() vs al include que sólo un Warning y PHP procesa diferente estos tipos de errores .. uno para completamente la ejecución del script y el otro podría continuar la ejecución del script ocasinando problemas por otro lado si no están esos datos).

Cita:
Esta bien colocar este otro código?


Código PHP:
if ((!$pass) || (!$user)) { echo "<script>alert('Debes rellenar todos los campos. Inténtelo de nuevo por favor.'); document.location.href='index.php';</script>\n"; exit();}


O es mejor mostrar el mensaje sin javascript.
Da igual .. el caso es que terminas la ejecución de tu scritp ahí mismo .. Eso sí .. si lo haces así como veras no generas una página HTML standar (con sus <html> .. </html>) y te quedas con la pantalla "en blanco" hasta que aceptas ese "alert" que a su vez no llevas a ningún sitio la página .. Usa mejor una redirección hacia tu formulario de login y ahí indica el mensaje de error (bajo una variable de control tipo: login.php?error=1 ... )

Cita:
Véis bien que use el campo formage para controlar que se rellena el formulario?

Código PHP:
if (($formage=="old") && ($user!=NULL))
No, .. basate en la existencia de alguna de las variables que usas en tu formulario .. verificado por la función empty() .. no con un "NULL" .. La función empty() asegura dos cosas: existencia de la variable y valor distinto a NULL o 0 (todo en una). Esa variable "hidden" que contiene el valor "old" .. la verdad que no tiene mucho sentido existiendo otras variables en ese formulario .. De hecho .. ya lo haces con esa validación del $_POST['submit'] ..


Cita:
¿Como podría hacer para que el login llamara una web segura https:443 pero que la intranet siguiese en el http:80 para proteger la clave contra sniffers?
Bueno .. tu formulario de login .. apuntalo a:

<form action="https://nose/autentificacion.php" method="post">

y cuando valides en tu autentificacion.php .. redirecciona hacia otro URL por http .. El caso es que vas a tener problemas con las sesiones (sobre todo si propagas el cookies el SID), .. La sesión la crearas para el dominio seguro .. y no podras leerla en la zona NO segura ..

Por qué no usas toda tu "intranet" bajo SSL? ..

Un saludo,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:02.