Ver Mensaje Individual
  #7 (permalink)  
Antiguo 06/10/2009, 13:24
samu22
 
Fecha de Ingreso: abril-2008
Mensajes: 453
Antigüedad: 16 años, 1 mes
Puntos: 16
Respuesta: Login para ver la web

hola Vendetta, te recomendaria utilizar sessiones para administrar el acceso a los usuarios

index.php
Código php:
Ver original
  1. <?php
  2. session_start(); // iniciamos la session o la continuamos
  3. //incluimos las clases o un archivo de configuracion (recomendado)
  4.     include 'config.php';
  5.    
  6.     //creo el formulario para el logue, luego hago las comparaciones para ver si  lo muestro o no, mientras tanto lo mantengo en una variable
  7.     $formLogin = '  <form action="proceso.php" method="POST">
  8.                                 <label>Usuario</label>
  9.                                 <input type="text" name="login" class="form" />
  10.                                 <label>Password</label>
  11.                                 <input type="password" name="password" class="form" />
  12.                                 <input type="submit" value="Login" class="form" id="btn" />
  13.                     </form>';
  14.    
  15.     //hiciamos la pagina
  16.    
  17.     $html = '<html>
  18.                 <head>
  19.                     <title>ejemplo</title>
  20.                     <style>
  21.                         .signin {height:39px; background:#282828}
  22.                         .signin label, .signin .form {float:left;height:18px;}
  23.                         .signin label {padding:5px 10px;color:#FFF}
  24.                         .signin .form {margin-top:8px;margin-right:10px;background:#2B464D;border:solid 1px #172629;color:#FFF;text-align:right}
  25.                         .signin #btn {width:56px;height:27px;background:#476F27;border:none;padding:0 0 6px 0;font-size:12px;color:#FFF;margin:0;text-align:center}
  26.                     </style>
  27.                 </head>
  28.                 <body>';
  29.    
  30.     // comprobamos si el usuario esta logueado para ello utilizamos la global $usActual que la definimos en config.php
  31.     global $usActual;
  32.    
  33.     $html .='<div class="right"><div class="signin">';
  34.         if(!$usActual->isLogin()){
  35.             // si no esta logueado concatenamos el formulario
  36.             $html .= $formLogin;
  37.         }else{
  38.             $html .= '<label>bienvenido '.$usActual->getThisNombre().'</label>';
  39.             // vemos si pertenece al grupo administrador
  40.             if($usActual->getThisGrupo() == 'Admin'){
  41.                 $html .= '<label><a href="#">Panel</a></label>';
  42.             }
  43.             $html .= '<label><a href="proceso.php?accion=logout">Logout</a></label>';
  44.         }
  45.     $html .='</div></div>';
  46.    
  47.    
  48.     //mostramos la pagina
  49.    
  50.     echo $html;
  51. ?>


config.php
Código php:
Ver original
  1. <?php
  2.  
  3. //definimos las CONSTANTES para la conexion mysql
  4. define('DB_HOST','localhost');
  5. define('DB_USER','root');
  6. define('DB_PASS','');
  7. define('DB_NAME','login');
  8.  
  9. //incluimos las clases
  10. include 'class/odbcon.php';
  11. include 'class/class.usuarios.php';
  12.  
  13. //creamos los objetos globales, usActual y DbConn;
  14. global $DbConn;
  15. $DbConn = new DbConn(DB_HOST,DB_USER,DB_PASS);
  16. $DbConn -> connect();
  17. $DbConn -> selectDb(DB_NAME);
  18.  
  19. global $usActual;
  20. $usActual = new usuario();
  21.  
  22. ?>

proceso.php
Código php:
Ver original
  1. <?php
  2.  
  3. //incluimos el archivo de configuracion
  4. include 'config.php';
  5.  
  6.  
  7.  
  8. //lamamos a la global usActual para hacer las comprobaciones
  9.     global $usActual;
  10.    
  11.     $urlRedirect = 'ejemplo.php'; // url a donde redireccionamos
  12.  
  13.  
  14.         //si es esta definida la variable $_POST['login']
  15.             if($_POST['login']){
  16.                 // comrpobamos que el usuario y la contraseña sean correctas con la funcion usuario->login, que devolvera true si esta todo correcto, guardando la session
  17.                     if($usActual->login(array($_POST['login'],md5($_POST['password'])))){
  18.                                                
  19.                         echo '<b>Conexion exitosa. Redireccionando a '.$urlRedirect.'...</b>';
  20.                         echo '
  21.                                 <script>
  22.                                     // redireccionamos ne 3 segundos para que se logre ver el mensaje publuicado arriba
  23.                                     setTimeout("document.location.href=\''.$urlRedirect.'\'",3000);
  24.                                  </script>';
  25.                     }else{
  26.                         echo 'usuario o contraseña incorrecta, vuelva a intentarlo';
  27.                         echo '
  28.                             <script>
  29.                                 // redireccionamos ne 3 segundos para que se logre ver el mensaje publuicado arriba
  30.                                 setTimeout("document.location.href=\''.$urlRedirect.'\'",3000);
  31.                              </script>';
  32.                     }
  33.                    
  34.             }
  35.    
  36.     if($_GET['accion']=='logout'){
  37.         $usActual->logout();
  38.             echo '<b>Desconexion exitosa. Redireccionando a '.$urlRedirect.'...</b>';
  39.             echo '
  40.                     <script>
  41.                         // redireccionamos ne 3 segundos para que se logre ver el mensaje publuicado arriba
  42.                         setTimeout("document.location.href=\''.$urlRedirect.'\'",3000);
  43.                      </script>';
  44.     }
  45. ?>


clase usuarios
Código php:
Ver original
  1. <?php
  2. class usuario{
  3.         var $id=null;
  4.         var $init = null;
  5.         var $getInfo = false;
  6.         var $isLogin = false;
  7.         /**
  8.          * Constructor de la clase, necesaria para la comprabacion interna
  9.          * setea la variable $init para comprobar que la clase esta instanciada
  10.          * para acciones publicas no se requiere la variable
  11.          * @return Void
  12.          * @access public
  13.          * @static
  14.          */
  15.          
  16.         function usuario(){
  17.             $this->init = true;
  18.         }
  19.        
  20.         /**
  21.          * logea al Usuario, realiza una comprobacion devuelve true en caso de exito
  22.          * @param $loginInfo Array con los datos para el logueo
  23.          * @return Void    
  24.          * @access public
  25.          * @static
  26.          */
  27.         function login ($loginInfo){
  28.             if($this->init === true){
  29.                if($this->checkLogin($loginInfo)==true){
  30.                    $this->getInfo = true;
  31.                    $this->id = $this->getThisId($loginInfo);
  32.                    $this->getInfo = false;
  33.                    $this->isLogin = true;
  34.                    $_SESSION['login']=$this->id;
  35.                    return true;
  36.                }else{
  37.                  return false;
  38.                }
  39.             }else{
  40.                 return 'no se inicio variable';
  41.             }
  42.         }
  43.        
  44.        
  45.         /**
  46.          * Destruye la sesion
  47.          * @param $loginInfo Array con los datos para el logueo
  48.          * no se requiere instanciar la clase para desloguearse
  49.          * @return Void
  50.          * @access public
  51.          * @public
  52.          */
  53.         function logout(){
  54.             session_destroy();
  55.             $this->isLogin = false;
  56.         }
  57.        
  58.        
  59.        
  60.        
  61.        
  62.        
  63.          /*
  64.         *
  65.         * FUNCIONES para chequear informacion
  66.         *
  67.         *
  68.         * * */
  69.        
  70.        
  71.        
  72.        
  73.         /**
  74.          * Comprueba que exista el usuario y que coincida la contraseña
  75.          * en caso de exito devuelve true
  76.          * @param $loginInfo Array con los datos para el logueo
  77.          * @return Void
  78.          * @access public
  79.          * @static
  80.          */
  81.         function checkLogin($loginInfo){
  82.             if($this->init === true){
  83.                 global $DbConn;
  84.                     $user = mysql_real_escape_string($loginInfo[0]);
  85.                     $pass = md5(mysql_real_escape_string($loginInfo[1]));
  86.                     $sql = 'SELECT COUNT(id) as num FROM usuarios WHERE login="'.$user.'" AND password="'.$pass.'"';
  87.                     $dat = $DbConn->fetchArray($DbConn->query($sql));
  88.                     if ($dat['num'] == 1){
  89.                         return true;
  90.                     }
  91.                 return false;
  92.             }
  93.         }
  94.        
  95.        
  96.        
  97.         /*
  98.         *
  99.         * FUNCIONES para recuperar informacion
  100.         *
  101.         *
  102.         * * */
  103.        
  104.         /**
  105.          * Devuelve el id del usuario  comprueba si la variable getInfo es true
  106.          * @param $loginInfo Array se necesita el usuario
  107.          * @return Void
  108.          * @access public
  109.          * @static
  110.          */
  111.         function getThisId($loginInfo){
  112.               if($this->init === true){
  113.                   if($this->getInfo === true){
  114.                     global $DbConn;
  115.                         $user = mysql_real_escape_string($loginInfo[0]);
  116.                         $sql = 'SELECT id AS request FROM usuarios WHERE login = "'.$user.'"';
  117.                         $dat = $DbConn->fetchArray($DbConn->query($sql));
  118.                         return $dat['request'];
  119.                   }
  120.               }
  121.         }
  122.        
  123.         /**
  124.          * Devuelve el nombre del usuario  
  125.          * solamente si el usuario esta logueado
  126.          * @param $loginInfo Array se necesita el usuario
  127.          * @return Void
  128.          * @access public
  129.          * @static
  130.          */          
  131.         function getThisNombre(){
  132.            if($this->isLogin()){
  133.             $this->id = $_SESSION['login'];
  134.             if($this->id != null){
  135.                 global $DbConn;
  136.                     $sql = 'SELECT login AS request FROM usuarios WHERE id='.$this->id;
  137.                     $dat = $DbConn->fetchArray($DbConn->query($sql));
  138.                     return $dat['request'];
  139.             }
  140.            }
  141.         }
  142.        
  143.         /**
  144.          * Devuelve el nombre del grupo del usuario  
  145.          * solamente si el usuario esta logueado
  146.          * @param $loginInfo Array se necesita el usuario
  147.          * @return Void
  148.          * @access public
  149.          * @static
  150.          */          
  151.         function getThisGrupo(){
  152.             $this->id = $_SESSION['login'];
  153.             if($this->id != null){
  154.                 global $DbConn;
  155.                     $sql = 'SELECT grupo AS request
  156.                            FROM usuarios AS us
  157.                            LEFT JOIN grupos AS gr
  158.                            ON us.grupo_id = gr.id
  159.                            WHERE us.id = '. $this->id;
  160.                     $dat = $DbConn->fetchArray($DbConn->query($sql));
  161.                     return $dat['request'];
  162.             }
  163.         }                
  164.              
  165.        
  166.         function isLogin(){
  167.             if(isset($_SESSION['login'])){
  168.                 return true;
  169.             }
  170.             return false;  
  171.         }
  172.            
  173. } // <--------------------------- END CLASS ------------------------------>  
  174.    
  175.    
  176. ?>