sábado, 15 de noviembre de 2008

Autenticacion (Autentificacion) de usuario con PHP y Hash Sha-1


La Autenticación consiste en verificar la identidad del usuario que esta entrando a una aplicación, con el fin de personalizar el ambiente a su gusto, habilitarle o deshabilitarle recursos u opciones, guardar historial, etc.

En este ejemplo vamos a explicar una manera simple pero bastante segura de autenticar usuarios en una pagina web con PHP, utilizando conceptos como sesiones, funciones hash, método post, etc.

Para empezar debemos entender como funcionará el mecanismo de autenticación, lo dividiremos en dos etapas, registro y autenticación, siendo el "registro" la primera vez que el usuario entra al sistema y crea una cuenta de usuario proporcionando un nombre de usuario y una clave, la etapa de "autenticacion" es cuando en futuras ocaciones el usuario desee ingresar en su cuenta creada en la etapa de registro y deba autenticarse para poder entrar.

Pasos para el Registro del usuario:

  1. Los usuarios deberan llenar un formulario con nombre de usuario y clave para registrarse en el sistema.
  2. Aplicaremos en la maquina del cliente el algoritmo Sha-1 para transformar la clave en un hash que no pueda ser descifrado por ningun intruso (debemos recordar que los algorimos hash son unidireccionales, es decir, nisiquiera el usuario o nosotros podremos saber cual era la verdadera clave del usuario).
  3. Enviamos la clave y nombre de usuario al servidor para almacenarla en la base de datos.



Pasos para la autenticacion del usuario:
  1. El usuario quiere ingresar a su cuenta de usuario y llena el formulario de autenticacion con usuario y clave.
  2. Aplicaremos en la maquina del cliente el algoritmo Sha-1 para transformar la clave en un hash que no pueda ser descifrado por ningun intruso.
  3. Enviamos el usuario y la clave al servidor.
  4. Buscamos el hash almacenado en la base de datos en el momento del registro de ese usuario y lo comparamos con el hash que acabamos de recibir.
  5. Si los hash son iguales entonces iniciamos una sesion para ese usuario.


Antes del tutorial, les quiero dejar los videos del ejemplo que vamos a realizar, para los que les queden dudas:

Parte 1

Parte 2


Para empezar el ejemplo lo primero que vamos a hacer es crear una base de datos llamada "usuariosDB" donde vamos a crear la tabla "usuario" con las columnas "usuario", "clave" y un "id" que identificara internamente ese usuario en la BD.

Código de creacion de la tabla usuario
--
-- Estructura de tabla para la tabla `usuario`
--

