Foros del Web » Programando para Internet » PHP »

Poqué me llega el array vacio?

Estas en el tema de Poqué me llega el array vacio? en el foro de PHP en Foros del Web. Hola amigos desde este codigo envio los datos de la sesion Código PHP: <?php   session_start ();  $usuario = $_POST [ 'usuario' ];  $contra = $_POST ...
  #1 (permalink)  
Antiguo 21/04/2009, 05:55
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Poqué me llega el array vacio?

Hola amigos

desde este codigo envio los datos de la sesion

Código PHP:
<?php  
session_start
(); 
$usuario=$_POST['usuario']; 
$contra=$_POST['contra']; 
include 
"configsql.php";
$xusuario=strtoupper($usuario);
$consulta="select PASSWORD,DESCRIP,NIVEL,CODIGO,NOMBRE,EMAIL from t4s where password='".$contra."' and descrip='".$usuario."'";
$query=mysql_query($consulta$connect);
$cadena=mysql_fetch_row $query );
$nfilas=mysql_num_rows($query);
if (
$nfilas !=0){  
//usuario y contraseña válidos  
//defino una sesion y guardo datos   
$_SESSION["usuario"]=$usuario
$_SESSION["contra"]=$contra;
$_SESSION["nombre"]=$cadena[4];
$_SESSION["email"]=$cadena[5];
$nombre=$_SESSION["nombre"];
$usuario=$_SESSION["usuario"];
$contra=$_SESSION["contra"];
$email=$_SESSION["email"];
//session_register("SESSION");
$fecha=getdate()        ;
$dfecha=DATE("d.m.y")   ;
$hora =$fecha["hours"]+6;
$mins =$fecha["minutes"];
$mins =STR_PAD(trim($mins),0,'0',STR_PAD_LEFT  ); $now  =$hora.":".$mins  ;
echo 
"<center><strong><font color='Green' face='Arial'>..........oo00oo..........</font></strong></center>";
echo 
"<center><strong><font color='Red' face='Arial'>BIENVENIDO ".$nombre."</font></strong></center>";
echo 
"<center><strong><font color='Green' face='Arial'>..........oo00oo..........</font></strong></center>";
?>
<table width="681" border="0" align="center">
  <tr>
    <td width="71"><img src="sientate.gif" alt="logo" width="675" height="375" /></td>
  </tr>
</table>
<?php 
mysql_query 
("INSERT INTO visitas ( NOMBRE,FECHA,HORA) VALUES ('$usuario','$dfecha','$now' );"  $connect);
//$result = mysql_query($sql);
echo "<META HTTP-EQUIV=REFRESH CONTENT='6; URL=indice1a.php'>";
}else {  
//si no existe le mando otra vez a la portada  
echo "<center><strong><font color='Red' face='Arial'>..........oo00oo..........</font></strong></center>";
echo 
"<center><strong><font color='Red' face='Arial'>ERROR. ENTRADA NO AUTORIZADA</font></strong></center>";
echo 
"<center><strong><font color='Red' face='Arial'>..........oo00oo..........</font></strong></center>";
echo 
"<center><strong><font color='Red' face='Arial'>COMPRUEBE DATOS DE USUARIO Y CONTRASEÑA</font></strong></center>";
echo 
"<center><strong><font color='Red' face='Arial'>..........oo00oo..........</font></strong></center>";
echo 
"<META HTTP-EQUIV=REFRESH CONTENT='4; URL=indice1.htm'>";
}  
//mysql_free_result($rs);  
//mysql_close($conn);  
?>
haciendo llamada a indice1a.php

