Tema: Ayuda PHP
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/02/2009, 15:51
xumarodok
 
Fecha de Ingreso: diciembre-2004
Ubicación: Costa Rica
Mensajes: 152
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: Ayuda PHP

Un sistema de autenticacion... uy... bueno, vamos a ver... no soy muy experto pero talvez esto te sirva:

primero necesitas una pagina con un formulario de acceso, puede ser algo asi:

Código:
<form name="" enctype="multipart/form-data" method="post" action="validar.php">Usuario: <input maxlength="20" name="username" tabindex="1"/><br/>
Contraseña: <input type="password" maxlength="20" name="password" tabindex="2"/>

<input type="submit" value="Iniciar Sesion" name="enviar" tabindex="3"/>

</form>
mira que el action se refiere a un archivo php llamado validar.php, antes hagamos uno que se llame connect.php

connect.php:
Código PHP:
<?php
/*  Primero conectamos a la base de datos  */
    
unset($config) ;    
    
$config[1] = "localhost" // Puede ser "localhost" aunque tambien una URL o una IP    
    
$config[2] = "usuarios" // Usuario de la base de datos    
    
$config[3] = "password"// password de la base de datos
    
$config[4] = "base de datos"// Nombre de la base de datos
    
$conectar = @mysql_connect($config[1],$config[2],$config[3]) or exit('Datos de conexion incorrectos.') ;
    
mysql_select_db($config[4],$conectar) or exit('No existe la base de datos.') ;
?>
ahora si, vamos al validar.php

Código PHP:
<?php
include("connet.php");
/* Ahora tomamos los datos del formulario*/

$username $_POST[username];
$realpassword $_POST[password];    

/*ahora verificamos que exista el usuario, */

$usuario mysql_result(mysql_query("select count(NOMBRE) from USUARIOS where NOMBRE_DE_USUARIO = '$username'"),0,0);         

          if (
$usuario == "1") { /*si hay 1 usuario con ese nombre de usuario entonces el if ingresa aqui*/
                 
$contraseña_de_base_de_datos mysql_result(mysql_query("select password from USUARIOS where NOMBRE_DE_USUARIO='$username'"),0,0);                
                if(
$contraseña_de_base_de_datos == $password){       /*si la contraseña de la base de datos es igual a la contraseña del formulario entonces entra aqui*/     
                    
                    
setcookie('usuario',$username,time()+600) ; /*definimos un cookie valido por 10 minutos (600 segundos)*/

                    
setcookie('contraseña',$password,time()+600) ; /*/definimos otro cookie 10 minutos*/

                    
echo "<meta http-equiv='refresh' content='0;URL=PRIVADO/index.php'>";            
/*                    PRIVADO es donde quieres que la gente no ingrese sin contraseña*/

                
}else{            
/*si la contraseña del formulario no es igual a la de la base de datos el if entra aqui*/
                    
echo "La contrase&ntilde;a es incorrecta. <br><br><br>Usted será redirigido en 5 segundos.";                        
                    echo 
"<meta http-equiv='refresh' content='5;URL=index.php'>";                
                }            
            }else{ 
/*si el primer if no encuentra ningun usuario con ese nombre entonces entra aqui*/           
                
echo "El usuario no existe";                
    }    


?>
ok, hasta el momento tenemos el formulario de acceso, la conexion a la bd (connect.php) y un archivo php que valida los datos... ahora hagamos otro archivo php llamado login.php

Código PHP:
<?php
$usuario 
$_COOKIE['usuario'];
$password mysql_result(mysql_query("SELECT password FROM USUARIOS WHERE username= '$usuario'"),0,0); 

        if(
$password !== $_COOKIE['contraseña']){
            echo 
"Denegado!";
  echo 
"<meta http-equiv='refresh' content='5;URL=http://www.miweb/index.php'>";   
            exit();
        }

?>
ahora escribe
Código PHP:
include("login.php"); 
en las paginas que desees que sean privadas....

recuerda cambiar los nombres de las tablas y los campos, asi como las variables...cualquier cosa me avisas, saludos
__________________
Comparte tu conocimiento: Repositorio de Funciones

Última edición por xumarodok; 23/02/2009 a las 15:55 Razón: corrigiendo detalles