Foros del Web » Programando para Internet » PHP »

Problema con Login

Estas en el tema de Problema con Login en el foro de PHP en Foros del Web. Tengo una página llamada login.php que es un formulario de logueo, y al iniciar sesion capturo los datos del usuario y los guardo en una ...
  #1 (permalink)  
Antiguo 30/06/2012, 17:59
 
Fecha de Ingreso: julio-2005
Mensajes: 204
Antigüedad: 19 años, 4 meses
Puntos: 1
Problema con Login

Tengo una página llamada login.php que es un formulario de logueo, y al iniciar sesion capturo los datos del usuario y los guardo en una variable de sesion. El tema es que una vez que inicie sesion, si vuelvo a entrar a la página login.php en vez de mostrarme lo que debe suceder una vez iniciada sesion, me vuelve a mostrar el formulario de iniciar sesion

Les dejo el codigo a ver si me pueden ayudar

Saludos!

Código PHP:
<?php
session_start
();
include_once(
'configuraciones.php');
include_once(
'funciones.php');
if(
$_SERVER['REQUEST_METHOD'] == 'GET') {
echo 
formulario_login();
}
else if(
$_SERVER['REQUEST_METHOD'] == 'POST') {
$c =conectar($GLOBALS['servidor'],$GLOBALS['usuario'],$GLOBALS['contrasenia'],$GLOBALS['bd']);
$email mysql_real_escape_string($_POST['email']);
$clave sha1($_POST['clave']);
$sql "SELECT usuarios_registrados.email, usuarios_registrados.clave, usuarios_registrados.nombre, usuarios_tipo.id from usuarios_registrados JOIN usuarios_tipo on usuarios_registrados.id_usuarios_tipo = usuarios_tipo.id where email = '$email' AND clave = '$clave'";
$datosUsuario ejecutarConsultaConResultados($sql,$c);
if(
sizeof($datosUsuario)>0){
if(
$datosUsuario[0]['id'] == 2) {
$_SESSION['login'] = $datosUsuario[0]['email'];
$_SESSION['nombreUsuario'] = $datosUsuario[0]['nombre'];
//Antes de dar mensaje de bienvenido averiguo que roll tine el usuario
echo 'Hola &nbsp'.$_SESSION['nombreUsuario'];
El archivo configuraciones, contiene la configuraciones de la base de datos localhost, nombre de base,etc

ejecutarconsultaconresultados es una funcion que me hace el mysql_query y el mysql_fetch_assoc.
  #2 (permalink)  
Antiguo 30/06/2012, 18:43
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años, 1 mes
Puntos: 168
Respuesta: Problema con Login

Simplemente tenes que plantear un if, ahi tenes todo.
Código PHP:
Ver original
  1. if(isset($_SESSION['nombreUsuario'])){
  2. echo "Hola".$_SESSION['nombreUsuario'];
  3. }else{
  4. echo "<form action ..... bla bla bla>
  5. <input type='text' bla bla bla>
  6. blabla>
  7. </form>";
  8. }

Si la session esta creada que muestre mensaje, de lo contrario que muestre el form
  #3 (permalink)  
Antiguo 30/06/2012, 18:54
 
Fecha de Ingreso: julio-2005
Mensajes: 204
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: Problema con Login

Siguiendo tu logica lo planteo de esta manera

si la !$_SESSION no existe muestro el formulario y si existe lo guardo en sesion.
Pero al revez de antes ahora ni si quiera me lo guarda en sesion al hacer click en inicar sesion me vuelve a mostrar el mismo formulario

Código PHP:
session_start();
include_once(
'configuraciones.php');
include_once(
'funciones.php');
if(!isset(
$_SESSION['login'])){
echo 
formulario_login();
}
if(
$_SERVER['REQUEST_METHOD'] == 'POST') {
$c =conectar($GLOBALS['servidor'],$GLOBALS['usuario'],$GLOBALS['contrasenia'],$GLOBALS['bd']);
$email mysql_real_escape_string($_POST['email']);
$clave sha1($_POST['clave']);
$sql "SELECT usuarios_registrados.email, usuarios_registrados.clave, usuarios_registrados.nombre, usuarios_tipo.id from usuarios_registrados JOIN usuarios_tipo on usuarios_registrados.id_usuarios_tipo = usuarios_tipo.id where email = '$email' AND clave = '$clave'";
$datosUsuario ejecutarConsultaConResultados($sql,$c);
if(
sizeof($datosUsuario)>0){
if(
$datosUsuario[0]['id'] == 2) {
if(isset(
$_SESSION['login'])){
$_SESSION['login'] = $datosUsuario[0]['email'];
$_SESSION['nombreUsuario'] = $datosUsuario[0]['nombre'];
//Antes de dar mensaje de bienvenido averiguo que roll tine el usuario
echo 'Hola &nbsp'.$_SESSION['nombreUsuario'];
}
}
}

  #4 (permalink)  
Antiguo 30/06/2012, 19:25
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 15 años, 1 mes
Puntos: 168
Respuesta: Problema con Login

Plantea tu código html para verlo también.
No deberias de tener problemas con algo tan facil
si esta la session creada mostra mensaje pero no formulario, DE LO CONTRARIO ( else ) si no esta la session creada mostra el formulario, no tiene nada complicado, el problema lo tenes en otro lado.
  #5 (permalink)  
Antiguo 30/06/2012, 19:47
 
Fecha de Ingreso: julio-2005
Mensajes: 204
Antigüedad: 19 años, 4 meses
Puntos: 1
Respuesta: Problema con Login

Mi actual codigo php es el siguiente
Cuando entro por primera vez me muestra el formmulario
cuando inicio sesion el mensaje de bienvenida y el formulario
Y cuando vuelvo a entrar a la misma pagina me muestra la pagina en blanco
la pagina cuenta solo de este codigo
salvo el archivo configuraciones.php que son las configuraciones de la BD,
y el archivo funciones que son las funciones de la BD y el login

Código PHP:
session_start();
include_once(
'configuraciones.php');
include_once(
'funciones.php');
if(!isset(
$_SESSION['login'])){
echo 
formulario_login();
}
if(
$_SERVER['REQUEST_METHOD'] == 'POST') {
$c =conectar($GLOBALS['servidor'],$GLOBALS['usuario'],$GLOBALS['contrasenia'],$GLOBALS['bd']);
$email mysql_real_escape_string($_POST['email']);
$clave sha1($_POST['clave']);
$sql "SELECT usuarios_registrados.email, usuarios_registrados.clave, usuarios_registrados.nombre, usuarios_tipo.id from usuarios_registrados JOIN usuarios_tipo on usuarios_registrados.id_usuarios_tipo = usuarios_tipo.id where email = '$email' AND clave = '$clave'";
$datosUsuario ejecutarConsultaConResultados($sql,$c);
}
if(
sizeof($datosUsuario)>0){
if(
$datosUsuario[0]['id'] == 2) {
$_SESSION['login'] = $datosUsuario[0]['email'];
if(isset(
$_SESSION['login'])){
$_SESSION['nombreUsuario'] = $datosUsuario[0]['nombre'];
//Antes de dar mensaje de bienvenido averiguo que roll tine el usuario
echo 'Hola &nbsp'.$_SESSION['nombreUsuario'];
}
}
}


function 
formulario_login() {
$str = <<<EOF
<form method = "post" action="">
Email<input type="text" name="email"/><br/>
Clave<input type="password" name="clave"/><br/>
<input type="submit" value="Iniciar Sesion"/>
EOF;
return 
$str;


Etiquetas: $_session, login, mysql
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 02:59.