Error que no tiene explicación )? 2

  • Autor Autor i7strelok
  • Fecha de inicio Fecha de inicio
I

i7strelok

Curioso
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos, voy a publicar aquí también porque no se si corresponde preguntarte este problema a los expertos de CSS o a ustedes los de PHP, ok comienzo :
intentaré explicar lo mejor posible y en pocas lineas.
Tengo un sistema hecho en PHP + MySQL + CSS manualmente hecho por mi, el problema que este sistema presenta es que no es adaptable, entonces empece averiguar formas fáciles de añadirle adaptación, por lo que encontré: Materialize css.
Luego de descargarlo, subirlo al servidor, configurar y armar mi nuevo header. Reemplace el anterior header por el nuevo, la diferencia es que el nuevo es adaptable hasta los móviles.
Cual es el problema? Pues, resulta que mi sistema cada vez que hago clic en alguna de las opciones de la barra de navegación nueva, me tira a la pagina principal diciendo que tengo que iniciar sesión, es decir, por ALGUNA RAZÓN cuando hago click en una opción del nuevo header mi SESSION se elimina.
Hice las siguientes comprobaciones
- En una de las paginas eliminé el chequeo de login y puse un "echo" del nombre de la persona que inicia sesión y me sale vació.
- Reemplace el nuevo por el viejo header, y funciona perfectamente.

Por favor, necesito ayuda.
 
[MENTION=178712]i7strelok[/MENTION] Seguro es error de PHP, haciendo las condicionales del sistema de sesiones. Probablemente hay algo raro con esa condicional y cae en el else (donde te redirecciona al inicio de sesion). ¿El código lo hiciste tu o lo copiaste y pegaste?
 
[MENTION=178712]i7strelok[/MENTION] Seguro es error de PHP, haciendo las condicionales del sistema de sesiones. Probablemente hay algo raro con esa condicional y cae en el else (donde te redirecciona al inicio de sesion). ¿El código lo hiciste tu o lo copiaste y pegaste?

elii01, las condiciones siguen siendo las mismas.

1- Arriba de todo tiene esto: <?php session_start(); y <?php include("headers/header-adminNUEVO.php")?>
2- Abajo esta condición

Insertar CODE, HTML o PHP:
if(isset($_SESSION["Usuario"]))
		{
			if($_SESSION["Usuario"]["privilegio"] == "usuario")
			{
			 //Usuario
			 echo '<script language=Javascript>location.href="profile.php?error=E002";</script>';
			}

		}
		else{ //No inicio sesion
		     echo '<script language=Javascript>location.href="login.php?error=E001";</script>';
		}
Hay 2 privilegios, por ende, 2 headers disenados, algunas paginas son para un privilegio y otra para el otro, aunque algunas para ambos, lo que cambia es solamente ese IF y ELSE.
PD: No se como hacer mención así que no se si lo vas a ver a esto.
 
Última edición:
Para hacer mención basta con poner la arroba antes del nombre del usuario en cuestión.

Ponemos así:

Insertar CODE, HTML o PHP:
[U][URL="http://forobeta.com/member.php?u=130977"]@[/URL]elii01[/U]

Y el resultado es este:
elii01
 
[MENTION=43537]piano[/MENTION] gracias amigo.

tendrías alguna idea de que error puede ser?
 
[MENTION=178712]i7strelok[/MENTION]

No sé que puede ser, No hay código para ver.
Lo único recordarte que session_start() tiene que estar ANTES de cualquier linea que imprima en el html.

Y podias poner en el código para comprobar algo así:
Insertar CODE, HTML o PHP:
if(isset($_SESSION["Usuario"]))
		{ echo "<script> alert('hay sesion');</script>";
...................
..................
También el nuevo HEADER si usa AJAX tendrias que poner session_start() en las peticiones php.

Otra observación que no se si tendrá que ver, que para acceder a
echo '<script language=Javascript>location.href="profile.php?error=E002";</script>';
tienes dos condicionales IF, y no se si lo tienes bien o te has equivocado en un ' } '

Aún así es dificil abordar el problema con los datos que nos das.
 
[MENTION=172797]sevilla666[/MENTION]

1- session_start() es el primero si
2- no usa AJAX que yo sepa.

3- Puse tu sugerencia:

Insertar CODE, HTML o PHP:
if(isset($_SESSION["Usuario"]))
		{ echo "<script> alert('hay sesion');</script>"; }
		else{echo 'no hay sesion';}

cuando estoy en el login.php coloco los datos me lleva perfectamente a mi perfil y dice "hay sesion", pero cuando toco F5, me dice "no hay sesion". No entiendo porque.
 
[MENTION=178712]i7strelok[/MENTION]
Mira no sé el problema que hay pero:
Si creas una SESSION solo se elimina si la eliminas desde el servidor con session_destroy o al cerrar el navegador si session.cookie_lifetime = 0. Por lo tanto no tiene sentido que se elimine al hacer un refresh.
Asegurate que session_start() está bien escrito, con su guión bajo y dos ss y arriba del archivo.
Mira de observar la session con un complemento como firebug o similar.

Ya dirás pero a mi no se me ocurre nada mas.
Saludos
 
Buenas,

Como te dicen, la session no se pierde si no usas destroy, falta código por ver, pero en algún lugar de ese:

PHP:
<?php include("headers/header-adminNUEVO.php")?>

O bien se está actualizando o borrando.

Por experiencia propia, problemas raros que se suelen dar con las sesiones:

-> Tienen un limite de tamaño, en un tu caso no será el problema
-> Si usas algún framework, problemas con el modRegrite (en tu caso tampoco)
-> Algún error tonto con mayusculas/ minúsculas

Necesitaríamos más código para poder ayudarte.

Saludos
 
[MENTION=14521]ricky19[/MENTION]

Ya encontré el problema, yo guardaba un array en la session y me funcionaba perfecto, pero ahora el array no funciona.
Es decir, esta fue la solución:

$_SESSION["nombre"] = $datos[0];
y así sucesivamente con todos los datos.

Por cierto, pienso que es un error muy idiota.

Gracias [MENTION=130977]elii01[/MENTION]
 
* Para que pase eso es porque estás destruyendo la session, revisa en los includes y en la misma página que no tengas el session_destroy.

* También puede pasar porque la $_SESSION["privilegio"] no la tengas asignada, revisa bien esta parte puede que no le estés asignando ningún valor.

Saludos 😛irate:
 
Hay veces que php no toma el session_start debido a que hay un buffer de salida previamente... si no hay nada antes del <?php session_start(); puede ser que lo tenga codificado como UTF-8 y deberás ponerlo con UTF8 SIN BOM. Por cierto, intenta crear un archivo php con UTF8 SIN BOM y pon el siguiente código.

PHP:
<?php session_start();
print_r($_SESSION);

Ahi descartas si realmente se está destruyendo la sesión (cosa poco probable)
 
Atrás
Arriba