Foros del Web » Programando para Internet » PHP »

Problema sesiones

Estas en el tema de Problema sesiones en el foro de PHP en Foros del Web. Hola a todos, miren escribo este post porque tengo un pequeño problema con la sesión y no se como solucionarlo y es el siguiente: Tengo ...
  #1 (permalink)  
Antiguo 20/01/2011, 07:40
 
Fecha de Ingreso: enero-2011
Mensajes: 56
Antigüedad: 13 años, 3 meses
Puntos: 1
Problema sesiones

Hola a todos, miren escribo este post porque tengo un pequeño problema con la sesión y no se como solucionarlo y es el siguiente:


Tengo un sistema de usuarios , y despues de que hagan sesion en el perfil del usuario tengo un menu al que se pueden dirigir y cuando van por una pagina (ejemplo a la de mensajes) pues se pierde la sesion y tiene que volver a hacer sesion , ¿Como podria arreglarlo?

Gracias y Salu2
  #2 (permalink)  
Antiguo 20/01/2011, 07:52
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Problema sesiones

lo que debes hacer es en la pagina de logueo (inicio de sesion ) creas una sesion si el user y pass son correctos...

debes colocar al principio de la pagina en la primera linea <?php session_start(); ?> despues con un if creas las variables de session asi:

if (usuario y contraseña estan bien){
session['acceso']="si";
}else{
session['acceso]'="no";
}

despues en las paginas que quieres mostrarle o no el menu colocas un if con la variables de session acceso mas o menos asi:

primero en la primera linea colocas lo mismo <?php session_start(); ?> despues el if donde quieras:

if (session['acceso'] = "si"){
mostrar menu;
}else{
no mostrar menu;
}

bueno esto es como una aproximacion... puedes colocar muchas cosas para que tus sessiones sean mas seguras pero esto te dara una idea...

buena suerte
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 20/01/2011, 07:52
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 1 mes
Puntos: 15
Respuesta: Problema sesiones

coloca algo de codigo para ver un poco mas , el problema parece esque no estas colocando session_star() al incio de los archivos.

saludos
  #4 (permalink)  
Antiguo 20/01/2011, 08:15
 
Fecha de Ingreso: enero-2011
Mensajes: 56
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Problema sesiones

gracias, y si que le puse el session start lo qe pasa es que creo que se pierde la sesion.
  #5 (permalink)  
Antiguo 20/01/2011, 08:17
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Problema sesiones

codigo compadre....

  #6 (permalink)  
Antiguo 20/01/2011, 08:36
 
Fecha de Ingreso: enero-2011
Mensajes: 56
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Problema sesiones

Bien pues estos son los codigos:

Login.php:

<html>
<body bgcolor="#BDBDBD" link="black" alink="black" vlink="black">
<center><h1><font color="white">Desvario</font></h1></center>
<hr>
<br>
<br>
<table align=center valign=middle border=3 bordercolor="white">
<tr>
<td>
<form action="validar_usuario.php" method="post">
Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
<br />
Password:<input type="password" name="password" size="10" maxlength="10" />
<br />
<center><a href="http://www.redesp.uphero.com/index.html">Volver al Inicio</a>
<br>
<input type="submit" value="Ingresar" /></center>
</form>
</td>
</tr>
</table>
</body>
</html>


VALIDAR_USUARIO.PHP:

<?php session_start();

//datos para establecer la conexion con la base de mysql.
mysql_connect('host','usuario','password')or die ('Ha fallado la conexi&oacute;n: '.mysql_error());
mysql_select_db('bd')or die ('Error al seleccionar la Base de Datos: '.mysql_error());

function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}

