Foros del Web » Programando para Internet » PHP »

ayuda con loguin php y sessions

Estas en el tema de ayuda con loguin php y sessions en el foro de PHP en Foros del Web. Hola tengo el siguiente problema, hice un sistema de usuarios con el siguiente esquema index.htm donde se encuentra el link a la pagina loguin con ...
  #1 (permalink)  
Antiguo 25/09/2008, 22:19
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
ayuda con loguin php y sessions

Hola tengo el siguiente problema, hice un sistema de usuarios con el siguiente esquema
index.htm donde se encuentra el link a la pagina loguin con un form para loguearse con usuario y contraseña, "login.php" una vez aquí el form es eviado a la aplicacion php "login2.php" que se encarga de conectarse a la base de datos, y de seguir con la sesion con session.start(); indica que si no estas logueado correctamente te tire a "login3.php" o si te logueaste bien a "index.php" , pero si yo voy directamente hasta index.php sin pasar por el loguin me permite ingresar solo que aparece una leyenda que dice que no estoy logueado y que me loguee, pero igualmente me esta mostrando la info que quiero que este protegida. Necesito un codigo que me permita restringir las paginas que no quiero que los visitantes sin loguearse vean, estoy ya que no doy mas. necesito una mano urgente ya que tengo que entregar este proyecto en 3 dias.

login.php

<form action='login2.php' method='POST'>
<table width="250" border="0">
<tr>
<td width="268"> <div align="right">Nombre de usuario:
<input type='text' size='15' maxlength='25' name='usuario'>
</div></td>
</tr>
<tr>
<td> <div align="right">Password:
<input type='password' size='15' maxlength='25' name='pass1'>
</div></td>
</tr>
<tr>
<td><div align="right">
<input type="submit" value="Login">
</div></td>
</tr>
</table>
</form>

login2.php

<?php
session_start();
?>
<?php
include ("dbconexion.php");
if ($_POST['usuario']) {

$usuario=$_POST['usuario'];
$pass1=$_POST['pass1'];
if ($pass1==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT usuario,pass1 FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['pass1'] != $pass1) {
header ("location: login3.php");
}else{
$query = mysql_query("SELECT usuario,pass1 FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_usuario"] = $row['usuario'];
header ("location: locales/index.php");
}
}
}
?>

index.php
solo le puse
<?php
session_start();
?>
y necesito una variable para hacer que si yo escribo www.miweb.com.ar/index.php no me deje entrar sino que me redireccione a login3.php que es donde indico acceso restingido login incorrecto por favor logueate y le pongo un form igual al que esta en login.php para que se loguee.

desde ya toda la ayuda será bienvenida.
  #2 (permalink)  
Antiguo 26/09/2008, 03:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: ayuda con loguin php y sessions

comprueba si han sido cargadas las variables de sesión al principio de la página. si no es así redirecciona a otra (por ejemplo a la de login)
  #3 (permalink)  
Antiguo 26/09/2008, 04:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación Respuesta: ayuda con loguin php y sessions

Si como veras en el index.php esta el start_session(); que me reconoce cuando entro por el login.php, y ademas tengo un session de usuario que me identifica el nombre que he puesto o sea que no se corta la session, necesito como decia el codigo para poder restringir las paginas que si no entro con start_session(); o sea que si tipeo index.php y no estoy logueado no me permita ver las paginas.

gracias por tu respuesta, pero no me ayudo
  #4 (permalink)  
Antiguo 26/09/2008, 05:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: ayuda con loguin php y sessions

crea la sesión en el momento de consultar el logueo. Así cuando llames a index solo tienes que comprobar si se ha creado previamente (con alguna variable de sesion):

if(!isset($_SESSION['NOMBRE'])){header("Location: login.php"); session_destroy(); exit;}

así compruebas si exite la sesion creada por el login.
  #5 (permalink)  
Antiguo 26/09/2008, 19:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Sonrisa Respuesta: ayuda con loguin php y sessions