CREATE TABLE `usuario` (
`id` bigint(20) NOT NULL auto_increment,
`usuario` varchar(15) NOT NULL,
`clave` varchar(205) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `usuario` (`usuario`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Ahora procedemos a crear una página "registro.php" donde el usuario deberá introducir el nombre de usuario y contraseña que desea utilizar de ahora en adelante:
Código registro.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Login - Ejemplo de autentiacion</title>

<style type="text/css">

<!--

.style1 {

font-size: 36px;

font-weight: bold;

}

-->

</style>

<script type="text/javascript" language="JavaScript1.2" src="sha1.js"></script>

<script language="JavaScript">

function ec()

{


if(document.getElementById('clave').value == document.getElementById('clave2').value)

{

document.getElementById('clave').value = str_sha1(document.getElementById('clave').value);

document.getElementById('clave2').value = "";

return true;

}

else

{

alert('Las claves no coinciden');

return false;

}

}

</script>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p class="style1">Registro de usuario con Hash Sha-1</p>

<p>La clave que el usuario introduzca en el el campo &quot;clave&quot; del formulario será transformada con el algoritmo Sha-1 y luego será enviada al servidor.</p></td>

</tr>

<tr>

<td height="277" align="center" valign="top"><p align="left"><br />

</p>

<p align="center"></p>

<form id="form1" name="form1" method="post" action="registrado.php">

<p><strong>Introduce tu usuario y clave que desees</strong></p>

<p>Usuario:

<input type="text" name="usuario" id="usuario" />

</p>

<p>Clave:

<input type="password" name="clave" id="clave" />

</p>

<p>Repite la clave:

<input type="password" name="clave2" id="clave2" />

</p>

<p>si ya tienes cuenta haz <a href="login.php">click aqui</a></p>

<p>

<input name="button" type="submit" id="button" onclick="return ec();" value="Registrarme"/>

</p>

</form> <p align="center">&nbsp;</p></td>

</tr>

<tr>

<td height="19" align="center" valign="bottom">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</td>

</tr>

</table>

</body>

</html>


Para enviar la clave introducida por el usuario primero llamamos a la funcion javascript "ec()" creada en la cabecera que se encarga de verificar que las dos claves introducidas sean iguales y ademas se encarga de aplicar la funcion str_sha1() (que se encuentra en el archivo "sha1.js" que importamos en la cabecera de la página) para transformar la clave introducida en un codigo Hash que sea casi imposible de descrifrar para cualquier persona (incluso nosotros).

Los datos del fomulario son enviados a la pagina "registrado.php" el código de esta página es el siguiente:

Código registrado.php

<?php


require('conexion.php');


if(isset($_POST['usuario']) && isset($_POST['clave']))

{


$usuario = $_POST['usuario'];

$sha1_clave = $_POST['clave'];


mysql_query("insert into usuario values('','".$usuario."','".$sha1_clave."')");


}

else

{


$usuario = "error";

$sha1_clave = "error";


}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Login - Ejemplo de autentiacion</title>

<style type="text/css">

<!--

.style1 { font-size: 36px;

font-weight: bold;

}

-->

</style>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p class="style1">Usuario registrado</p></td>

</tr>

<tr>

<td height="277" align="center" valign="top"><p align="left"><br />

</p>

<p align="left"></p>

<form id="form1" name="form1" method="post" action="">

<p><strong>El usuario ha sido correctamente registrado.</strong></p>

</form>

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="30%"><div align="right">Nombre de usuario:</div></td>

<td width="70%"><div align="center"><?php echo $usuario ?></div></td>

</tr>

<tr>

<td><div align="right">Clave:</div></td>

<td><div align="center"><?php echo $sha1_clave ?></div></td>

</tr>

</table>

<p align="center">Para acceder a tu cuenta haz <a href="login.php">click aqui</a></p></td>

</tr>

<tr>

<td height="19" align="center" valign="bottom">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</td>

</tr>

</table>

</body>

</html>

En esta página nos encargamos de almacenar en la base de datos el nuevo usuario con el hash de su clave. Ahora que ya tenemos un usuario registrado debemos proceder a la segunda fase, y crear las paginas necesarias para que el usuario se autentique en futuras ocaciones y pueda ingresar a las secciones privadas de su cuenta.

Procedemos a crear la pagina "login.php":
Código login.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Login - Ejemplo de autentiacion</title>

<style type="text/css">

<!--

.style1 {

font-size: 36px;

font-weight: bold;

}

-->

</style>

<script type="text/javascript" language="JavaScript1.2" src="sha1.js"></script>

<script language="JavaScript">

function ec()

{

document.getElementById('clave').value = str_sha1(document.getElementById('clave').value);

}

</script>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p class="style1">Autenticacion con Hash Sha-1</p>

<p>La clave que el usuario introduzca en el el campo &quot;clave&quot; del formulario será transformada con el algoritmo Sha-1 y luego será enviada al servidor.</p></td>

</tr>

<tr>

<td height="277" align="center" valign="top"><p align="left"><br />

</p>

<p align="center"></p>

<form id="form1" name="form1" method="post" action="autenticacion.php" onsubmit="ec()">

<p><strong>Introduce los datos de tu cuenta</strong></p>

<p>Usuario:

<input type="text" name="usuario" id="usuario" />

</p>

<p>Clave:

<input type="password" name="clave" id="clave" />

</p>

<p>si no tienes cuenta haz <a href="registro.php">click aqui</a></p>

<p>

<input type="submit" name="button" id="button" value="Enviar" />

</p>

</form> <p align="center">&nbsp;</p></td>

</tr>

<tr>

<td height="19" align="center" valign="bottom">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</td>

</tr>

</table>

</body>

</html>

En esta página recogemos el nombre de usuario y contraseña escritos por el usuario y aplicamos laf uncion str_sha1() a la clave del usuario para enviarla a la página autenticacion.php, el código de esta últimap página es el siguiente:

Código autenticacion.php

<?php


require('conexion.php');

//Inicio la sesión

session_start();


///////////////////////////////////////////////////////////////////////////////////////////

//Si esta entrando en una seccion que no le corresponde



$_SESSION["usuario"]="anonimo";

$_SESSION["valido"]=0;


if (isset($_POST['clave']) && isset($_POST['usuario']))

{



//evito que haya colocado mas de una palabra en el login (para evitar sql injection)

$usu = split(" ",trim($_POST['usuario']));


echo $usu[0];



//Guardo la identidad del cliente que desea autenticarse

$_SESSION["usuario"]= $usu[0];



$result = mysql_query("select clave from usuario where usuario='".$_SESSION["usuario"]."'");



//Si encontre el usuario en la bd

if(mysql_num_rows($result)==1)

{

$row = mysql_fetch_row($result);

//Si los hash de la clave coinciden

if($_POST['clave']==$row[0])

$_SESSION["valido"]=1;



echo $row[0] , ' = ' . $_POST['clave'];

}



}



//si no existe, envio a la página de autentificacion

header("Location: miCuenta.php");

//ademas salgo de este script

exit();



?>



En esta página recibimos el nombre de usuario y el hash de la clave introducida por el usuario en el momento de realizar su autenticacion, debemos ahora verificar que el nombre de usuario existe, y, si realmente existe, entonces debemos verificar si el usuario existente tiene la misma clave que la proporcionada.

Si las claves coinciden entonces creamos una variable de sesion llamada $_SESSION["valido"] y la igualamos a 1 para decir que es un usuario valido, de no existir un usuario con ese nombre o de no coincidir la clave de la bd con la clave proporcionada por el usuario, entonces asignamos el valor de 0 a la variable $_SESSION["valido"].

Esta variable de sesion será la llave para establecer los permisos, si el usuario desea entrar a una página privada, pero la variable $_SESSION["valido"] no existe o es diferente de 1, entonces no podrá acceder a esa página, de lo contrario todo ocurrirá normalmente.

Para lograr esa funcionalidad debemos crear un archivo llamado sesion.php donde vamos a verificar que esa variable este igual a 1, de lo contrario la pagina te redireccionará a la pagina ya creada login.php. La pagina sesion.php deberá ser incluida al principio de cada página que queramos catalogar como "privada". El codigo de sesion.php es el siguiente:
Código sesion.php

<?php


//Inicio la sesión

session_start();


//Verifico si es un usuario autenticado

if ($_SESSION["valido"]!=1)

{//quiere decir que tiene prohibida la entrada a cualquier lugar privado


//si no existe, envio a la página de autentificacion

header("Location: login.php");

//ademas salgo de este script

exit();

}

?>


Por ultimo creamos la página privada "miCuenta.php" y la pagina "cerrar_sesion.php". La primera de ellas contendrá una llamada a la pagina sesion.php para garantizar su privacidad. mientras que la otra permitira cerrar la sesion autentificada y volver a iniciar el ciclo de autenticación.



Código micuenta.php

<?php


//Incluyo el archivo de sesion para impedir el acceso no autorizado a esta página.

require('sesion.php');


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Login - Ejemplo de autentiacion</title>

<style type="text/css">

<!--

.style1 { font-size: 36px;

font-weight: bold;

}

-->

</style>

</head>


<body>

<table width="74%" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><p>&nbsp;</p>

<p class="style1">Autenticacion Básica</p></td>

</tr>

<tr>

<td height="277" align="center" valign="top"><p align="left"><br />

</p>

<p align="left"></p>

<form id="form1" name="form1" method="post" action="">

<p><strong>Si ves esta pagina, tu sesion ha sido validada y puedes navegar por la zona privada.</strong></p>

<p>haz <a href="cerrar_sesion.php">click aqui</a> para cerrar tu sesion</p>

</form>

<p align="center">&nbsp;</p></td>

</tr>

<tr>

<td height="19" align="center" valign="bottom">Alejandro Sánchez - http://internetdeveloping.blogspot.com/</td>

</tr>

</table>

</body>

</html>

Código cerrar_sesion.php

<?php

session_start();

session_destroy();


//si no existe, envio a la página de autentificacion

header("Location: miCuenta.php");

//ademas salgo de este script

exit();


?>

Cualquier comentario o duda no dudes en escribirlo abajo o enviarme un mail a aalejo+blog@gmail.com.

25 comentarios:

  1. hermanazo! muy bueno tu programa.

    Soy practicamente nuevo en esto de php-mysql. Podrias tu ayudarme o explicarme algo?

    veo que en el código utilizas la variable de tipo $_POST para pasar las variables, mi pregunta es:

    tengo instalado PHP5 y uno de los primeros programas/aplicacion que consegui fue la de introducir datos de email y nombre de usuario a traves de un formulario, pero el mismo tambien estaba hecho con $HTTP_POST_VARS, resulta que despues de leer e investigar, y para resumirte la cambie a $_POST y aun asi no me trabajaba, cuando por fin la cambie a $_GET la aplicacion me trabaja sin problemas.

    La aplicacion esta 100% bien explicada, pero me funciona hasta creo la mitad :S ! no ingresan en mi base de datos los valores usuario y password,

    Me pregunto si sea por el mismo caso de que utilizas $_POST.

    Tendras idea de porque sucede esto ?

    Esperando me puedas ayudar !
    Muchas gracias!
    Francisco

    ResponderEliminar
  2. A ver si te entiendo, tienes instalado PHP5 con un servidor Apache..no? Ademas ya has probado que las paginas en PHP funcionan correctamente, pero el problema esta a la hora de insertar en la base de datos MySQL.. no??

    Implementar este ejemplo con el metogo GET requiere que cambies en la etiqueta 'form' el parametro action="get" por action="post" como las variables &_POST[''] a $_GET[''] que reciben los datos del formulario en la página siguiente.

    Pero no deberia haber ninguna diferencia entre ambos metodos, si no se esta realizando la insercion en la BD debe ser un error en la Tabla, prueba creando tu mismo una tabla llamada "usuario" a través de phpMyAdmin con los siguientes atributos:

    id: de timpo bigint(20) y le marcas auto_increment
    usuario: de tipo varchar(15)
    clave: de tipo varchar(205)

    Luego marca como clave el atributo 'id'.

    Verifica el codigo del "insert" a la base de datos ehcho en la pagina 'registrado.php' del ejemplo. Si quieres enviame a mi correo tu codigo a ver si te puedo ayudar mejor.

    ResponderEliminar
  3. Alejandro muy buenos programas de verdad viene muy bien explicado yo soy novato en esto del php y mysql pero la verdad no eh encontrado mejor tutorial explicado salvo x un detallito que te falto fue el script de la conexion.php pero bueno ese viene en los archivos de descarga
    te agradezco ya que me sirvio bastante
    muchisimas gracias.
    Luis Vazquez

    ResponderEliminar
  4. Uf no sabia que existia tal material :D voy a devorarlo todo, gracias amigo por subirlo, y por apoyar el autoaprendizaje ;)

    ResponderEliminar
  5. Este pedaso de codigo:

    $usu = split(" ",trim($_POST['usuario']));
    echo $usu[0];
    //Guardo la identidad del cliente que desea autenticarse
    $_SESSION["usuario"]= $usu[0];

    No lo entiendo muy bien, ademas me di cuenta del siguite error: cree un user (moises) con su passw(123) pero al momento de logearme y coloco "moises"+" "+"cualkier cosa" este se logea sin problemas como si "moises"+" "+"cualkier cosa" fuese igual a "moises", si no toy mal, y em disculparas pues soy un novato en esto, creo q es por algo referente a este pedaso de codigo no? bueno ahi ta mi inquietud, gracias...

    ResponderEliminar
  6. Muy bueno, pero ahora surge u inconveniente mas, y lo hagamos mas comlejo, deseo incluirle un nivle de acceso, por ejemplo un usuario qu entre a una determinada pagina y otro a otra...

    ResponderEliminar
  7. hola me llamo Alicia, he hecho todo tal y como lo explicas, pero he debido hacer algo mal. Si puedes entrar en www.paellakits.com y ver que puede pasar... tengo ahi todos los archivos. Sale un error al iniciar sesion, pero no se a donde asociarlo.
    Saludos
    este es mi correo, tunikiya@gmail.com
    Graciassss

    ResponderEliminar
  8. muchisimas gracias, ojala supiera la mitad de lo que tu sabes...gracias gracias gracias

    ResponderEliminar
  9. Buenas noches, estaba implementando tu codigo pero al momento de cerrar sesion me aparece

    "
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\aut\cerrar_sesion.php:1) in C:\AppServ\www\aut\cerrar_sesion.php on line 8"

    ya elimine todos los espacios pero aun sigue la falla, agradezco tu colaboracion

    ResponderEliminar
  10. hola tengo el mismo problema q jhosman mora, q se puede hacer

    ResponderEliminar
  11. Hola que tal muy buena explicacion de tu codigo me parece interesante, pero surge un error al momento de ingresar.
    HASTA ACA BIEN PORQUE ME REGISTRO Y SE GUARDA EN LA BD TODA LA INFORMACION INTRODUCIDA, PERO CUANDO QUIERO INICIAR SESION ME DICE:

    ***********************************************

    * Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/clikearp/public_html/usuarios/conexion.php:2) in /home/clikearp/public_html/usuarios/autenticacion.php on line 5

    * Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/clikearp/public_html/usuarios/conexion.php:2) in /home/clikearp/public_html/usuarios/autenticacion.php on line 5
    miguel75004f149038473757da0be07ef76dd4a9bdbc8d = 75004f149038473757da0be07ef76dd4a9bdbc8d
    Warning: Cannot modify header information - headers already sent by (output started at /home/clikearp/public_html/usuarios/conexion.php:2) in /home/clikearp/public_html/usuarios/autenticacion.php on line 40

    **********
    ME DA ERROR EN EL ARCHIVO AUTENTIFICACION.PHP

    ResponderEliminar
  12. Saludos a todos, y en especial a nuestro amigo Alejandro Sanchez, quien comparte sus conocimientos con todos nosotros, a mi también me sucedio lo mismo que a ustedes es decir a los lectores de estos tutoriales, bueno les comento mi solución al problema generado, para los que tienen problemas en el cierre de sesión tienen que editar el PHP.INI y buscar la linea output_buffering y ponerla en estado de On, vale aclarar que deben reiniciar el servidor (en mi caso tengo apache) sino no funcionara. y para los que tienen el problema en autenticación.php lo que deben hacer es colocarle un // delante de las lineas que comienzan con echo, eso es para que header pueda correr sin problemas... espero haber ayudado a esta comunidad de seguidores, y agradecer enormemente a Alejandro Sanchez.

    ResponderEliminar
  13. buenisimoo

    lo que andaba buscando hace tiempo,,,

    solo tengo una inquietud,,, como implemento el código a mi pagina web???

    la verdad soy novato en esto y me gustaría un poco de ayuda extra


    mi correo es albeiro33@hotmail.com

    te agradecería mucho tu ayuda,,, Dios te bendiga

    Exitos

    ResponderEliminar
  14. hola alejandro sanchez, soy luis sanchez casi tu primo XD
    weno broer tengo todo listo el codigo pero a la hora de iniciar la sesion me sale error en autentificacion.php
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\autenticacion\conexion.php:2) in C:\AppServ\www\autenticacion\autenticacion.php on line 5
    luiscc61a0f386a2877e3e27587fa086d2945b97c811 = cc61a0f386a2877e3e27587fa086d2945b97c811

    ayudame porfavor, necesito saber como iniciar una sesino ^^ DTB!!

    ResponderEliminar
  15. muchisimas gracias amigo me sirvio no tuve ningun problema al implementarlo de nuevo gracias por tus conocimientos y por tu tiempo

    ResponderEliminar
  16. Muy buenas
    te felicito por tu aporte; esta muy bueno
    tengo una duda; donde iguala lo ingresado con lo que esta en la base de datos? me perdi con lo del algoritmo hash. si fueras tan amable
    Muchas gracias

    ResponderEliminar
  17. Que tal Alejandro, muy buen material de tu blog, con respecto a la auteticacion con sha_1. he podido ingresar los usuarios con su datos excepto por que cualquier usuario que le ponga por clave "lamisma" no lo registra en mysql en cambio si pongo por clave "lamism" esa si la registra se me hace raro podrías ayudarme con esta duda.

    ResponderEliminar
  18. ya lo resolví, en el vídeo llamas a la instrucción del archivo registro.php donde haces la conversión así:

    document.getElementById('clave').value = str_sha1(document.getElementById('clave').value);

    y en el archivo que descargue del ejemplo viene así

    document.getElementById('clave').value = hex_sha1(document.getElementById('clave').value);

    la diferencia es str_sha1 y hex_sha1 porque el cambio?

    ResponderEliminar
  19. eL CODIGO NO SIRVE!! y nadie resuelve el problema... que perdida de tiempo!

    ResponderEliminar
  20. comprobado tiene razon Moises:

    moises dijo...

    Este pedaso de codigo:

    $usu = split(" ",trim($_POST['usuario']));
    echo $usu[0];
    //Guardo la identidad del cliente que desea autenticarse
    $_SESSION["usuario"]= $usu[0];

    No lo entiendo muy bien, ademas me di cuenta del siguite error: cree un user (moises) con su passw(123) pero al momento de logearme y coloco "moises"+" "+"cualkier cosa" este se logea sin problemas como si "moises"+" "+"cualkier cosa" fuese igual a "moises".

    Alejandro cuando revisaras los post??
    ya viste las fehcas???
    cuando contestaras??
    invertiste demasiado tiempo en este proyecto como para dejarlo abandonado.
    arregla el codigo!

    18 de Diciembre de 2010

    ResponderEliminar
  21. Buenas desde España...

    Antes de nada, la enhorabuena por el tutorial.
    Me pasó lo mismo con el código de autentificación, todo conecta bien a la bd pero despues al hacer login me sale esto--->

    Warning: Cannot modify header information - headers already sent by (output started at /home/ital10/domains/jesuscardiel.com/public_html/login/autenticacion.php:19) in /home/ital10/domains/jesuscardiel.com/public_html/login/autenticacion.php on line 40


    Habría alguna posibilidad de solucionarlo?

    Gracias de antemano, puedes contactar conmigo escribiendo a: jescarmar@hotmail.com

    ResponderEliminar
  22. donde consigo el sha.js mil gracias muy bueno tu aporte a lo novatos como yo

    ResponderEliminar
  23. donde consigo el sha.js mil gracias muy bueno tu aporte a lo novatos como yo contacto@julianrivillas.com mil gracias

    ResponderEliminar
  24. y como se hacen las autentificaciones en caso de tener varios perfiles de usuarios, y que cada uno tenga un menu diferente :)

    ResponderEliminar
  25. Hola. Te cuento que por mi parte está todo funcional, pero... siempre hay un pero... ja ja ja... bueno sabes cual es... Es que al cerrar el navegador sigue abierta la sesión... solo me basta copiar la dirección y pegarla en otra pestaña del navegador y listo estoy de nuevo autenticado.
    Quisiera que implementes el código para CERRAR SESIÓN AL CERRAR EL NAVEGADOR Y NO SOLO CON EL LINK QUE PONES PARA CERRAR SESIÓN. Te lo agradecería bastante.
    Hasta la próxima y te agradezco por tu aporte que está buenísimo.
    Bye bye

    ResponderEliminar