Foros del Web » Programando para Internet » PHP »

Problema raro con las sesiones

Estas en el tema de Problema raro con las sesiones en el foro de PHP en Foros del Web. Hola de nuevo amigos, tengo un sistema de autentificacion de usuarios y todo marcha perfectamente pero el problema es el siguiente: Formulario login: El usuario ...
  #1 (permalink)  
Antiguo 11/06/2009, 11:24
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Pregunta Problema raro con las sesiones

Hola de nuevo amigos, tengo un sistema de autentificacion de usuarios y todo marcha perfectamente pero el problema es el siguiente:

Formulario login: El usuario se loguea y funciona perfecto.
Pagina protegida despues de logeo: Tengo puesto un echo $_SESSION['login']; para mostrar el nombre de usuario.
Ahora si desde la pagina protejida pincho en el enlace para ir a la pagina principal de la web no me muestra el nombre del usuario poniendo echo $_SESSION['login'];. ¿A que puede deberse?
  #2 (permalink)  
Antiguo 11/06/2009, 11:30
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema raro con las sesiones

O.o ¿A que no tienes el session_start() en tu pagina principal?
  #3 (permalink)  
Antiguo 11/06/2009, 11:31
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: Problema raro con las sesiones

supongo que entodas las paginas debes tener el session_start() y/o llamar al nombre de tu sesion en caso uses uno. saludos
__________________
Quitenme la vida pero no la bebida.
  #4 (permalink)  
Antiguo 11/06/2009, 11:42
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Problema raro con las sesiones

si si esta puesto el session start por eso digo que es raro jejej
  #5 (permalink)  
Antiguo 11/06/2009, 11:44
 
Fecha de Ingreso: junio-2009
Mensajes: 17
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema raro con las sesiones

Mira aver si es como ami, q no debe aver ningun espacio arriab del sesion star, es decir tiene q estar arriba del todo
  #6 (permalink)  
Antiguo 11/06/2009, 11:45
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Problema raro con las sesiones

si si eso esta bien esta exactamente al igual que las otras solo que esta no lo recibe no se porque... tiene algo que ver que este a diferente nivel la pagina principal en el directorio?
  #7 (permalink)  
Antiguo 11/06/2009, 11:56
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema raro con las sesiones

Utiliza session_set_cookie_params() para cambiar el "path" de la cookie de session a "/"

http://www.php.net/manual/en/functio...kie-params.php

Debes usar la funcion antes de cada session_start()
  #8 (permalink)  
Antiguo 11/06/2009, 12:04
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Problema raro con las sesiones

Que va.... no funciona, necesitais ver algun codigo para comprobar algo? si necesitais ver algun codigo decirmelo y lo voy publicando a trozos para que podamos investigar que le pasa jeje
  #9 (permalink)  
Antiguo 11/06/2009, 12:06
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema raro con las sesiones

Muestrame el codigo a ver.

Tambien, ¿dijiste que las paginas estan en diferentes niveles de directorios? Donde creas la SESSION esta en una subcarpeta?
  #10 (permalink)  
Antiguo 11/06/2009, 12:13
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Problema raro con las sesiones

Vale empezando por el formulario del login y el comprueba del formulario:

login.php

Código PHP:
<?php
session_start
();

if(isset(
$_SESSION['login'])){
header("location: index.php");
}

if (isset(
$_GET['error'])){
$error_accion_ms[1]= "* Faltan Datos.";
$error_accion_ms[2]= "* El password introducido es incorrecto";
$error_accion_ms[3]= "* El usuario introducido es incorrecto";
$error_accion_ms[4]= "* Los campos no pueden quedar vacios";
$error_accion_ms[5]= "* No tienes permisos suficientes para acceder a esta seccion<br>registrate con otro login e intentalo de nuevo";
$error_accion_ms[6]="* Debes de registrarte para poder acceder!";
$error_cod $_GET['error'];
}

<
form action="comprueba.php" method="post" name="login" class="Estilo3">
<
table>
    <
tr>
        <
td colspan="2" align="center">Accede a la zona personal</td>
    </
tr>
    <
tr>
        <
td colspan="2" align="center" class="error">&nbsp;<?php echo($error_accion_ms[$error_cod]); ?></td>
    </tr>
    <tr>
        <td align="right">Email:</td>
        <td align="left"><input name="login" type="text" size="18" maxlength="40"/></td>
    </tr>
    <tr>
        <td align="right">Contraseña:</td>
        <td align="left"><input type="password" name="pass" /></td>
    </tr>
    <tr>
        <td colspan="2" align="center"><input name="Submit" type="submit" class="acceder" value="Acceder" /></td>
    </tr>
    <tr>
        <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
        <td colspan="2" align="center"><a href="http://www.forosdelweb.com/f18/reg/formreg.php">Regístrate</a></td>
    </tr>
</table>
</form>
comprueba.php:

