Foros del Web » Programando para Internet » PHP »

LOGIN doble???

Estas en el tema de LOGIN doble??? en el foro de PHP en Foros del Web. Buenas, experimento un problema con un login. Se trata de que cuando efectúo el login, este funciona y accede correctamente a la pagina indicada. Pero ...
  #1 (permalink)  
Antiguo 30/04/2011, 15:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 2 meses
Puntos: 1
LOGIN doble???

Buenas, experimento un problema con un login.
Se trata de que cuando efectúo el login, este funciona y accede correctamente a la pagina indicada. Pero cuando una vez dentro del área, pincho en cualquier link a página protegida, me vuelve a pedir el login otra vez.

Supongo que el problema está en esa misma página. Os dejo los codes según función por si alguien tiene alguna sugerencia. Muchas gracias por adelantado.

PÁGINA LOGIN

Código:
<form action="libreria/control.php" method="post">
<div class="us">Usuario: <input type="text" class="hinput" name="usuario" /></div>
<div class="us">Password: <input type="password" class="hinput" name="password" /></div>
<div class="us">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="image" src="img/boto-login.png" class="ahinput" name="Ingresar" id="Ingresar" /></div>
</form>
PAGINA CONTROL

Código:
<?php session_start();
include('conexion.php');

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 usuarioadmin WHERE usuario=\''.$usuario.'\'');
if($row = mysql_fetch_array($result)){

         if($row["password"] == $password){
         $_SESSION["k_username"] = $row['usuario'];
         echo "<p><img src=\"../logo.png\" alt=\"CMS\" /></p>";
         echo 'Has sido logueado correctamente <span class=rred> '.$_SESSION['k_username'].' </span>';
         }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();

      ?>
PÁGINA PROTEGIDA (dentro de directorio)

Código:
<?php session_start();
include('../libreria/conexion.php');

if (isset($_SESSION['k_username'])) {
$use=$_SESSION['k_username'];
$result = mysql_query('SELECT * FROM usuarioadmin WHERE usuario=\''.$use.'\'');
?>

contenido

<?php
}else{
header ("Location: login.php");
}
?>
__________________
http://www.multigestor.com - Diseño Web Lleida
  #2 (permalink)  
Antiguo 30/04/2011, 15:43
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: LOGIN doble???

$HTTP_POST_VARS estás usando funciones obsoletas de PHP, actualizarlas y corrige el código
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 30/04/2011, 15:45
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: LOGIN doble???

O sea, directamente $_POST... claro, es cierto. Lo pruebo. Muchas gracias
__________________
http://www.multigestor.com - Diseño Web Lleida
  #4 (permalink)  
Antiguo 30/04/2011, 20:40
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: LOGIN doble???

Aparte de usar funciones obsoletas de PHP, te recomendaría que antes de agregar un valor a determinada variable de $_SESSION, la registres (quizás por ahi venga el problema).

Entonces:

Código PHP:
Ver original
  1. session_register('usuario');
  2. $_SESSION['usuario'] = $_POST['user'];

Saludos !
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.
  #5 (permalink)  
Antiguo 30/04/2011, 20:45
Avatar de leo_nqn  
Fecha de Ingreso: abril-2010
Ubicación: Neuquen
Mensajes: 461
Antigüedad: 14 años
Puntos: 24
Respuesta: LOGIN doble???

Lo mire rapido a tu codigo, capaz me equivoco.. pero vi que:
Estas usando session start... antes de validar el usuario, y te recomiendo que pongas session start en todas las paginas nuevas a las que puede acceder el usuario para mantener la sesion abierta.
Saludos!
__________________

Blog: http://leonardonqn.blogspot.com
Twitter:@Leo_FFerreyra
  #6 (permalink)  
Antiguo 30/04/2011, 21:39
Avatar de bocho0610  
Fecha de Ingreso: enero-2010
Ubicación: <? echo "Santiago, Chile"; ?>
Mensajes: 341
Antigüedad: 14 años, 3 meses
Puntos: 26
Respuesta: LOGIN doble???

Cita:
Iniciado por kadet Ver Mensaje
Buenas, experimento un problema con un login.
PÁGINA PROTEGIDA (dentro de directorio)

Código:
<?php session_start();
include('../libreria/conexion.php');

if (isset($_SESSION['k_username'])) {
$use=$_SESSION['k_username'];
$result = mysql_query('SELECT * FROM usuarioadmin WHERE usuario=\''.$use.'\'');
?>

contenido

<?php
}else{
header ("Location: login.php");
}
?>
Este apartado me llamo la atencion, creo que estas haciendo la consulta innecesaria. Si los datos son correctos creo una variable de aprobado tipo y luego consulto esa variable...

pagina del loguin
Código PHP:
Ver original
  1. $_SESSION['estado'] == 'ok';


contenido protegidos

Código PHP:
Ver original
  1. if(isset($_SESSION['usuario']) and $_SESSION['estado'] == 'ok'){
  2.  
  3. //mostrar contenido
  4.  
  5. }else{
  6. header ("Location: login.php");
  7. }
__________________
Sigueme en Twitter!
Septimoarte.cl <-- Un mundo en cine.
  #7 (permalink)  
Antiguo 30/04/2011, 22:06
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: LOGIN doble???

Como te comento anteriormente @maycolalvarez cambia el viejo $HTTP_POST_VARS por $_POST

@fekaa11 En PHP 5.3.x session_register es obsoleto, aparte, es necesario que register_globals este en ON para que funcione, y a partir de la versión 4.2.x esta deshabilitada

Ahora, con el problema debuguea la variable $_SESSION['k_username'] con un var_dump para ver si se esta asociando correctamente el nombre de usuario
Código HTML:
Ver original
  1. var_dump($_SESSION['k_username']);
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 30/04/2011, 23:54
Avatar de fekaa11  
Fecha de Ingreso: abril-2011
Ubicación: Córdoba / Argentina
Mensajes: 115
Antigüedad: 13 años
Puntos: 34
Respuesta: LOGIN doble???

Gracias Nemutagk, no estaba al tanto de que la función session_register(); esté obsoleta. Saludos !
__________________
Pedir perdón es de hombres inteligentes. Perdonar es de sabios.

Etiquetas: doble, login
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 18:48.