Foros del Web » Programando para Internet » PHP »

Mal funcionamiento de sesiones

Estas en el tema de Mal funcionamiento de sesiones en el foro de PHP en Foros del Web. Hola amigos de forosdelweb, Este es mi segundo post y espero me puedan ayudar. Estoy creando una aplicación en php donde los usuarios tienen que ...
  #1 (permalink)  
Antiguo 27/03/2009, 09:46
Avatar de thebearprogramer  
Fecha de Ingreso: marzo-2009
Mensajes: 17
Antigüedad: 15 años, 1 mes
Puntos: 1
Pregunta Mal funcionamiento de sesiones

Hola amigos de forosdelweb,

Este es mi segundo post y espero me puedan ayudar.

Estoy creando una aplicación en php donde los usuarios tienen que iniciar sesión con su usuario y contraseña la validación no tiene problema, este empieza cuando trato de leer datos de la sesión creada, pareciera que esta no existe y por lo tanto me regresa a la página para meter de nuevo el usuario y la contraseña. Aquí les pongo el código que uso para el login.

Código:
class loginUserInt
{
	var $usuario;
	var $password;
	var $nombre;
	var $passdb;
	var $flag;
	var $priv;
	var $conexion;
	var $loged;
	var $ip;
	var $id;
	function loginUserInt($usuario,$password,$conexion)
	{
		$this->user=$usuario;
		$this->pass=$password;
		$this->conn=$conexion;
	}
	function doLogin()
	{
		
		$_SESSION['errorlog']="";
		$result = mysql_query("SELECT iduser, password, nombre, privilegios, loged, ip FROM daacpe WHERE usuario='$this->user'",$this->conn);
		if(!$result)
			{
				$x=mysql_error();
				print("$x");
			}
		$rows = mysql_num_rows($result);
		if($rows==0)
		{
			$flag=false;
			mysql_free_result($result);
			$_SESSION['errorlog']="Usuario o Contraseña incorrectos.";
			return $flag;
		}
		else
		{
			while($row=mysql_fetch_array($result))
			{
				$passdb=$row['password'];
				$nombre=$row['nombre'];
				$priv=$row['privilegios'];
				$loged=$row['loged'];
				$ip=$row['ip'];
				$id=$row['iduser'];
			}
			if($loged=='1')
			{
				$_SESSION['errorlog']="Esta cuenta ya tiene una sesión activa en la dirección ip:$ip";
				$flag=false;
				return $flag;
			}
			else
			{
				if($this->pass==$passdb)
				{
								
						$result=mysql_query("UPDATE daacpe SET loged='1',ip='$_SERVER[REMOTE_ADDR]' WHERE usuario='$this->user'",$this->conn);
						if(!$result)
							{
								$x=mysql_error();
								print("$x");
							}
						$_SESSION['id']=$id;
						$_SESSION['nombre']=$nombre;
						$_SESSION['loged']='1';
						$_SESSION['privilegios']=$priv;
						$_SESSION['SESSION_TIME']=time();
						$flag=true;
						return $flag;
				}
				else
					{
						$flag=false;
						$_SESSION['errorlog']="Usuario o Contraseña incorrectos.";
						mysql_free_result($result);
						return $flag;
					}
			}
		}
	}
	function killSession()
	{
		session_unset();
		session_destroy();
	}
}
Lo peor del caso es que el login lo hace perfecto pues me escribe en la base de datos los valores, pero tal parece que la sesión no se crea. Este es el código que manda llamar a la clase.
Código:
$usuario = new loginUserInt($_POST['usuario'],$_POST['password'],$conn->doConnection());
			if($usuario->doLogin())
			{?>
				<script language="javascript">
				window.location.href="menuint.php";
				</script>
			<?php
				
			}
			else
			{
			$error="$_SESSION[errorlog]";
			//session_register('error');
			?>
				<script language="javascript">
				
				alert("<?php echo($error)?>");
				<?php $usuario->killSession();?>
				window.location.href="login.php";
				</script>
				
			<?php
			}
		}
Está parte del código se ejecuta bien, pues en un segundo intento me dice que el usuario ya tiene una sesión y me envía la ip.

Este es el código que uso para validar que el usuario esta logueado.

Código:
session_save_path("path donde se guardan mis sesiones");
session_start();
if(isset($_SESSION['loged']))
{
	if($_SESSION['loged']=='0')
	{?>
	<script language="javascript">
	window.location.href="login.php";
	</script>
	<?php
	}	
}
else
{?>
	<script language="javascript">
	alert("la sesion no se genero");//esto lo he puesto cómo prueba.
	window.location.href="login.php";
	</script>
	<?php	
}
Ahora bien, esto no me pasa siempre, sólo en ciertas ocasiones, por lo que tengo que entrar a la base de datos y borrar los datos de logeado e ip.
A veces también pasa que después de unos 2 o 3 minutos si doy clic en algún link me regresa a la página de login y si trato de entrar directo con el nombre de la página "triple w.mipagina.com diagonal menuint.php"(no puedo poner enlaces ) me sigue regresando al login. =(

Espero me puedan ayudar.

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 00:56.