if(trim($HTTP_POST_VARS["usuario"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
{
$usuario = strtolower(htmlentities($HTTP_POST_VARS["usuario"], ENT_QUOTES));
$password = $HTTP_POST_VARS["password"];


$result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
if($row = mysql_fetch_array($result)){
if($row["password"] == $password){

$_SESSION["k_username"] = $row['usuario'];
header("Location: index.php");

echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
echo '<a href="index.php">Index</a></p>';

<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>*/

}else{
echo 'Password incorrecto';
}
}else{
echo 'Usuario no existente en la base de datos';
}
mysql_free_result($result);
}else{
echo 'Debe especificar un usuario y password';
}
mysql_close();
?>


INDEX.PHP:

<html>
<head>
<title>Problema</title>
<link rel="StyleSheet" href="estilos.css" type="text/css">
</head>
<body>
include("config.php");
<div id="contenedor">
<div id="cabecera">
<table>
<tr>
<td><a href="http://www.redesp.uphero.com/mensajes/index.php">Mensajes</a>
</td>
</tr>
</table>
</div>
<div id="columna1">
<?php session_start();
if (isset($_SESSION['k_username'])) {
echo '<b>'.$_SESSION['k_username'].'</b>.';
echo '<p><a href="logout.php">Logout</a></p>';
echo '<b>'.$SESSION['email'].'</b>';
}else{
header ("Location: http://www.redesp.uphero.com/index.html");
}

?>
</div>
<div id="columna2">
<h2>Título de la columna</h2>
<p>Contenido de la columna2. </p>
</div>
<div id="pie">
Pié de página.
</div>
</div>
</body>
</html>


Y aqui la pagina donde se me pierde la sesion (un sistema de mensajeria interna):

<?php
session_start();
mysql_connect("host","usuario", "password") or die ("Hubo un error al procesar los solicitado");
mysql_select_db("bd");
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="alfonso">
<title>Mensajes</title>
<link href="estilo.css" rel="stylesheet" type="text/css">
</head>
<body>
<?php
if(isset($_GET["delete"])) {
$id = $_GET["delete"];
if(mysql_query("DELETE FROM `mensajes-privados` WHERE id = '$id'")) {
echo "<div id='bien'><img src='Imagenes/bien.png' /> El mensaje ha sido elimiando con éxito</div>";
} else {
echo "<div id='error'><img src='Imagenes/error.png' /> El mensaje no puedo ser elimiando. Vuelve a intentarlo en unos minutos</div>";
}
}
?>
<div class='mensajes'>
<?php
if(!isset($_SESSION["conectado"])){
echo "<div id='error'><img src='Imagenes/error.png' /> Debes ingresar para poder enviar mensajes</div>";showFrom();
}
else {
showFrom();
}
?>
<?php function showFrom() { ?>
<div class='carpeta'><strong>Carpeta: inbox </strong></div>
<div class='espacio'>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</div>
<div class='menu'><strong><a href="index.php"><img src="Imagenes/recibido.gif" width="18" height="13" border="0"> Mensajes recibidos </a></strong><br>
<br>
<strong><a href="redactar.php"><img src="Imagenes/escribir.gif" width="17" height="17" border="0"> Escribir mensaje</a></strong></div>
<div class='leer'>
<?php
$user = $_SESSION['usuario'];
$q = "SELECT * FROM `mensajes-privados` WHERE para = '$user' ORDER BY id DESC";
if(!($result_set = mysql_query($q))) die(mysql_error());
$number = mysql_num_rows($result_set);

if ($number) {

while ($row = mysql_fetch_array($result_set))
{
$mid[] = $row['id'];
$mde[] = $row['de'];
$masunto[] = $row['asunto'];
$mleido[] = $row['leido'];

}


$max_show = 5;

if (isset($_GET["page"]))
$page = $_GET["page"];
else
$page = 1;



$from2 = $page * $max_show;
if ($from2 > $number)
{
$diff = $number % $max_show;
$from2 = $number;
$from1 = $from2 - $diff;
}
else
$from1 = $from2 - $max_show;


echo "<table border='1' width=550px style='FONT-SIZE: 12px;'><tr height=50>";
echo "<td> </td>
<td> <b><u>Remitente</u></b></td>
<td> <b><u>Asunto</u></b></td>
<td> <b><u>Leido</u></b></td>
<td> <b><u>Acción</u></b></td></tr>";


for ($i=$from1; $i < $from2; $i++) {

echo "<tr>";
echo "<td> <a href=\"leer.php?id={$mid[$i]}\"><img src='Imagenes/mensaje-abierto.gif' border='0'> Leer</a></td>
<td> {$mde[$i]}</td>
<td> {$masunto[$i]}</td>
<td> {$mleido[$i]}</td>
<td> <a href=\"index.php?delete={$mid[$i]}\"><img src='Imagenes/borrar.png'></a></b></td>";
}

echo "</tr></table>";
echo "<br><br><table width='550px' border='0'><tr>";
echo "<td align='right' width='50%'>&nbsp;";

if ($from1 > 0)
{
$previous = $page - 1;
echo "<a href='index.php?page=$previous'><< Página anterior</a>";
} echo "</td>";


echo "<td align=left width=50%>&nbsp;&nbsp;&nbsp;";
if ($from2 < $number)
{
$next = $page + 1;
echo "<a href='index.php?page=$next'>Página siguiente >></a>";
} echo "</td></tr></table>";



}
else
echo "<strong>No tienes ningún mensaje.</strong>";
}
?>
</div>
</div>
</body>
</html>


Y este es el codigo, gracias :D
  #7 (permalink)  
Antiguo 20/01/2011, 08:41
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Problema sesiones

por que no has colocado session_start en el index ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #8 (permalink)  
Antiguo 20/01/2011, 08:50
 
Fecha de Ingreso: enero-2011
Mensajes: 56
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Problema sesiones

Si que tiene , fijate en columna 1 :D
  #9 (permalink)  
Antiguo 20/01/2011, 08:52
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Problema sesiones

Segun tengo entendido session_start debe ir ANTES de cualquier codigo HTML sino no funciona...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #10 (permalink)  
Antiguo 20/01/2011, 08:54
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Problema sesiones

aqui por lo menos no esta...pero supongo que tienes session_start(); arriba de la pagina
  #11 (permalink)  
Antiguo 20/01/2011, 08:55
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Problema sesiones

ya lo vi...que ordinario...dejalo arriba....
  #12 (permalink)  
Antiguo 20/01/2011, 08:59
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Problema sesiones

<?php
session_start();
mysql_connect("host","usuario", "password") or die ("Hubo un error al procesar los solicitado");
mysql_select_db("bd");
<html>
<head>

yo veo que te falta cerrar php
  #13 (permalink)  
Antiguo 20/01/2011, 09:02
 
Fecha de Ingreso: enero-2011
Mensajes: 13
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Problema sesiones

Cita:
Iniciado por jotaincubus Ver Mensaje
Segun tengo entendido session_start debe ir ANTES de cualquier codigo HTML sino no funciona...
exacto va antes que cualqueir codigo en la linea1

yo tengo un problema similar con las sessiones, tengo un index.html que le envia mi validarUsuarios.php y luego a un formulario de consulta .php, al enviar de este 2° php al 3° pierdo las variables.

Código:
validaUsuarios.php
<?php session_start();?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>

		<title>Valida Usuario</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		
	</head>


<body>
	<form id="validaUsuarios" name="validaUsuarios" method="post" >
	<!-- Declaracion de las variables a utilizar en este segmento -->
	<?php
	/*-------------        Variables obtenidas desde index.html             ------------------*/
	
	echo "Redireccionando...<br>Espere unos segundos...<br>";
	$rutVal = $_POST['rut'];/*Captura el rut del usuario a ingresar*/
	$_SESSION[''] = $rutVal;
	$password = $_POST['password'];/*Captura la password del usuario*/
	$passEnc = md5($password);/*convierte la clave a formato md5 para compararla con la que se encuentra en la BD*/
	$sucursal = $_POST['sucursal'];/*obtiene la sucursal seleccionada*/
	
	/*----------         Variables modificadas dentro del archivo              ---------------*/
	
	$valido = false;/*Corresponde al acceso exitoso a las Bases de Datos*/
	
	
	/*-----------        Revisa si el usuario es valido en cada una de las sucursales    -----*/
	
	if($sucursal =="0"){
		?><script language="javascript">
			alert("Debe Seleccionar una sucursal");
			window.location="index.html";
		</script>
		<?php
	}
	else{ if($sucursal == "1"){
		$SERVER="";/*Direccion Servidor*/
		$USER = "";/*Usuario de ingreso a la Base de Datos*/
		$PASS = "";/*Clave de ingreso a la Base de Datos*/
		$BDATA = "";/*Base de Datos a ingresar*/
	}
//varios if mas aca
        else if{
         }
         }
		
	/*-----------       Codigo Standar para el ingreso a la Base de Datos      ---------------*/	
	
		$link = mssql_connect($SERVER,$USER,$PASS)or die("No se logro conectar con la Base de Datos"); 
			mssql_select_db($BDATA, $link)or die("Base de Datos No encontrada");
		$query=mssql_query("SELECT * FROM USERINFO",$link)or die ("Error en la consulta");
		if (!mssql_num_rows($query)) {//verifica que exista respuesta
  			  echo 'No se encontraron Resultados';
		} 
		else {
			$i=0;
    		while( $i < mssql_num_rows($query)){
			
      	 		if($rutVal == mssql_result($query, $i, SSN)){//Obtiene el nombre del usuario
					$pwdTemp = mssql_result($query, $i, pswd_usr);//Obtiene la clave del usuario
					$valido = true;
				}
				$i++;
    		}
			if($valido){
				if($passEnc == $pwdTemp){//Si la clave del usuario es correcta se redirije a la pagina de consultas
				
				mssql_close($link);
				?>
					<script language="javascript">
						window.location="formCons.php?";
					</script><?php
				 echo $rutVal;
				}
				else{?>
				<script language="javascript">
					alert("Clave Invalida");
					window.location="index.html";
				</script><?php
				}
			}
			else{
			?>
				<script language="javascript">
					alert("Usuario no encontrado \nPruebe seleccionando otra sucursal \nSi llegase a repetirse comuniquese con el Administrador");
					window.location="index.html";
				</script><?php
				session_destroy();
			}
		}
	}
?>
</body>
</form>
</html>
ojala alguien pudiese ayudarme tambien.

Última edición por Zilverx; 20/01/2011 a las 09:11
  #14 (permalink)  
Antiguo 20/01/2011, 09:11
 
Fecha de Ingreso: agosto-2010
Ubicación: santiago, CHILE
Mensajes: 564
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Problema sesiones

hace echo a tu session en cada parte de la pagina

algo asi

echo "1.- ".$_SESSION['user_id']."<br>";

despues mas abajo de la pagina

echo "2.- ".$_SESSION['user_id']."<br>";

asi sucesivamente con todo para ver donde se cae....

ejemplo:
echo "1.- ".$_SESSION['user_id']."<br>"; // aqui va bien
$dato = mis_datos($rut);
echo "2.- ".$_SESSION['user_id']."<br>"; //..aqui se cae

entonces el problema esta en la funcion mis datos

es una gran paja...pero hay que hacerla...

Etiquetas: sesiones
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 15:18.