Cita:
Iniciado por ilie Ver Mensaje
crea la sesión en el momento de consultar el logueo. Así cuando llames a index solo tienes que comprobar si se ha creado previamente (con alguna variable de sesion):

if(!isset($_SESSION['NOMBRE'])){header("Location: login.php"); session_destroy(); exit;}

así compruebas si exite la sesion creada por el login.
me puedes ayudar un poco mas segun mi explicacion del esquema que plantee ya que no soy muy ducho con php recien inicio, desde ya muchas gracias
  #6 (permalink)  
Antiguo 27/09/2008, 09:33
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: ayuda con loguin php y sessions

Que tal h3greed, primero que todo te invito sino sabes mucho leas el Manual de PHP, para que ademas de copiar los códigos entiendas la ejecución de los mismos, como ya te dijo ilie, al principio de las páginas que consideras de acceso privado debes validar que se haya iniciado una sesión de lo contrario impides el acceso, en ese orden de ideas y siguiendo lo que haces con tu código modifícalo así:

login2.php
Código PHP:
<?php
session_start
();
include (
"dbconexion.php");
if (isset(
$_POST['usuario'])) {
$usuario $_POST['usuario'];
$pass1 $_POST['pass1'];
if (
$pass1== NULL) {
echo 
"La password no fue enviada";
}else{
$query mysql_query("SELECT usuario,pass1 FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['pass1'] != $pass1 or $data['usuario'] != $usuario) {
header("location: login3.php");
}else{
$_SESSION['s_usuario'] = $data['usuario'];
$_SESSION['estado'] = "Logueado";
header("location: locales/index.php");}}}
?>
Luego en index.php, simplemente verificas que se haya iniciado sesión
Código PHP:
session_start();
if(isset(
$_SESSION['s_usuario']) && $_SESSION['estado'] == "Logueado"){
// Le permites el acceso al index.php
}else{
   
// Redireccionas a login3.php
   
header("location: login3.php");} 
Tambien te invito a que mires los aportes del foro
http://www.forosdelweb.com/f18/aport...aporte-561417/

Saludos.
  #7 (permalink)  
Antiguo 29/09/2008, 19:22
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
De acuerdo Respuesta: ayuda con loguin php y sessions

Muchas gracias me has salvado, tienes razon Carlojas en eso de andar copiando codigos, esta vez no tuve tiempo de estudiar, me dieron la asignacion sin tiempo, pero una vez terminado el trabajo prometo que me voy a poner a averiguar y a estudiar sobre el tema


Cita:
Iniciado por Carlojas Ver Mensaje
Que tal h3greed, para que ademas de copiar los códigos entiendas la ejecución de los mismos, como ya te dijo ilie, al principio de las páginas que consideras de acceso privado debes validar que se haya iniciado una sesión de lo contrario impides el acceso, en ese orden de ideas y siguiendo lo que haces con tu código modifícalo así:

login2.php
Código PHP:
<?php
session_start
();
include (
"dbconexion.php");
if (isset(
$_POST['usuario'])) {
$usuario $_POST['usuario'];
$pass1 $_POST['pass1'];
if (
$pass1== NULL) {
echo 
"La password no fue enviada";
}else{
$query mysql_query("SELECT usuario,pass1 FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['pass1'] != $pass1 or $data['usuario'] != $usuario) {
header("location: login3.php");
}else{
$_SESSION['s_usuario'] = $data['usuario'];
$_SESSION['estado'] = "Logueado";
header("location: locales/index.php");}}}
?>
Luego en index.php, simplemente verificas que se haya iniciado sesión
Código PHP:
session_start();
if(isset(
$_SESSION['s_usuario']) && $_SESSION['estado'] == "Logueado"){
// Le permites el acceso al index.php
}else{
   
// Redireccionas a login3.php
   
header("location: login3.php");} 
Tambien te invito a que mires los aportes del foro


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 10:33.