Foros del Web » Programando para Internet » PHP »

Login poco eficiente

Estas en el tema de Login poco eficiente en el foro de PHP en Foros del Web. Hola amigos. Tengo un problema que ronda mi cabeza. He creado un sistema de autentificación, que consiste en buscar login y pass en una BD ...
  #1 (permalink)  
Antiguo 19/07/2009, 04:37
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 3 meses
Puntos: 2
Login poco eficiente

Hola amigos. Tengo un problema que ronda mi cabeza.
He creado un sistema de autentificación, que consiste en buscar login y pass en una BD y si coinciden que te cree una variable de sesión con el parámetro = a True.

Si el login es correcto, te da acceso a la parte privada de la web, pero el problema es que si uno es avispado, y empieza a escribir urls pues le mete en las partes privadas.

http://web.com/index.php?sec=6
http://web.com/index.php?sec=7
http://web.com/index.php?sec=8
etc.

Como toda mi web se carga en un switch principal, pensé en bloquearlo ahí mismo poniéndole una condición if (como puse en las urls de ejemplo anteriores), pero también se puede acceder presidiendo del switch (como muestro a continuacion).

http://web.com/productos.php
http://web.com/carrito.php
etc.

Tengo que poner un control (un if que compruebe la variable de sesión) en cada una de las paginas privadas??? O hay alguna otra forma??. Gracias!!
  #2 (permalink)  
Antiguo 19/07/2009, 06:22
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Login poco eficiente

Cita:
Iniciado por nolose Ver Mensaje
Hola amigos. Tengo un problema que ronda mi cabeza.
He creado un sistema de autentificación, que consiste en buscar login y pass en una BD y si coinciden que te cree una variable de sesión con el parámetro = a True.

Si el login es correcto, te da acceso a la parte privada de la web, pero el problema es que si uno es avispado, y empieza a escribir urls pues le mete en las partes privadas.

http://web.com/index.php?sec=6
http://web.com/index.php?sec=7
http://web.com/index.php?sec=8
etc.

Como toda mi web se carga en un switch principal, pensé en bloquearlo ahí mismo poniéndole una condición if (como puse en las urls de ejemplo anteriores), pero también se puede acceder presidiendo del switch (como muestro a continuacion).

http://web.com/productos.php
http://web.com/carrito.php
etc.

Tengo que poner un control (un if que compruebe la variable de sesión) en cada una de las paginas privadas??? O hay alguna otra forma??. Gracias!!

si utilizas sessiones puedes poner algo asi:

Código PHP:
<?php  session_start();

if (isset(
$_SESSION['SESS_USUARIO']))
    {
        echo 
"Bienvenido usted esta conectado.";
        echo 
"<form action='salir.php' method='post'>
            <tr>
                <th><input type='submit' value='cerrar sesion'></tr>
            </tr>
        </form>"
;

    }
else {
include(
'mensaje_usuario_noconectado.php');
    echo 
"<b>no estas conectado no puedes ver esta pagina</b>";

}


?>
en el ejemplo te he puesto un include por que es lo que uso yo para incluir una pagina de error , por que dentro del echo" " no podia meter codigo php, auque no es necesario si solo quieres mostrar un texto como en el codigo que te he puesto:

echo "<b>no estas conectado no puedes ver esta pagina</b>";


saludos
  #3 (permalink)  
Antiguo 19/07/2009, 07:30
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Login poco eficiente

No consigo hacerlo funcionar :( en vez del include he puesto un

header("Location: index.php?seccion=1&inicio");

para qye me redirija a la pag principal, el caso es que aunque haya una variable de sesion siempre me envia a la pag de inicio como si no estuviera logueado cuando si lo estoy :(

¿alguna idea?
  #4 (permalink)  
Antiguo 19/07/2009, 11:31
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: Login poco eficiente

exactamente como te explico waty90...

tal vez no puedas usar 'header' porque ya has imprimido algo en la pagina, en ese caso tendrias que usar javascript o html...

fijate que waty90 hizo esto..

Código PHP:
if (isset($_SESSION['SESS_USUARIO'])) 
Me imagino que cambiaste la parte de ['SESS_USUARIO'] por como lo guardas vos en tus sesiones, cierto?
  #5 (permalink)  
Antiguo 19/07/2009, 19:27
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Login poco eficiente

sisi, claro que lo cambio.

Cierto es que yo el session_start(); lo hago en el fichero index y com o utilizo includes ya no necesito ponerlo en los demás. Imagino que eso no será un problema no? :S
  #6 (permalink)  
Antiguo 19/07/2009, 20:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Login poco eficiente

Si accesan directo por la pagina, necesitas a fuerzas tener la sesión ahí, si no quieres que accesen directo puedes usar algo así dentro de cada pagina:
Código php:
Ver original
  1. if (!defined("AUTORIZADO")) {
  2.       die("No puedes entrar a este script");
  3. }

y desde tu index.php haces un:
Código php:
Ver original
  1. define("AUTORIZADO", true);

Así solo si entran por el index.php pueden entrar a las otras paginas.

Saludos.
  #7 (permalink)  
Antiguo 20/07/2009, 10:41
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Login poco eficiente

el define true, tengo que ponerlo cuando haga la autentificacion correctamente??, esque no acabo de entenderlo :S ¿donde guardo la variable de sesion?
  #8 (permalink)  
Antiguo 20/07/2009, 11:08
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: Login poco eficiente

y... lo lógico seria que lo pusieras una vez que el usuario ya se autentifico, cuandas estas guardando las sesiones y eso.... que caso tendria ponerlo antes? estarias en lo mismo practicamente.
  #9 (permalink)  
Antiguo 20/07/2009, 11:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Login poco eficiente

El define es solamente para evitar que corran el script de forma directa accesando por URL.

Lo del login lo tienes que manejar con sesiones como ya te indicaron.

Saludos.
  #10 (permalink)  
Antiguo 21/07/2009, 16:16
Avatar de nolose  
Fecha de Ingreso: diciembre-2007
Ubicación: España
Mensajes: 165
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Login poco eficiente

la validación va muy bien, he echo una funcion de v alidacion y la llamo devolviendo true o false, el unico problema es que si quiero redireccionar a una página cuando el login es INCORRECTO, se lo pasa por el forro...

Tengo que poner en cada fichero:

Código PHP:
if(!autentificado()){
header("Location: index.php?seccion=2&registro");

Sabeis como puedo poner el header en la funcion para que funcione bieN??. GRACIAS!!!
  #11 (permalink)  
Antiguo 26/07/2009, 11:07
 
Fecha de Ingreso: diciembre-2006
Mensajes: 153
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Login poco eficiente

Cita:
Iniciado por nolose Ver Mensaje
la validación va muy bien, he echo una funcion de v alidacion y la llamo devolviendo true o false, el unico problema es que si quiero redireccionar a una página cuando el login es INCORRECTO, se lo pasa por el forro...

Tengo que poner en cada fichero:

Código PHP:
if(!autentificado()){
header("Location: index.php?seccion=2&registro");

Sabeis como puedo poner el header en la funcion para que funcione bieN??. GRACIAS!!!
puedes implementar lo que ha escrito GatorV, para no permitir el acceso a tus secciones sino es desde el index.
y bueno ,si quieres redirrecionar a una pagina ,si el usuario no esta conectado yo usaria javascipt :

Código PHP:
    echo "<meta http-equiv=Refresh content=1;url=error.php>"
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 01:53.