Foros del Web » Programando para Internet » PHP »

Problema con sesión,login y logout

Estas en el tema de Problema con sesión,login y logout en el foro de PHP en Foros del Web. Hola amigos, Tengo un problema con un script que compré, ya he resuelto varios fallos que daba pero como no tengo muchos conocimientos de scripts ...
  #1 (permalink)  
Antiguo 15/10/2012, 08:38
 
Fecha de Ingreso: octubre-2008
Mensajes: 10
Antigüedad: 16 años, 1 mes
Puntos: 0
Problema con sesión,login y logout

Hola amigos,
Tengo un problema con un script que compré, ya he resuelto varios fallos que daba pero como no tengo muchos conocimientos de scripts esto se me resiste, y quizás sea una tontería, pero ya estoy desesperado y veo que cómo no lo arregle perdí dinero tontamente :(. La web es:

http://www.noticion.net

Resulta que cuando un usuario entra en su cuenta, la sesión entra y sale como le da la gana. Se supone que al estar logeado arriba aparece "gestionar mis anuncios/salir/contacto", pero si te logeas y vuelves a la página principal a veces cambiar de nuevo a "acceder a mi cuenta/contacto". Luego refrescas y de repente vuelves a estar logeado, luego entras en la página de contacto y vuelve a deslogearse, hace cosas muy raras. Podéis probarlo:

noticion.net/acceder
usuario: [email protected]
contraseña: noticion

Lo mismo pasa al deslogearse. Cuando le doy a salir parece que no hace efecto, sigue igual de logeado, pero le das a gestionar anuncios y los anuncios no aparecen y deslogea, de nuevo no funciona bien. Sé que debería funcionar bien porque en la demo original sí funciona y no pasan estas cosas. Los scripts son:

En el main para los enlaces está:
Código:
<div id="header_main"><a href="" ><h1><? echo $h1SEO; ?></h1></a><div id="nav"><ul><? if(!isset($_SESSION['mail'])){ ?><li><a href="acceder" rel="nofollow">Acceder a mi Cuenta</a></li><? }else{ ?><li><a href="mis-anuncios" rel="nofollow">Gestionar Mis Anuncios</a></li>
  <li><a href="salir" rel="nofollow">Salir</a></li>
<? } ?><li class="n"><a href="contactar" rel="nofollow">Contacto</a></li></ul></div><div class="h2"><? echo $h2SEO; ?></div></div>
el script del login es:
Código:
<?php
error_reporting(0);
require_once('../content/config.php');
require_once('sql.php');
if(isset($_POST['mail'])  && !isset($_SESSION['mail'])){
  $mail = mysql_real_escape_string($_POST['mail']); 
  $pass = md5($_POST['pass']);
  
    $result = recoger("usuarios", $a=array('email' => $mail, 'pass' => $pass), "");
	if(count($result) != 0){
         @session_start();
			$_SESSION["id_usuario"] = $result[0]['id_usuario'];
			$_SESSION["mail"] = strtolower($result[0]['email']);
			$_SESSION["pass"] = $result[0]['pass'];
			$sesion = $_SESSION["id_usuario"] . "." . $_SESSION["mail"];
			setcookie("sesion", $sesion, time()+5184000, "/", "noticion.net");
			if($result[0]['chpass']!=1){$url = "../../index.php";}else{$url="../../cambiar-pass/";}
               
	}else{
			$url = "../../acceder";
	}
}else{
	$url = "../../acceder";

}
echo '<script type="text/javascript">
            location.href = "'.$url.'";
            </script>';
?>
El script del logout es:
Código:
<?php
@session_start();
error_reporting(0);
require_once('../content/config.php'); // Aqui me conecto a BD (funtion connectar)
setcookie ("sesion", "", time()-5184000 , "/", "noticion.net");
session_destroy();
echo '<script type="text/javascript">
             location.href = "../../index.php";
            </script>';
?>
Parece ser que hay algo mal en la configuración.
¿Algún alma caritativa puede echarme una mano? :confused:
Si necesitáis que adjunte algo más no hay problema
  #2 (permalink)  
Antiguo 15/10/2012, 08:46
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 15 años, 2 meses
Puntos: 44
Respuesta: Problema con sesión,login y logout

trata poniendo esta linea:

Código PHP:
Ver original 

antes de cada codigo... antes que nada debe de ir hasta arriba....
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!
  #3 (permalink)  
Antiguo 15/10/2012, 10:33
 
Fecha de Ingreso: febrero-2011
Mensajes: 28
Antigüedad: 13 años, 9 meses
Puntos: 3
Mensaje Respuesta: Problema con sesión,login y logout

Yo te recomendaria tener un archivo exclusivamente para este tema, y que lo llames cada vez que lo necesites a traves de un require_once o include.
El contenido de este archivo seria algo asi:

session_start();
if(!isset($_SESSION['usuario'])){
echo "<meta http-equiv='Refresh' content='0;url=login.php'>";
exit;
}

Puedes manejarlo para que se adapte a tu codigo. Lo que hace es iniciar la sesion, si esta seteada la variable usuario (con la que se logea), accede, sino, te redirecciona a la pagina de inicio. Naturalmente, esta pensado para que pueda navegar la pagina o sistema alguien con usuario que se logeo correctamente
  #4 (permalink)  
Antiguo 15/10/2012, 11:37
 
Fecha de Ingreso: octubre-2008
Mensajes: 10
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema con sesión,login y logout

Nada, he probado a subir el session start arriba en el login (porque en el logout ya está arriba) pero nada, se sigue quedando logeado cuando le dá la gana, le das a salir y no se deslogea, actualizas la página y de repente si está logeado, vaya lío :S

Y lo que me propone patadaninja parece funcional, pero con mis conocimientos nulos no puedo hacerlo, ¿hay algún programador por forosdelweb realmente bueno que le mande el script y me busque donde está el fallo (con compensación económica claro)? Como os digo, sé que el código es funcional porque en la demo danuncio.com sí que funciona correctamente, entonces quizás es algo de la configuración en otro servidor, ¿o permisos?

Un saludo y gracias por la ayuda!!
  #5 (permalink)  
Antiguo 15/10/2012, 17:32
 
Fecha de Ingreso: octubre-2008
Mensajes: 10
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Problema con sesión,login y logout

Hola amigos, he seguido investigando y he descubierto algo más sobre el error con el script para logearse y quedarse conectado y deslogearse:

Lo que está pasando es que cada vez que se logea o desconecta hay que refrescar la página en la que se está para que muestre correctamente el estado en el que se está (logeado si es un usuario, o desconectado si el usuario ha dado a salir o es un visitante).

Si por ejemplo me logeo en el index (la página principal), luego pincho en contacto arriba no aparezco logeado (sigue apareciendo acceder a mi cuenta), pero si refresco la página ya aparezco logeado correctamente, y lo mismo pasa al revés si me he desconectado: aparezco conectado y si refresco ya aparezco como debería estar, desconectado.

Esto pasa en toda la navegación por la página, y con refrescar una vez en cada página ya muestra siempre el estado correctamente.

¿A alguien esto le da una pista de donde puede estar el error?

Muchas gracias de antemano

Etiquetas: logout, mysql, sql, usuarios
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 10:01.