Código PHP:
<?php    
session_start
();    
include(
"../reg/config.php");    
$login $_POST['login'];    
$pass $_POST['pass'];    
$qry="SELECT id, password, userlevel FROM usu WHERE email='$login'";   
//echo $qry."<br>";   
$result=mysql_query($qry) or die(mysql_error());   
//echo "Las filas encontradas son ".mysql_num_rows($result);   
if(mysql_num_rows($result)==0)
{    
    
header("location: index.php?error=3");    
    exit();    

else 
{    
    
$array=mysql_fetch_array($result);    
    if(
$array["password"]!=md5($pass))
    {    
        
header("Location: index.php?error=7");
        exit();    
    }
    else
    {
        
        
$_SESSION["login"]=$array['login'];    
        
$_SESSION["id"] = $array['id'];
        
$_SESSION["userlevel"] = $array["userlevel"];  
        
header("Location: index.php");    
        exit();    
    }    
}    
?>
Si esta a diferente nivel, el esquema seria una cosa asi:

Pagina principal (En directorio)
usuarios(carpeta)--> dentro de usuarios esta: usu(carpeta) <-- en esta carpeta esta login.php y comprueba.php

Si hasta aqui lo ves todo bien sigo mostrando mas archivos.
  #11 (permalink)  
Antiguo 11/06/2009, 12:20
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema raro con las sesiones

Entonces lo unico que se me ocurre es que la COOKIE de SESSION se esta creando con un path diferente de "/", por eso solo funciona en la subcarpeta usu y no en tu directorio raiz.
Con una llamada a session_set_cookie_params() con los parametros correctos deberia funcionar (recuerda hacer la llamada a esta en ambos scripts).
  #12 (permalink)  
Antiguo 11/06/2009, 12:34
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Problema raro con las sesiones

vale y como hago el session_set_cookie_params(), con que parametros? o esto se usa solo asi?: session_set_cookie_params();
  #13 (permalink)  
Antiguo 11/06/2009, 12:40
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema raro con las sesiones

Trata con:
session_set_cookie_params(3600, "/");

Recuerda hacerlo ANTES de CADA session_start();
  #14 (permalink)  
Antiguo 11/06/2009, 12:50
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
nada no me lo muestra lo e añadido tanto en login.php como en comprueba.php... sigue sin mostrarme el login en la pagina principal.

Haber... no se si tendra algo que que o nada en absoluto pero en el php.ini tengo safe_mode=Of pero cuando lo pongo en on sale esto:

Warning: session_start() [function.session-start]: SAFE MODE Restriction in effect. The script whose uid is 1264504 is not allowed to access /var/tmp/ owned by uid 0 in /mnt/web7/32/27/51920027/htdocs/coriaweb/index.php on line 3

Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: files (path: ) in /mnt/web7/32/27/51920027/htdocs/coriaweb/index.php on line 3

Última edición por GatorV; 11/06/2009 a las 15:55
  #15 (permalink)  
Antiguo 11/06/2009, 13:30
 
Fecha de Ingreso: junio-2009
Ubicación: Valencia
Mensajes: 45
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: Problema raro con las sesiones

Hola rompeguesos,

Al cambiar el safe mode te da error porque no debes tener permisos para escribir en el directorio donde se guardan los ficheros de sesión. Eso no creo que sea la causa del problema que tienes.

Yo hay algo que no termino de entender: si tienes el fichero comprueba.php está en la carpeta usuarios/usu/ y el fichero index.php en la carpeta raíz, ¿a qué fichero estás llamando en la siguiente sentencia del fichero comprueba.php?

Código PHP:
header("Location: index.php"); 
Si no creo mal, para que el redireccionamiento te lo haga bien, deberías poner los siguiente:

Código PHP:
header("Location: ../../index.php"); 
Tal y como lo tienes, el fichero index.php al que redireccionas está en usuarios/usu/. ¿Has comprobado a ver si ahí tienes un fichero index.php? Quizás estés comprobando la variable de sesión en el fichero equivocado o, lo que es más probable, no estás redireccionando al fichero index.php adecuado.

Última edición por ruizdeeguilaz; 11/06/2009 a las 13:31 Razón: Corrección ortográfica
  #16 (permalink)  
Antiguo 11/06/2009, 13:39
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
jejeje si es que las dos se llaman index.php pero el ../../index.php es la pagina principal de la web y la index.php del mismo directorio del comprueba.php es la pagina privada de los usuarios ;)

Se me pasó decir cuando escribes mi dominio www.ejemplo.com hay un archivo index.php que te redirecciona a una carpeta (dominio1) y aqui es donde comienza mi directorio web con todas las paginas. Esta asi porque en el mismo hosting se alojan diferentes dominios y cada carpeta pertenece a un dominio es por tenerlo todo mas organizado, ¿Eso tiene algo que ver?

Quiero decir con esto que mi pagina principal es de este estilo http://www.ejemplo.com/dominio1/index.php
En este caso la carpeta dominio 1 funciona como si fuera mi directorio de la web para que nos entendamos jeje

Última edición por GatorV; 11/06/2009 a las 15:56
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 04:44.