indice1a.php
Código PHP:
<?php
session_start
();
$usuario=$_SESSION["usuario"]; 
$contra=$_SESSION["contra"];
$nombre=$_SESSION["nombre"];
$email=$_SESSION["email"];
if(isset(
$usuario)){
?>
<html>
<head>
Bien pues de la primera página sale una sesion con variables, y a la segunda llega vacia.

Mi pregunta es: Puede ser porque hago la llamada con
Código PHP:
echo "<META HTTP-EQUIV=REFRESH CONTENT='6; URL=indice1a.php'>"
Saludos
  #2 (permalink)  
Antiguo 21/04/2009, 11:56
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Poqué me llega el array vacio?

Mas bien puede ser porque en indice1a.php no tienes session_start(); porque las sesiones deben mantenerse independientemente de redirecciones y el metodo usado.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 21/04/2009, 12:28
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Poqué me llega el array vacio?

Hola

Gracias por responder

Si, como puedes ver el código empieza por session_start()

Lo raro es que como en el código le pongo que si la sesion está vacía que vuelva al código anterior, si ejecuto una segunda vez, entonces si que me llega la sesión con sus valores.

Es decir que tengo que hacer la identificación 2 veces para que coja valor la sesión

Saludos
  #4 (permalink)  
Antiguo 21/04/2009, 13:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Poqué me llega el array vacio?

Cierto, el codigo parece correcto, lo unico que se me ocurre es que donde inicias la sesion hagas algo asi:

Código php:
Ver original
  1.  
  2. // Verificar si hay una sesion activa
  3. if(isset($_SESSION['usuario']))
  4.     die('Tu sesion esta activa, no puedes iniciar sesion nuevamente.');
  5.  
  6. // Inicializar la matriz para eliminar cualquier dato que puediera contener
  7. $_SESSION = array();
  8. $usuario=$_POST['usuario'];
  9. $contra=$_POST['contra'];

Si sigue sin funcionar, cambia la configuracion del script para que muestre todos los errores, usando error_reporting(E_ALL); antes de session_start(); para saber si hay alguna salida previa u otro error que impida que se cree la sesion.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 21/04/2009, 15:30
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Poqué me llega el array vacio?

Nada, que no quiere

He puesto error_reporting(E_ALL); al comienzo, y no me da ningún error, simplemente como le tengo puesto que si no exite la variable usuario se vuelva atrás, pues se vuelve atrás, y luego de segundas, pues ya si pasamos.

Lo curioso es que ésto lo hace casi exclusivamente con Iexplore, no con Firefox.

Saludos
  #6 (permalink)  
Antiguo 21/04/2009, 16:00
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Poqué me llega el array vacio?

Hola

Tambien para comprobar si me ha creado la sesion en inicio.php, he puesto

Código PHP:
echo session_encode(); 
justo antes de esta instruccion:

Código PHP:
echo "<META HTTP-EQUIV=REFRESH CONTENT='6; URL=indice1a.php'>"
y me da los datos de la sesion, lo que significa que justo antes de la última instrucción (meta), la sesion existe.

Puede ser esta ultima instruccion la que borre la sesión?.

Lo raro como digo es que la segunda vez que pasa por aquí, funciona bien.

Saludos
  #7 (permalink)  
Antiguo 21/04/2009, 16:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Poqué me llega el array vacio?

en esencia no deben fallar las sesiones bien empleadas, y tu no lo haces nada mal!

tal ves, necesitas hacer mas pruebas antes de considerar posibles problemas...

has tu primer login, y redirecciona a una pagina de prueba con solo esto:

Código PHP:
session_start();
var_dump($_SESSION); 
ojala resulte algo, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 21/04/2009, 16:28
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Poqué me llega el array vacio?

Hola

Llevo 15 dias dedicado a ésto exclusivamente, muchisimas horas, he hecho cientos de pruebas, y todas las pruebas correctas, tengo otros codigos con la misma estructura que funcionan perfectamente, pero éste que he puesto no hay manera, y vuelvo a decir que lo raro es que en localhost funciona perfectisimamente, y por que no en web?. Que diferencia hay de que el mismo codigo se utilice en local, o en web?.
Lo voy a tener que dejar por imposible, me come la moral, porque pongo, quito, modifico, dejo todo a pelo, y nada, al segundo fichero no le llegan los datos de la sesión la primera vez. y porqué la segunda si?.

no se si tendrá algo que ver el hosting.. la empresa es arsys, y los datos que pone en phpmyadmin son:
Localhost
# Versión del servidor: 4.0.27-standard
# Versión del protocolo: 10
# Servidor: Localhost via UNIX socket
# Usuario: usuario.

phpMyAdmin - 2.11.9.2

* Versión del cliente: 4.1.7
* Extensiones PHP utilizadas: mysql

Saludos
  #9 (permalink)  
Antiguo 21/04/2009, 17:55
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Poqué me llega el array vacio?

Nada tiene que ver la configuración de phpMyAdmin, que o es más que una aplicación PHP.

Debes hacer un debug de tu código línea por línea. Haz echos, prints, var_dumps. Verifica las condiciones, los valores booleanos, los datos. Todo línea por línea. Como tu problema tiene que ver con sesiones, debes verificar que la sesión sea constante. Prueba agregando un nombre a la sesión (session_start()), verificando los ids (session_id() en todas las páginas que estén ligadas, etc. Sólo así podrás saber dónde y cuál es el error. Como ya te dijeron, parece que no se trata de un error de código, sino de diferentes configuraciones. Revisa por allí.

  #10 (permalink)  
Antiguo 22/04/2009, 06:58
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Poqué me llega el array vacio?

Hola

Bueno, ya veré que puedo ir haciendo, porque la verdad es que he probado de todo.

Lo que más me entretiene es que a cada modificación la tengo que subir a la web para probar, aparte de dejar la web parada.

Porque como os he repetido, si las pruebas las hago en mi ordenador con un servidor apache, funcionan las sesiones perfectamente.

Saludos
  #11 (permalink)  
Antiguo 23/04/2009, 04:48
 
Fecha de Ingreso: junio-2007
Mensajes: 80
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Poqué me llega el array vacio?

Bueno, otra cosa que me he dado cuenta:

Cuando creo la session en inicio.php

Código PHP:
session_start();  
$_SESSION["usuario"]=$usuario
$_SESSION["contra"]=$contra;
$_SESSION["nombre"]=$nombre[4];
$_SESSION["email"]=$nombre[5];
session_register($_POST['usuario']);
session_id('123');
echo 
session_id(); 
Aqui me imprime como registro de la sesion '123'

pero en la página que tiene que recibir la sesion hago:

Código PHP:
session_start();
$usuario=$_SESSION["usuario"]; 
$contra=$_SESSION["contra"];
$nombre=$_SESSION["nombre"];
$email=$_SESSION["email"];
echo 
session_id(); 
y aqui como registro de la sesion me pone '1g283332ae3e..........'

Será por ésto todo este lio

Saludos
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 05:47.