Foros del Web » Programando para Internet » PHP »

sessiones de ususarios

Estas en el tema de sessiones de ususarios en el foro de PHP en Foros del Web. hola a todos he seguido los pasos de un aporte publicado en este foro: http://www.forosdelweb.com/f18/aport...aporte-561417/ y casi todo funciona bien en la administracion de sesiones ...
  #1 (permalink)  
Antiguo 05/03/2009, 19:54
 
Fecha de Ingreso: enero-2009
Mensajes: 126
Antigüedad: 15 años, 3 meses
Puntos: 1
Pregunta sessiones de ususarios

hola a todos he seguido los pasos de un aporte publicado en este foro: http://www.forosdelweb.com/f18/aport...aporte-561417/
y casi todo funciona bien en la administracion de sesiones de usuario salvo por el detalle de que no funciona el salir.php supuestamente debe redirecionara entra.html o a pero no al cargar la pagina no sale nada solo una pagina en blanco
el codigo que uso es

reg.php
Código PHP:
<?php
$dbhost
='localhost'
$dbusername='root'
$dbuserpass=''
$dbname='cmsi'
// Conexión a la base de datos 
mysql_connect ($dbhost$dbusername$dbuserpass); 
mysql_select_db($dbname) or die("Cannot select database"); 

// Preguntaremos si se han enviado ya las variables necesarias 
if (isset($_POST["username"])) { 
$username $_POST["username"]; 
$password $_POST["password"]; 
$cpassword $_POST["cpassword"]; 
$email $_POST["email"]; 
// Hay campos en blanco 
if($username==NULL|$password==NULL|$cpassword==NULL|$email==NULL) { 
echo 
"un campo está vacio."
}else{ 
// ¿Coinciden las contraseñas? 
if($password!=$cpassword) { 
echo 
"Las contraseñas no coinciden"
}else{ 
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían 
$checkuser mysql_query("SELECT username FROM users WHERE username='$username'"); 
$username_exist mysql_num_rows($checkuser); 

$checkemail mysql_query("SELECT email FROM users WHERE email='$email'"); 
$email_exist mysql_num_rows($checkemail); 

if (
$email_exist>0|$username_exist>0) { 
echo 
"EL nombre de usuario o la cuenta de correo estan ya en uso"
}else{ 
//Todo parece correcto procedemos con la inserccion 
$query "INSERT INTO users (username, password, email) VALUES('$username','$password','$email')"
mysql_query($query) or die(mysql_error()); 
echo 
"El usuario $username ha sido registrado de manera satisfactoria."



}  

?>
reg.html
Código:
<form name="form1" method="post" action="reg.php">
  <TABLE>
    <TBODY>
      <TR>
        <TD align="right">Nombre de usuario:
          <INPUT maxLength="25" size="15" name="username">
        </TD>
      </TR>
      <TR>
        <TD align="right">Password:
          <INPUT type="password" maxLength="25" size="15" value="" name="password">
        </TD>
      </TR>
      <TR>
        <TD align="right">Repite Password:
          <INPUT type="password" maxLength="25" size="15" value="" name="cpassword">
        </TD>
      </TR>
      <TR>
        <TD align="right">Email:
          <INPUT maxLength="25" size="15" name="email">
        </TD>
      </TR>
      <TR>
        <TD align="middle"><INPUT name="submit" type="submit" value="Registro">
        </TD>
      </TR>
    </TBODY>
  </TABLE>
</form>
entra.html

Código:
<form name="form1" method="post" action="entrar.php">
  <table cellspacing="0" cellpadding="0">
    <TR>
      <TD align="right">Nombre de usuario:
        <INPUT maxLength="25" size="15" name="username">
      </TD>
    </TR>
    <TR>
      <TD align="right">Password:
        <INPUT type="password" maxLength="25" size="15" value="" name="password">
      </TD>
    </TR>
    <TR>
      <TD align="middle"><INPUT name="submit" type="submit" value="Login">
      </TD>
    </TR>
  </table>
</form>
entrar.php
Código PHP:
<?php
// Configura los datos de tu cuenta 
$dbhost='localhost'
$dbusername='root'
$dbuserpass=''
$dbname='cmsi'

session_start(); 

// Conectar a la base de datos 
mysql_connect ($dbhost$dbusername$dbuserpass); 
mysql_select_db($dbname) or die('Cannot select database'); 

if (
$_POST['username']) { 
//Comprobacion del envio del nombre de usuario y password 
$username=$_POST['username']; 
$password=$_POST['password']; 
if (
$password==NULL) { 
echo 
"La password no fue enviada"
}else{ 
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error()); 
$data mysql_fetch_array($query); 
if(
$data['password'] != $password) { 
echo 
"Login incorrecto"
}else{ 
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error()); 
$row mysql_fetch_array($query); 
session_name("usuarios_ingreso");
$_SESSION["s_username"] = $row['username']; 
$_SESSION["ultimoAcceso"]= date("Y-n-j H:i:s");
echo 
"Has sido logueado correctamente ".$_SESSION['s_username']." y puedes acceder al index.php."


}  
?>
index2.php
Código PHP:
<?php
// Configura la información de tu cuenta 
$dbhost='localhost'
$dbusername='root'
$dbuserpass=''
$dbname='cmsi'
session_start(); 

// Conexión a la base de datos 
mysql_connect ($dbhost$dbusername$dbuserpass); 
mysql_select_db($dbname) or die('Cannot select database'); 


if (isset(
$_SESSION['s_username'])) { 
echo 
"Bienvenido a mi sitio has ingresado como ".$_SESSION['s_username'].", gracias por la visita!"
}else{ 
echo 
"Tu no estas autentificado dirígete a login.php o registrate en register.php"
echo 
$_SESSION['s_username']; 
}  

//adicional 

session_start();

//antes de hacer los cálculos, compruebo que el usuario está logueado
//utilizamos el mismo script que antes
if (!isset($_SESSION['s_username'])) {
//si no está logueado lo envío a la página de autentificación
header("Location: entra.html");
} else {
//sino, calculamos el tiempo transcurrido
$fechaGuardada $_SESSION["ultimoAcceso"];
$ahora date("Y-n-j H:i:s");
$tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));

//comparamos el tiempo transcurrido
if($tiempo_transcurrido >= 120) {
//si pasaron 10 minutos o más
session_destroy(); // destruyo la sesión
header("Location: entra.html"); //envío al usuario a la pag. de autenticación
//sino, actualizo la fecha de la sesión
}else {
$_SESSION["ultimoAcceso"] = $ahora;
}
}


?>
salir.php

Código PHP:
<?   
session_start
();   
if(!isset(
$_SESSION['s_username'])){   
header("location: entra.html");   
} else {   
session_unset();   
session_destroy();   
header("location: index2.php");   
}   
?>
porfa mi problema es con el salir.php al cargar la pagina no carga nada de nada no hay ninguna accion me podrian decir cual es el problema
  #2 (permalink)  
Antiguo 05/03/2009, 20:07
Avatar de Sommy  
Fecha de Ingreso: septiembre-2008
Mensajes: 228
Antigüedad: 15 años, 7 meses
Puntos: 6
Respuesta: sessiones de ususarios

El header(location) no podes hacerlo una vez que enviaste los headers, osea imprimiste texto o algun espacio en blanco... Al igual que el session_start(); Deben ser las primeras lineas antes de enviar una cadena de salida.

Saludos.
  #3 (permalink)  
Antiguo 05/03/2009, 21:26
Avatar de bLEx  
Fecha de Ingreso: mayo-2008
Ubicación: Villa Alemana, Chile
Mensajes: 181
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: sessiones de ususarios

por ultimo agrega

Código php:
Ver original
  1. echo "<script> document.location='index2.php'; </script>";
  #4 (permalink)  
Antiguo 08/03/2009, 15:25
 
Fecha de Ingreso: enero-2009
Mensajes: 126
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: sessiones de ususarios

intente lo que me sugieren y nada me sigue pasando lo mismo al ejecytar salir.php me sale una pagina en blanco y no llega a destuir la sesion xq puedo seguir entrando a index2.php porfa me podrian dar un codigo pa el salir.php que destruya realmente la sesion
  #5 (permalink)  
Antiguo 09/03/2009, 04:48
Avatar de bLEx  
Fecha de Ingreso: mayo-2008
Ubicación: Villa Alemana, Chile
Mensajes: 181
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: sessiones de ususarios

cual es la manera mediante la cual accedes a los archivos???

1.- www.pagina.com/index.php?modulo=Nombre_modulo
2.-www.pagina.com/entrar.php

Si es la segunda, te recomiendo que en los inicios de los scripts coloques

Código php:
Ver original
  1. <?php
  2.  
  3. ...

Y lo otro:

Código php:
Ver original
  1. <?  
  2. if(!isset($_SESSION['s_username'])){  
  3. header("location: entra.html");  
  4. } else {  
  5. echo "<script> document.location='index2.php'; </script>";
  6. }  
  7. ?>

prueba asi...
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 14:22.