Creamos un increíble sistema de registro simple en PHP y MySQL. Creación de un sistema de registro PHP y MySQL increíblemente simple Registro de usuario de php de índice no pagado

Creamos un increíble sistema de registro simple en PHP y MySQL. Creación de un sistema de registro PHP y MySQL increíblemente simple Registro de usuario de php de índice no pagado

21.11.2021

Si necesita que una de las secciones de su sitio esté disponible para un círculo de personas limitado pero indefinido, la forma más fácil de hacerlo es registrando y autorizando a los usuarios. Hay muchas formas de autenticar a los usuarios. Se pueden utilizar tanto herramientas de servidor web como herramientas de lenguaje de programación. Hablaremos del caso en el que se utilizan sesiones de PHP.

Probablemente le gustaría ver una forma más moderna de crear tal forma. Todavía tengo una presentación completa, moderna y actualizada, pero puede ver que el formulario de comentarios se puede construir utilizando técnicas orientadas a objetos en PHP.

Primero, analicemos todos los pasos que daremos a continuación. ¿Qué necesitamos siquiera? Necesitamos un script que registre a un usuario, autorice a un usuario, redirija al usuario a algún lugar después de la autorización. También necesitaremos crear una página que estará protegida contra el acceso de usuarios no autorizados. Para el registro y la autorización, necesitaremos crear formularios HTML. Almacenaremos información sobre los usuarios registrados en una base de datos. Esto significa que todavía necesitamos un script para conectarnos al DBMS. Todo nuestro trabajo será realizado por funciones que nosotros mismos escribiremos. Guardaremos estas funciones en un archivo separado.

Entonces, necesitamos los siguientes archivos:

  • conexión con DBMS;
  • funciones personalizadas;
  • autorización;
  • registro;
  • página protegida;
  • script de cierre del usuario;
  • un script que verifica el estado de autorización del usuario;
  • hoja de estilo para el diseño más simple de nuestras páginas.

Todo esto sería inútil si no tiene una tabla correspondiente en su base de datos. Inicie su herramienta de administración DBMS (PhpMyAdmin o línea de comando, lo que sea más conveniente) y ejecute la siguiente consulta en ella:

CREATE TABLE `users` (` id` int (11) NOT NULL AUTO_INCREMENT, `login` char (16) NOT NULL,` password` char (40) NOT NULL, `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (` id`)) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;

Nombraré nuestros archivos de script así (todos estarán en el mismo directorio):

  • database.php;
  • functions.php;
  • login.php;
  • registration.php;
  • index.php;
  • logout.php;
  • checkAuth.php;
  • style.css.

Estoy seguro de que el propósito de cada uno de ellos está claro para ustedes. Comencemos con el script de conexión DBMS. Lo has visto antes. Simplemente guarde el código para este script en un archivo llamado database.php. Declararemos funciones personalizadas en el archivo functions.php. ¿Cómo funcionará todo esto? Un usuario no autorizado intenta acceder al documento protegido index.php, el sistema verifica si el usuario está autorizado, si el usuario no está autorizado, se le redirige a la página de autorización. En la página de autorización, el usuario debería ver un formulario de autorización. Vamos a hacerlo.

Autorización de usuario

Registrarse.



Ahora tenemos que darle a nuestra forma un cierto aspecto. Al mismo tiempo, definiremos las reglas para otros elementos. Les voy a dar el contenido completo de la hoja de estilo, adelantándome.

/ * archivo style.css * / .row (margin-bottom: 10px; width: 220px;) .row label (display: block; font-weight: bold;) .row input.text (font-size: 1.2em; padding: 2px 5px;) .to_reg (tamaño de fuente: 0.9em;). instrucción (tamaño de fuente: 0.8em; color: #aaaaaa; margin-left: 2px; cursor: predeterminado;) .error (color: red; margen izquierdo: 3px;)

Si todo se hace correctamente, debería tener lo siguiente en su navegador:

Por supuesto, todavía no tenemos un solo usuario registrado, y para iniciar sesión, debe registrarse. Hagamos un formulario de registro.

Registro de usuario

" />


Probablemente haya notado que hay variables PHP en el código HTML. Son el contenido de los atributos de los campos de texto en formularios, el contenido de los contenedores para mostrar errores. Pero no hemos inicializado estas variables. Vamos a hacer eso.

Registro de usuario

" />
El nombre de usuario solo puede contener caracteres latinos, números, símbolos "_", "-", ".". La longitud del nombre de usuario debe tener al menos 4 caracteres y no más de 16 caracteres
En la contraseña, puede usar solo caracteres latinos, números, símbolos "_", "!", "(", ")". La contraseña debe tener al menos 6 caracteres y no más de 16 caracteres
Repita la contraseña ingresada previamente


No hay ningún parámetro especificado en el atributo de acción de la etiqueta de formulario. En este caso, cuando se envíen los datos del formulario, se procesarán en el mismo script desde el que se enviaron. Entonces necesitamos escribir código que procese los datos del formulario. Pero primero, analicemos el algoritmo para su procesamiento.

Necesitamos que los campos de inicio de sesión y contraseña no estén vacíos. Luego, debe verificar que el inicio de sesión cumpla con los requisitos. La contraseña también debe cumplir con los requisitos descritos, y la contraseña repetida debe coincidir y, además, deben ser idénticas. Si alguna de estas condiciones no se cumple, se debe detener el procesamiento de los datos del formulario, se debe escribir la notificación correspondiente en la matriz de mensajes de error y se debe mostrar al usuario. Para comodidad del usuario, guardaremos el login ingresado por él (si lo indicó), escribiendo su valor en el arreglo $ fields.

Si todo está bien, en la ventana de su navegador, refiriéndose al documento registration.php, debería ver algo como esto:

Ahora, digamos que el usuario hace clic en el botón de registro sin completar los campos del formulario. Según nuestro algoritmo, el nombre de usuario y la contraseña no pueden estar vacíos. Si no se cumple esta condición, el registro no es posible. Tenemos en cuenta que el procesamiento de los datos del formulario se realiza en el script actual. Esto significa que debemos cambiar su código agregando las comprobaciones adecuadas. Inmediatamente estipularemos los siguientes controles. Si se ingresan tanto el nombre de usuario como la contraseña, debe verificar que cumplan con los requisitos especificados. Para verificar el nombre de usuario y la contraseña, crearemos funciones personalizadas en el archivo functions.php.

/ ** * functions.php * Archivo con funciones personalizadas * / // Incluir un archivo con parámetros para conectarse al DBMS require_once ("database.php"); // Comprobando la función de nombre de usuario checkLogin ($ str) (// Inicializa la variable con un posible mensaje de error $ error = ""; // Si no hay una cadena de inicio de sesión, devuelve un mensaje de error if (! $ Str) ($ error = "No ingresó el nombre de usuario"; return $ error;) / ** * Verifique el nombre de usuario usando expresiones regulares * El inicio de sesión debe tener al menos 4, no más de 16 caracteres * Debe contener caracteres latinos, números, * puede ser caracteres "_", "-", "." * / $ patrón = "/ ^ [-_. az \ d] (4,16) $ / i"; $ resultado = preg_match ($ patrón, $ str) ; // Si la verificación falla, devuelve un mensaje de error if (! $ Result) ($ error = "Caracteres no válidos en el nombre de usuario o el nombre de usuario es demasiado corto (largo)"; return $ error;) // Si todo está bien , return true return true;) // Verifica la función de contraseña del usuario checkPassword ($ str) (// Inicializa la variable con un posible mensaje de error $ error = ""; // Si no hay aparece una cadena con un inicio de sesión, devuelve un mensaje de error si (! $ str) ($ error = "No ingresó una contraseña"; return $ error; ) / ** * Verifique la contraseña del usuario usando expresiones regulares * La contraseña no debe ser menor de 6, ni mayor de 16 caracteres * Debe contener caracteres latinos, números, * puede contener caracteres "_", "!", "( ",") "* / $ patrón =" / ^ [_!) (. az \ d * (6,16) $ / i "; $ resultado = preg_match ($ patrón, $ str); // Si el cheque falló, devuelve un mensaje de error si (! $ resultado) ($ error = "Caracteres no válidos en la contraseña del usuario o la contraseña es demasiado corta (larga)"; devuelve $ error;) // Si todo está bien, devuelve verdadero devuelve verdadero ;)

Ahora necesitamos modificar el archivo registration.php para usar las funciones que hemos declarado. Agregaremos una condición al script para verificar que se haga clic en el botón de registro. Dentro de esta condición, se inicia una verificación del inicio de sesión y las contraseñas. Si alguna de las comprobaciones falla, volvemos a renderizar el formulario y mostramos un mensaje de error. Si no hay errores, registramos al usuario, ya no mostramos el formulario de registro, informamos al usuario sobre el registro exitoso y, utilizando la función header (), lo redireccionamos al formulario de autorización.

Te has registrado con éxito en el sistema. Ahora será redirigido a la página de inicio de sesión. Si esto no sucedió, acceda a él mediante un enlace directo.

"; header (" Refresh: 5; URL = login.php ");) // De lo contrario, informe al usuario sobre el error else ($ errors [" full_error "] = $ reg;)))?> Registro de usuario
" />
El nombre de usuario solo puede contener caracteres latinos, números, símbolos "_", "-", ".". La longitud del nombre de usuario debe tener al menos 4 caracteres y no más de 16 caracteres
En la contraseña, puede usar solo caracteres latinos, números, símbolos "_", "!", "(", ")". La contraseña debe tener al menos 6 caracteres y no más de 16 caracteres
Repita la contraseña ingresada previamente


Debería haber notado otra función nueva en el script: registro (). Y aún no lo hemos anunciado. Vamos a hacer eso.

// Función de registro de usuario registro de función ($ inicio de sesión, $ contraseña) (// Inicializar una variable con un posible mensaje de error $ error = ""; // Si no hay una cadena de inicio de sesión, devolver un mensaje de error si (! $ Iniciar sesión) ($ error = "Inicio de sesión no especificado"; return $ error;) elseif (! $ contraseña) ($ error = "Contraseña no especificada"; return $ error;) // Compruebe si el usuario ya está registrado // Conéctese al DBMS connect (); // Escribe una cadena de consulta $ sql = "SELECT` id` FROM` users` WHERE` login` = "". $ Login. "" "; // Haz una consulta a la base de datos $ query = mysql_query ($ sql) or die (""); // Mira el número de usuarios con este inicio de sesión, si hay al menos uno, // devuelve un mensaje de error if (mysql_num_rows ($ query)> 0) ($ error = "Un usuario con el inicio de sesión especificado ya está registrado"; return $ error;) // Si no existe tal usuario, regístrelo // Escriba una cadena de consulta $ sql = "INSERT INTO` users` (` id`, `login `,` contraseña`) VALORES (NULL, "". $ login. " "," ". $ contraseña. "") "; // Realizar una consulta a la base de datos $ query = mysql_query ($ sql) o morir ("

No se puede agregar el usuario: ". Mysql_error ().". Se produjo un error en la línea ". __LINE__".

"); // No olvides desconectarte del DBMS mysql_close (); // Devuelve el valor true, indicando el registro exitoso del usuario return true;)

Si todo está bien, su usuario quedará registrado. Puede probar el formulario. Intente registrar usuarios con los mismos inicios de sesión. Después del registro exitoso, el usuario será redirigido al formulario de autorización. Anteriormente, acabamos de crear el marcado para mostrar este formulario. Dado que no hay ningún parámetro especificado en su atributo de acción, los datos enviados por el formulario se procesarán en el mismo script. Por lo tanto, debemos escribir el código para procesarlo y agregarlo al documento login.php.

Autorización de usuario

;">

Si no está registrado en el sistema, regístrese.



Probablemente haya notado que en el script de autorización tenemos otra función desconocida: autorización (). Esta función debe autorizar al usuario comprobando primero si hay un usuario registrado en la base de datos con el mismo nombre de usuario y contraseña. Si no se encuentra dicho usuario, la autorización se interrumpirá y se mostrará un mensaje de error en la pantalla. Si la verificación es exitosa, la función de autorización () iniciará una sesión y le escribirá los valores de nombre de usuario y contraseña, informará al script sobre el éxito de la autorización y el script redirigirá al usuario a la página de recursos protegidos.

/ ** * Función de autorización de usuario. * La autorización de los usuarios con nosotros se realizará * mediante sesiones PHP. * / autorización de función ($ inicio de sesión, $ contraseña) (// Inicializar una variable con un posible mensaje de error $ error = ""; // Si no hay una línea de inicio de sesión, devolver un mensaje de error si (! $ inicio de sesión) ($ error = "Inicio de sesión no especificado"; devuelve $ error;) elseif (! $ Contraseña) ($ error = "Contraseña no especificada"; devuelve $ error;) // Compruebe si el usuario ya está registrado // Conéctese al DBMS connect ( ); // Necesitamos verificar si hay un usuario entre los registrados // Redactar una cadena de consulta $ sql = "SELECT` id` FROM` users` WHERE` login` = "". $ Login. "" Y `password` =" ". $ Password." ""; // Ejecuta la consulta $ query = mysql_query ($ sql) o muere ("

No se puede ejecutar la consulta: ". Mysql_error ().". Se produjo un error en la línea ". __LINE__".

"); // Si no hay ningún usuario con esos datos, devuelve un mensaje de error if (mysql_num_rows ($ consulta) == 0) ($ error =" El usuario con los datos especificados no está registrado "; devuelve $ error;) // Si el usuario existe, inicie la sesión session_start (); // Y escriba el nombre de usuario y la contraseña en él // Para esto usamos la matriz superglobal $ _SESSION $ _SESSION ["login"] = $ login; $ _SESSION [" contraseña "] = $ contraseña; / / No olvide cerrar la conexión de la base de datos mysql_close (); // Devolver verdadero para el mensaje sobre la autorización de usuario exitosa return verdadero;)

Cuando un usuario ingresa a una página protegida, debe verificar la exactitud de sus datos de autorización. Para ello, necesitamos una función personalizada más. Llamémoslo checkAuth (). Su tarea será la de contrastar los datos de autorización del usuario con los que se encuentran almacenados en nuestra base de datos. Si los datos no coinciden, el usuario será redirigido a la página de autorización.

Función checkAuth ($ inicio de sesión, $ contraseña) (// Si no hay nombre de usuario o contraseña, devuelva falso si (! $ Inicio de sesión ||! $ Contraseña) devuelva falso; // Compruebe si dicho usuario está registrado // Conéctese al DBMS connect (); // Cree una cadena de consulta $ sql = "SELECT` id` FROM` users` WHERE` login` = "". $ Login. "" AND `password` =" ". $ Password." "" ; // Ejecuta la consulta $ query = mysql_query ($ sql) o muere ("

No se puede ejecutar la consulta: ". Mysql_error ().". Se produjo un error en la línea ". __LINE__".

"); // Si no hay ningún usuario con esos datos, devuelve falso; if (mysql_num_rows ($ consulta) == 0) (devuelve falso;) // No olvide cerrar la conexión a la base de datos mysql_close (); // De lo contrario , devuelve verdadero devuelve verdadero;)

Ahora que el usuario está en la página segura, debemos llamar a la función de validación de datos de autorización. Colocaremos la llamada y el script de verificación en un archivo checkAuth.php separado y lo conectaremos a las páginas que se cerrarán para el acceso público.

/ ** * Script para verificar la autorización del usuario * / // Iniciar una sesión, de la cual extraeremos el nombre de usuario y la contraseña // de los usuarios registrados session_start (); // Incluir un archivo con funciones personalizadas require_once ("functions.php"); / ** * Para determinar si un usuario está conectado, necesitamos * verificar si hay registros en la base de datos para su nombre de usuario * y contraseña. Para hacer esto, usaremos la función personalizada * para verificar la exactitud de los datos de usuario registrados. * Si esta función devuelve falso, entonces no hay autorización. * En ausencia de autorización, simplemente redirigimos * al usuario a la página de autorización. * / // Si la sesión contiene datos de inicio de sesión y contraseña, // márquelos si (isset ($ _ SESSION ["inicio de sesión"]) && $ _SESSION ["inicio de sesión"] && isset ($ _ SESSION ["contraseña"] ) && $ _SESSION ["contraseña"]) (// Si falla la validación de los datos existentes if (! CheckAuth ($ _ SESSION ["login"], $ _SESSION ["contraseña"])) (// Redirigir al usuario al encabezado de la página de autorización ("location: login.php"); // Detener la ejecución del script exit;)) // Si no hay datos sobre el inicio de sesión o la contraseña del usuario, // pensamos que no hay autorización, redirigir el usuario // a la página de autorización else (header ("location: login.php"); // Abortar la salida del script;)

Ahora creemos el código para nuestra página segura. Será bastante sencillo.

Autorización y registro de usuarios

Autorización exitosa.

Ha accedido a una página segura. Puede cerrar sesión en el sistema.



Como puede ver, en el documento protegido incluimos solo un archivo: checkAuth.php. Todos los demás archivos se incluyen en otros scripts. Por lo tanto, nuestro código no parece engorroso. Organizamos el registro y autorización de usuarios. Ahora debe permitir que los usuarios cierren la sesión. Para hacer esto, crearemos un script en el archivo logout.php.

/ ** * Script de cierre de sesión del usuario. Dado que los usuarios están * autorizados a través de sesiones, su nombre de usuario y contraseña se almacenan * en la matriz supergloban $ _SESSION. Para salir del sistema, simplemente destruya los valores * de la matriz $ _SESSION ["login"] y $ _SESSION ["contraseña"], luego * de lo cual redirigimos al usuario a la página de autorización * / // Asegúrese para iniciar la sesión session_start (); unset ($ _ SESSION ["iniciar sesión"]); unset ($ _ SESSION ["contraseña"]); encabezado ("ubicación: login.php");

El script para el registro, la autorización y la verificación del usuario está listo. Puedes usarlo en casa, complementarlo, cambiarlo para que se adapte a tus necesidades. Si tiene alguna pregunta, puede hacerla en los comentarios. Puede descargar usted mismo todos los archivos mencionados aquí, empaquetados en un solo archivo.

PD Soy consciente de que es mejor escribir código orientado a objetos, sé que no vale la pena transmitir y almacenar la contraseña en texto claro, que la información ingresada en la base de datos debe ser verificada de antemano. Sé. No hablaré de esto aquí.

¡Hola! Ahora intentaremos implementar el registro más simple en el sitio usando PHP + MySQL. Para hacer esto, Apache debe estar instalado en su computadora. El principio de nuestro script se muestra a continuación.

1. Comencemos por crear la placa de los usuarios en la base de datos.... Contendrá datos de usuario (nombre de usuario y contraseña). Vayamos a phpmyadmin (si crea una base en su PC http: // localhost / phpmyadmin /). Crea una tabla usuarios, tendrá 3 campos.

Lo creo en la base de datos mysql, puedes crearlo en otra base de datos. A continuación, establezca los valores, como en la imagen:

2. Se requiere una conexión a esta tabla. Vamos a crear un archivo bd.php... Su contenido:

$ db = mysql_connect ("su servidor MySQL", "iniciar sesión en este servidor", "contraseña de este servidor");
mysql_select_db ("nombre de la base de datos a la que nos estamos conectando", $ db);
?>

En mi caso, se ve así:

$ db = mysql_connect ("localhost", "usuario", "1234");
mysql_select_db ("mysql", $ db);
?>

Nosotros salvamos bd.php.
¡Multa! Tenemos una tabla en la base de datos, una conexión a ella. Ahora puedes empezar a crear una página donde los usuarios dejarán sus datos.

3. Cree un archivo reg.php con contenido (todos los comentarios dentro):



registro


registro


















4. Crea un archivo, que ingresará datos en la base de datos y guardará al usuario. save_user.php(comentarios adentro):



{
}
// si se ingresan el nombre de usuario y la contraseña, los procesamos para que las etiquetas y los scripts no funcionen, nunca se sabe qué pueden ingresar las personas


// eliminar espacios extra
$ inicio de sesión = recorte ($ inicio de sesión);
$ contraseña = recortar ($ contraseña);
// conectarse a la base de datos
// verifica la existencia de un usuario con el mismo inicio de sesión
$ resultado = mysql_query ("SELECCIONAR ID DE usuarios DONDE login =" $ login "", $ db);
if (! empty ($ myrow ["id"])) (
exit ("Lo sentimos, el nombre de usuario que ingresó ya está registrado. Ingrese otro nombre de usuario");
}
// si no, guarda los datos
$ result2 = mysql_query ("INSERT INTO users (login, password) VALUES (" $ login "," $ password ")");
// Comprueba si hay algún error
si ($ resultado2 == "VERDADERO")
{
echo "¡Se ha registrado correctamente! Ahora puede entrar en el sitio. Página de inicio";
}
demás (
echo "¡Error! No estás registrado.";
}
?>

5. ¡Ahora nuestros usuarios pueden registrarse! A continuación, debe hacer una "puerta" para ingresar al sitio para los usuarios ya registrados. index.php(comentarios adentro):

// todo el procedimiento funciona en sesiones. Es en él donde se almacenan los datos del usuario mientras está en el sitio. ¡Es muy importante ejecutarlos al principio de la página!
session_start ();
?>


Página de inicio


Página de inicio











Regístrate ahora



// Compruebe si las variables de identificación de usuario y de inicio de sesión están vacías
if (vacío ($ _ SESSION ["iniciar sesión"]) o vacío ($ _ SESSION ["id"]))
{
// Si está vacío, entonces no mostramos el enlace
echo "Has iniciado sesión como invitado
Este enlace solo está disponible para usuarios registrados ";
}
demás
{

En archivo index.php mostraremos un enlace que estará abierto solo para usuarios registrados. Este es el objetivo del script: restringir el acceso a cualquier dato.

6. Existe un archivo con la verificación del nombre de usuario y contraseña ingresados. testreg.php (comentarios dentro):

session_start (); // todo el procedimiento funciona en sesiones. Es en él donde se almacenan los datos del usuario mientras está en el sitio. ¡Es muy importante ejecutarlos al principio de la página!
if (isset ($ _ POST ["login"])) ($ login = $ _POST ["login"]; if ($ login == "") (unset ($ login);)) // ingrese el inicio de sesión ingresado por el usuario en la variable $ login, si está vacía, destruimos la variable
if (isset ($ _ POST ["contraseña"])) ($ contraseña = $ _ POST ["contraseña"]; if ($ contraseña == "") (unset ($ contraseña);))
// coloca la contraseña ingresada por el usuario en la variable $ contraseña, si está vacía, luego destruye la variable
if (vacío ($ inicio de sesión) o vacío ($ contraseña)) // si el usuario no ingresó el nombre de usuario o contraseña, entonces emitimos un error y detenemos el script
{
salir ("¡No ingresó toda la información, regrese y complete todos los campos!");
}
// si se ingresan el nombre de usuario y la contraseña, los procesamos para que las etiquetas y los scripts no funcionen, nunca se sabe qué pueden ingresar las personas
$ login = stripslashes ($ login);
$ inicio de sesión = htmlspecialchars ($ inicio de sesión);
$ contraseña = stripslashes ($ contraseña);
$ contraseña = htmlspecialchars ($ contraseña);
// eliminar espacios extra
$ inicio de sesión = recorte ($ inicio de sesión);
$ contraseña = recortar ($ contraseña);
// conectarse a la base de datos
include ("bd.php"); // el archivo bd.php debe estar en la misma carpeta que todos los demás, si no lo está, simplemente cambie la ruta

$ resultado = mysql_query ("SELECCIONAR * DE los usuarios DONDE login =" $ login "", $ db); // recupera de la base de datos todos los datos sobre el usuario con el inicio de sesión ingresado
$ myrow = mysql_fetch_array ($ resultado);
if (vacío ($ myrow ["contraseña"]))
{
// si el usuario con el inicio de sesión ingresado no existe
}
demás (
// si existe, compruebe las contraseñas
if ($ myrow ["contraseña"] == $ contraseña) (
// si las contraseñas coinciden, ¡iniciamos una sesión para el usuario! ¡Puedes felicitarlo, entró!
$ _SESSION ["iniciar sesión"] = $ myrow ["iniciar sesión"];
$ _SESSION ["id"] = $ myrow ["id"]; // estos datos se utilizan con mucha frecuencia, por lo que el usuario que inició sesión "los llevará consigo"
echo "¡Has entrado con éxito en el sitio! Página de inicio";
}
demás (
// si las contraseñas no coinciden

Exit ("Lo sentimos, el inicio de sesión que ingresó o la contraseña es incorrecta.");
}
}
?>

¡Eso es todo! La lección puede resultar aburrida, pero muy útil. Aquí solo se muestra la idea de registro, luego puedes mejorarla: agregar protección, diseño, campos de datos, subir avatares, salir de la cuenta (para esto, simplemente destruye las variables de la sesión con la función desarmado) etc. ¡Buena suerte!

Revisé todo, ¡funciona correctamente!

El proceso de creación de un sistema de registro es bastante laborioso. Debe escribir código para verificar la validez de las direcciones de correo electrónico, enviar correos electrónicos de confirmación, ofrecer la capacidad de recuperar contraseñas, almacenar contraseñas en un lugar seguro, validar formularios de entrada y mucho más. Incluso cuando hagas todo esto, los usuarios serán reacios a registrarse, ya que incluso el registro más mínimo requiere su actividad.

En el tutorial de hoy, desarrollaremos un sistema de registro simple que no requerirá que uses ninguna contraseña. Como resultado, obtendremos un sistema que se puede modificar o integrar fácilmente en un sitio PHP existente. Si estás interesado, sigue leyendo.

PHP

Ahora estamos listos para abordar el código PHP. La principal funcionalidad del sistema de registro la proporciona la clase de Usuario, que puede ver a continuación. La clase usa (), que es una biblioteca minimalista para trabajar con bases de datos. La clase Usuario es responsable de acceder a las bases de datos, generar tokens de inicio de sesión y validarlos. Nos presenta una interfaz simple que se puede incorporar fácilmente al sistema de registro en sus sitios basados ​​en PHP.

User.class.php

// Instancia privada de ORM
$ orm privado;

/**
* Encuentre un usuario por una cadena de token. Solo se aceptan tokens válidos
* consideración. Un token es válido durante 10 minutos después de que se haya generado.
* @param string $ token El token a buscar
* @return usuario
*/

Función estática pública findByToken ($ token) (

// encuéntrelo en la base de datos y asegúrese de que la marca de tiempo sea correcta


-> donde ("token", $ token)
-> where_raw ("token_validity> NOW ()")
-> buscar_uno ();

Si (! $ Resultado) (
falso retorno;
}

Devolver nuevo usuario ($ resultado);
}

/**
* Inicie sesión o registre un usuario.
* @return usuario
*/

Función pública estática loginOrRegister ($ email) (

// Si tal usuario ya existe, devuélvalo

Si (Usuario :: existe ($ correo electrónico)) (
devolver nuevo usuario ($ correo electrónico);
}

// De lo contrario, créalo y devuélvelo

Usuario de retorno :: crear ($ correo electrónico);
}

/**
* Crea un nuevo usuario y guárdalo en la base de datos
* @param string $ email La dirección de correo electrónico del usuario
* @return usuario
*/

Crear función estática privada ($ correo electrónico) (

// Escribe un nuevo usuario en la base de datos y lo devuelve

$ resultado = ORM :: for_table ("reg_users") -> crear ();
$ resultado-> correo electrónico = $ correo electrónico;
$ resultado-> guardar ();

Devolver nuevo usuario ($ resultado);
}

/**
* Verifique si dicho usuario existe en la base de datos y devuelva un booleano.
* @param string $ email La dirección de correo electrónico del usuario
* @return booleano
*/

Existe una función estática pública ($ email) (

// ¿Existe el usuario en la base de datos?
$ resultado = ORM :: for_table ("reg_users")
-> where ("correo electrónico", $ correo electrónico)
-> contar ();

Devuelve $ resultado == 1;
}

/**
* Crear un nuevo objeto de usuario
* @param $ param instancia de ORM, id, correo electrónico o nulo
* @return usuario
*/

Función pública __construct ($ param = null) (

Si ($ param instancia de ORM) (

// Se pasó una instancia de ORM
$ esto-> orm = $ param;
}
else if (es_cadena ($ param)) (

// Se pasó un correo electrónico
$ esto->
-> donde ("correo electrónico", $ param)
-> buscar_uno ();
}
demás (

Si (es_numeric ($ param)) (
// Se pasó una identificación de usuario como parámetro
$ id = $ param;
}
else if (isset ($ _ SESSION ["loginid"])) (

// No se pasó ningún ID de usuario, mire en la sesión
$ id = $ _SESSION ["loginid"];
}

$ this-> orm = ORM :: for_table ("reg_users")
-> donde ("id", $ id)
-> buscar_uno ();
}

/**
* Genera un nuevo token de inicio de sesión SHA1, lo escribe en la base de datos y lo devuelve.
* @return string
*/

Función pública generateToken () (
// generar un token para el usuario que ha iniciado sesión. Guárdelo en la base de datos.

$ token = sha1 ($ esto-> email.time (). rand (0, 1000000));

// Guarde el token en la base de datos,
// y marcarlo como válido solo durante los próximos 10 minutos

$ this-> orm-> set ("token", $ token);
$ this-> orm-> set_expr ("token_validity", "AÑADIR HORA (AHORA ()," 0:10 ")");
$ esto-> orm-> guardar ();

Devolver $ token;
}

/**
* Iniciar sesión este usuario
* @return void
*/

Inicio de sesión de función pública () (

// Marcar al usuario como conectado
$ _SESSION ["loginid"] = $ this-> orm-> id;

// Actualiza el campo last_login db
$ this-> orm-> set_expr ("last_login", "NOW ()");
$ esto-> orm-> guardar ();
}

/**
* Destruya la sesión y cierre la sesión del usuario.
* @return void
*/

Cerrar sesión de función pública () (
$ _SESSION = array ();
unset ($ _ SESSION);
}

/**
* Compruebe si el usuario ha iniciado sesión.
* @return booleano
*/

Función pública logIn () (
return isset ($ this-> orm-> id) && $ _SESSION ["loginid"] == $ this-> orm-> id;
}

/**
* Compruebe si el usuario es administrador
* @return booleano
*/

La función pública isAdmin () (
return $ this-> rank () == "administrador";
}

/**
* Encuentra el tipo de usuario. Puede ser administrador o regular.
* @return string
*/

Rango de función pública () (
si ($ esto-> orm-> rango == 1) (
return "administrador";
}

Devuelve "regular";
}

/**
* Método mágico para acceder a los elementos de lo privado.
* instancia de $ orm como propiedades del objeto de usuario
* @param string $ key El nombre de la propiedad a la que se accede
* @return mezclado
*/

Función pública __get ($ key) (
if (isset ($ this-> orm -> $ key)) (
return $ this-> orm -> $ key;
}

Devuelve nulo;
}
}
Los tokens se generan mediante un algoritmo y se almacenan en la base de datos. Usamos MySQL para establecer la columna token_validity en 10 minutos. Al validar un token, le decimos al motor que necesitamos un token, el campo token_validity aún no ha expirado. Por lo tanto, limitamos el tiempo durante el cual el token será válido.

Tenga en cuenta que estamos usando el método mágico __get () al final del documento para acceder a las propiedades del objeto de usuario. Esto nos permite acceder a los datos que se almacenan en la base de datos en forma de propiedades: $ usuario-> correo electrónico, $ usuario-> token. Por ejemplo, veamos cómo podemos usar esta clase en el siguiente fragmento de código:


Otro archivo que almacena la funcionalidad necesaria es functions.php. Allí tenemos algunas funciones auxiliares que nos permiten mantener ordenado el resto del código.

Functions.php

Función send_email ($ desde, $ hasta, $ asunto, $ mensaje) (

// Función auxiliar para enviar correo electrónico

$ encabezados = "Versión MIME: 1.0". "\ r \ n";
$ encabezados. = "Tipo de contenido: texto / plano; juego de caracteres = utf-8". "\ r \ n";
$ encabezados. = "De:". $ de. "\ r \ n";

Devolver correo ($ para, $ asunto, $ mensaje, $ encabezados);
}

función get_page_url () (

// Descubre la URL de un archivo PHP

$ url = "http". (vacío ($ _ SERVER ["HTTPS"])? "": "s"). ": //". $ _ SERVER ["SERVER_NAME"];

If (isset ($ _ SERVER ["REQUEST_URI"]) && $ _SERVER ["REQUEST_URI"]! = "") (
$ url. = $ _SERVER ["REQUEST_URI"];
}
demás (
$ url. = $ _SERVER ["PATH_INFO"];
}

Devolver $ url;
}

función rate_limit ($ ip, $ límite_hora = 20, $ límite_10_min = 10) (

// El número de intentos de inicio de sesión durante la última hora por esta dirección IP

$ count_hour = ORM :: for_table ("reg_login_attempt")
->
-> where_raw ("ts> SUBTIME (NOW ()," 1:00 ")")
-> contar ();

// El número de intentos de inicio de sesión durante los últimos 10 minutos por esta dirección IP

$ count_10_min = ORM :: for_table ("reg_login_attempt")
-> donde ("ip", sprintf ("% u", ip2long ($ ip)))
-> where_raw ("ts> SUBTIME (NOW ()," 0:10 ")")
-> contar ();

If ($ count_hour> $ limit_hour || $ count_10_min> $ limit_10_min) (
lanzar una nueva excepción ("¡Demasiados intentos de inicio de sesión!");
}
}

function rate_limit_tick ($ ip, $ email) (

// Crea un nuevo registro en la tabla de intentos de inicio de sesión

$ login_attempt = ORM :: for_table ("reg_login_attempt") -> crear ();

$ login_attempt-> email = $ email;
$ login_attempt-> ip = sprintf ("% u", ip2long ($ ip));

$ login_attempt-> save ();
}

redirección de función ($ url) (
encabezado ("Ubicación: $ url");
Salida;
}
Las funciones rate_limit y rate_limit_tick nos permiten limitar el número de intentos de autorización durante un cierto período de tiempo. Los intentos de autorización se registran en la base de datos reg_login_attempt. Estas funciones se activan cuando se envía el formulario de autorización, como puede ver en el siguiente fragmento de código.

El siguiente código fue tomado de index.php y es responsable de enviar el formulario de inicio de sesión. Devuelve una respuesta JSON, que es impulsada por el código jQuery que vimos en assets / js / script.js.

index.php

Si (! Empty ($ _ POST) && isset ($ _ SERVER ["HTTP_X_REQUESTED_WITH"])) (

// Salida de un encabezado JSON

Encabezado ("Tipo de contenido: aplicación / json");

// ¿Es válida la dirección de correo electrónico?

If (! Isset ($ _ POST ["correo electrónico"]) ||! Filter_var ($ _ POST ["correo electrónico"], FILTER_VALIDATE_EMAIL)) (
lanzar una nueva excepción ("Introduzca un correo electrónico válido");
}

// Esto lanzará una excepción si la persona está arriba
// los límites de intentos de inicio de sesión permitidos (consulte functions.php para obtener más información):
rate_limit ($ _ SERVER ["REMOTE_ADDR"]);

// Registra este intento de inicio de sesión
rate_limit_tick ($ _ SERVER ["REMOTE_ADDR"], $ _POST ["email"]);

// Envía el mensaje al usuario

$ mensaje = "";
$ correo electrónico = $ _POST ["correo electrónico"];
$ subject = "Su enlace de inicio de sesión";

Si (! Usuario :: existe ($ correo electrónico)) (
$ subject = "¡Gracias por registrarse!";
$ message = "¡Gracias por registrarse en nuestro sitio! \ n \ n";
}

// Intente iniciar sesión o registrar a la persona
$ usuario = Usuario :: loginOrRegister ($ _ POST ["correo electrónico"]);

$ message. = "Puede iniciar sesión desde esta URL: \ n";
$ mensaje. = get_page_url (). "? tkn =". $ usuario-> generateToken (). "\ n \ n";

$ message. = "El enlace caducará automáticamente después de 10 minutos.";

$ resultado = enviar_email ($ fromEmail, $ _POST ["email"], $ asunto, $ mensaje);

Si (! $ Resultado) (
lanzar una nueva excepción ("Hubo un error al enviar su correo electrónico. Vuelva a intentarlo");
}

Muere (json_encode (array (
"message" => "¡Gracias! Hemos \" enviado un enlace a su bandeja de entrada. Compruebe también su carpeta de correo no deseado ".
)));
}
}
catch (Excepción $ e) (

Muere (json_encode (array (
"error" => 1,
"mensaje" => $ e-> getMessage ()
)));
}
Tras la autorización o el registro exitosos, el código anterior envía un correo electrónico a la persona con un enlace para la autorización. El token (token) está disponible como la variable $ _GET "tkn" debido a la URL generada.

index.php

Si (isset ($ _ GET ["tkn"])) (

// ¿Es este un token de inicio de sesión válido?
$ usuario = Usuario :: findByToken ($ _ GET ["tkn"]);

// ¡Sí! Inicie sesión como usuario y redirija a la página protegida.

$ usuario-> inicio de sesión ();
redireccionar ("protected.php");
}

// Simbolo no valido. Redirigir de nuevo al formulario de inicio de sesión.
redireccionar ("index.php");
}
Al ejecutar $ user-> login () se crearán las variables de sesión necesarias, lo que permitirá al usuario permanecer conectado en inicios de sesión posteriores.

El cierre de sesión se implementa aproximadamente de la misma manera:

Index.php

If (isset ($ _ GET ["logout"])) (

$ usuario = nuevo usuario ();

Si ($ usuario-> logIn ()) (
$ usuario-> cerrar sesión ();
}

Redirigir ("index.php");
}
Al final del código, redirigimos al usuario a index.php nuevamente, por lo que se excluye el parámetro? Logout = 1 en la URL.

Nuestro archivo index.php también necesitará protección; no queremos que los usuarios que ya han iniciado sesión vean el formulario. Para esto usamos el método $ usuario-> logIn ():

Index.php

$ usuario = nuevo usuario ();

if ($ usuario-> logIn ()) (
redireccionar ("protected.php");
}
Finalmente, veamos cómo puede proteger una página en su sitio y hacerla disponible solo después de la autorización:

protected.php

// Para proteger cualquier página php en su sitio, incluya main.php
// y crea un nuevo objeto Usuario. ¡Es así de simple!

require_once "incluye / main.php";

$ usuario = nuevo usuario ();

if (! $ usuario-> logIn ()) (
redireccionar ("index.php");
}
Después de esta verificación, puede estar seguro de que el usuario ha iniciado sesión correctamente. También tendrá acceso a los datos almacenados en la base de datos como propiedades del objeto $ user. Para mostrar el correo electrónico de un usuario y su rango, use el siguiente código:

Echo "Su correo electrónico:". $ Usuario-> correo electrónico;
echo "Tu rango:". $ usuario-> rango ();
Aquí, rank () es un método, ya que la columna de clasificación en la base de datos generalmente contiene números (0 para usuarios regulares y 1 para administradores), y necesitamos convertir todo esto en nombres de rango, que se implementa con este método. Para convertir un usuario normal en administrador, simplemente edite el registro de usuario en phpmyadmin (o cualquier otro programa de base de datos). Como administrador, el usuario no dispondrá de funciones especiales. Usted mismo tiene derecho a elegir qué derechos conceder a los administradores.

¡Listo!

¡Con esto nuestro sencillo sistema de registro está listo! Puede usarlo en un sitio PHP existente o puede actualizarlo para que se adapte a sus propios requisitos.

En este tutorial, lo guío a través del proceso completo de creación de un sistema de registro de usuarios donde los usuarios pueden crear una cuenta proporcionando nombre de usuario, correo electrónico y contraseña, inicio de sesión y cierre de sesión usando PHP y MySQL. También le mostraré cómo puede hacer que algunas páginas sean accesibles solo para los usuarios registrados. Cualquier otro usuario que no haya iniciado sesión no podrá acceder a la página.

Si prefieres un video, puedes verlo en mi canal de YouTube.

Lo primero que tendremos que hacer es configurar nuestra base de datos.

Crea una base de datos llamada registro... En el registro base de datos, agregue una tabla llamada usuarios... La tabla de usuarios tomará los siguientes cuatro campos.

  • nombre de usuario - varchar (100)
  • correo electrónico - varchar (100)
  • contraseña - varchar (100)

Puede crear esto usando un cliente MySQL como PHPMyAdmin.

O puede crearlo en el indicador de MySQL utilizando el siguiente script SQL:

CREATE TABLE `users` (` id` int (11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` varchar (100) NOT NULL,` email` varchar (100) NOT NULL, `password` varchar (100) NOT NULL) ENGINE = CHARSET POR DEFECTO InnoDB = latin1;

Y eso es todo con la base de datos.

Ahora crea una carpeta llamada registro en un directorio accesible a nuestro servidor. es decir, cree la carpeta dentro de htdocs (si está utilizando el servidor XAMPP) o dentro www(si está utilizando el servidor wampp).

Dentro de la carpeta registro, crea los siguientes archivos:

Abra estos archivos en un editor de texto de su elección. El mío es Sublime Text 3.

Registro de un usuario

Abra el archivo register.php y pegue el siguiente código en él:

regiser.php:

Registrarse

¿Ya eres usuario? Registrarse



Nada complicado hasta ahora, ¿verdad?

Algunas cosas a tener en cuenta aquí:

Primero es que nuestra forma "s acción El atributo se establece en register.php. Esto significa que cuando se hace clic en el botón de envío del formulario, todos los datos del formulario se enviarán a la misma página (register.php). La parte del código que recibe los datos de este formulario está escrita en el archivo server.php y es por eso que la incluimos en la parte superior del archivo register.php.

Tenga en cuenta también que estamos incluyendo el archivo errors.php para mostrar errores de formulario. Llegaremos a eso pronto.

Como puede ver en la sección principal, estamos vinculando a un archivo style.css. Abra el archivo style.css y pegue el siguiente CSS en él:

* (margin: 0px; padding: 0px;) body (font-size: 120%; background: # F8F8FF;) .header (width: 30%; margin: 50px auto 0px; color: white; background: # 5F9EA0; text -align: center; border: 1px solid # B0C4DE; border-bottom: none; border-radius: 10px 10px 0px 0px; padding: 20px;) form, .content (width: 30%; margin: 0px auto; padding: 20px ; border: 1px solid # B0C4DE; background: white; border-radius: 0px 0px 10px 10px;) .input-group (margin: 10px 0px 10px 0px;) .input-group label (display: block; text-align: left ; margin: 3px;) .input-group input (height: 30px; width: 93%; padding: 5px 10px; font-size: 16px; border-radius: 5px; border: 1px solid gray;) .btn (padding: 10px; tamaño de fuente: 15px; color: blanco; fondo: # 5F9EA0; borde: ninguno; radio del borde: 5px;) .error (ancho: 92%; margen: 0px automático; relleno: 10px; borde: 1px sólido # a94442; color: # a94442; fondo: # f2dede; radio del borde: 5px; alineación del texto: izquierda;) .success (color: # 3c7 63d; fondo: # dff0d8; borde: 1px sólido # 3c763d; margen inferior: 20px; )

Ahora la forma se ve hermosa.

Vamos a escribir ahora el código que recibirá la información enviada desde el formulario y almacenar (registrar) la información en la base de datos. Como prometimos anteriormente, hacemos esto en el archivo server.php.

Abra server.php y pegue este código en él:

server.php

Las sesiones se utilizan para realizar un seguimiento de los usuarios registrados, por lo que incluimos un session_start () en la parte superior del archivo.

Los comentarios en el código explican prácticamente todo, pero destacaré algunas cosas aquí.

La declaración if determina si se hace clic en el botón reg_user en el formulario de registro. Recuerde, en nuestro formulario, el botón enviar tiene un atributo de nombre establecido en reg_user y eso es lo que estamos haciendo referencia en la declaración if.

Todos los datos se reciben del formulario y se verifican para asegurarse de que el usuario completó correctamente el formulario. Las contraseñas también se comparan para asegurarse de que coincidan.

Si no se encontraron errores, el usuario se registra en el usuarios tabla en la base de datos con una contraseña hash. La contraseña hash es por razones de seguridad. Garantiza que incluso si un pirata informático logra acceder a su base de datos, no podrá leer su contraseña.

Pero los mensajes de error no se muestran ahora porque nuestro archivo errors.php todavía está vacío. Para mostrar los errores, pegue este código en el archivo errors.php.

0) : ?>

Cuando un usuario se registra en la base de datos, se conecta inmediatamente y se le redirige a la página index.php.

Y eso es todo para el registro. Veamos el inicio de sesión del usuario.

Usuario de inicio de sesión

Iniciar sesión como usuario es incluso más fácil de hacer. Simplemente abra la página de inicio de sesión y coloque este código dentro de ella:

Sistema de registro PHP y MySQL

Acceso

¿Todavía no eres miembro? Inscribirse



Todo en esta página es bastante similar a la página register.php.

Ahora, el código que registra al usuario debe escribirse en el mismo archivo server.php. Entonces abra el archivo server.php y agregue este código al final del archivo:

// ... // INICIAR SESIÓN DE USUARIO if (isset ($ _ POST ["login_user"])) ($ username = mysqli_real_escape_string ($ db, $ _POST ["username"]); $ contraseña = mysqli_real_escape_string ($ db, $ _POST ["contraseña"]); if (vacío ($ nombre de usuario)) (array_push ($ errores, "Se requiere nombre de usuario");) if (vacío ($ contraseña)) (array_push ($ errores, "Se requiere contraseña") ;) if (count ($ errores) == 0) ($ contraseña = md5 ($ contraseña); $ consulta = "SELECT * FROM users WHERE username =" $ username "AND password =" $ password ""; $ resultados = mysqli_query ($ db, $ consulta); if (mysqli_num_rows ($ resultados) == 1) ($ _SESSION ["username"] = $ username; $ _SESSION ["success"] = "Ahora ha iniciado sesión"; header ( "ubicación: index.php");) else (array_push ($ errors, "Combinación de nombre de usuario / contraseña incorrecta");)))?>

Nuevamente, todo lo que hace es verificar si el usuario ha llenado el formulario correctamente, verifica que sus credenciales coincidan con un registro de la base de datos y, si lo hace, lo registra. Después de iniciar sesión, el usuario lo redirige al archivo index.php con un mensaje de éxito.

Ahora veamos qué sucede en el archivo index.php. Ábrelo y pega el siguiente código en él:

Hogar

Pagina de inicio

Bienvenido

cerrar sesión



La primera instrucción if comprueba si el usuario ya ha iniciado sesión. Si no han iniciado sesión, serán redirigidos a la página de inicio de sesión. Por lo tanto, esta página es accesible solo para usuarios registrados. Si desea que cualquier página sea accesible solo para los usuarios registrados, todo lo que tiene que hacer es colocar esta declaración if en la parte superior del archivo.

La segunda instrucción if comprueba si el usuario ha hecho clic en el botón de cierre de sesión. En caso afirmativo, el sistema los desconecta y los redirige a la página de inicio de sesión.

Ahora continúe, personalícelo para que se adapte a sus necesidades y cree un sitio increíble. Si tiene alguna inquietud o algo que necesite aclarar, déjelo en los comentarios a continuación y vendrá ayuda.

Siempre puedes apoyar compartiendo en las redes sociales o recomendando mi blog a tus amigos y colegas.

En este artículo, aprenderá cómo crear un formulario de registro y autorización utilizando HTML, JavaScript, PHP y MySql. Estos formularios se utilizan en casi todos los sitios, independientemente de su tipo. Se crean tanto para el foro como para la tienda online y para las redes sociales (como, por ejemplo, Facebook, Twiter, Odnoklassniki) y para muchos otros tipos de sitios.

Si tiene un sitio en su computadora local, espero que ya tenga servidor local instalado y en ejecución... Nada funcionará sin él.

Crear una tabla en la base de datos

Para implementar el registro de usuarios, en primer lugar, necesitamos una base de datos. Si ya lo tiene, genial, de lo contrario, debe crearlo. En este artículo, explico en detalle cómo hacer esto.

Y entonces, tenemos una base de datos (abreviada como base de datos), ahora necesitamos crear una tabla usuarios en el que agregaremos nuestros usuarios registrados.

También expliqué cómo crear una tabla en una base de datos en el artículo. Antes de crear una tabla, necesitamos definir qué campos contendrá. Estos campos corresponderán a los campos del formulario de registro.

Entonces, pensamos, imaginamos qué campos tendrá nuestro formulario y creamos una tabla usuarios con campos como este:

  • identificación- Identificador. Campo identificación todas las tablas de la base de datos deberían tener.
  • primer nombre- Para guardar el nombre.
  • apellido- Para guardar apellidos.
  • Email- Guardar la dirección postal. Usaremos el correo electrónico como inicio de sesión, por lo que este campo debe ser único, es decir, debe tener un índice ÚNICO.
  • email_status- Campo para indicar si el correo está confirmado o no. Si se confirma el correo, entonces tendrá el valor 1, de lo contrario el valor 0.
  • contraseña- Para guardar la contraseña.


Si desea que su formulario de registro tenga más campos, también puede agregarlos aquí.

Todo, nuestra mesa usuarios Listo. Pasemos al siguiente paso.

Conexión de base de datos

Hemos creado la base de datos, ahora necesitamos conectarnos a ella. Nos conectaremos usando la extensión PHP MySQLi.

En la carpeta de nuestro sitio, cree un archivo llamado dbconnect.php, y en él escribimos el siguiente script:

Error de conexión a la base de datos... Descripción del error: ".mysqli_connect_error ()".

"; exit ();) // Establecer la codificación de la conexión $ mysqli-> set_charset (" utf8 "); // Para mayor comodidad, agreguemos aquí una variable que contendrá el nombre de nuestro sitio $ address_site =" http: // testite.local ";?>

Este archivo dbconnect.php necesitará estar conectado para formar controladores.

Presta atención a la variable $ address_site, aquí indiqué el nombre de mi sitio de prueba en el que trabajaré. Usted, respectivamente, indica el nombre de su sitio.

Estructura del sitio

Ahora echemos un vistazo a la estructura HTML de nuestro sitio.

Moviremos el encabezado y pie de página del sitio a archivos separados, header.php y footer.php... Los incluiremos en todas las páginas. Es decir, en el principal (archivo index.php), a la página con el formulario de registro (archivo form_register.php) y a la página con el formulario de autorización (archivo form_auth.php).

Bloquear con nuestros enlaces, registro y autorización, agréguelo al encabezado del sitio para que se muestren en todas las páginas. Un enlace entrará en página del formulario de registro(expediente form_register.php) y el otro a la página con formulario de autorización(expediente form_auth.php).

Contenido del archivo header.php:

Nombre de nuestro sitio

Como resultado, la página principal se ve así:


Por supuesto, su sitio puede tener una estructura completamente diferente, pero esto no es importante para nosotros ahora. Lo principal es que existen enlaces (botones) para el registro y la autorización.

Ahora pasemos al formulario de registro. Como ya entendiste, lo tenemos en el archivo. form_register.php.

Vaya a la Base de datos (en phpMyAdmin), abra la estructura de la tabla usuarios y ver qué campos necesitamos. Esto significa que necesitamos campos para ingresar un nombre y apellido, un campo para ingresar una dirección postal (correo electrónico) y un campo para ingresar una contraseña. Y por motivos de seguridad, agregaremos un campo para ingresar captcha.

En el servidor, como resultado del procesamiento del formulario de registro, pueden ocurrir varios errores, por lo que el usuario no podrá registrarse. Por lo tanto, para que el usuario comprenda por qué falla el registro, es necesario mostrar mensajes sobre estos errores.

Antes de mostrar el formulario, agregue un bloque para mostrar los mensajes de error de la sesión.

Y una cosa más, si el usuario ya está autorizado, y por el bien de su interés ingresa directamente a la página de registro escribiendo en la barra de direcciones del navegador site_address / form_register.php, entonces en este caso, en lugar del formulario de registro, le mostraremos un título indicando que ya se ha registrado.

En general, el código de archivo form_register.php lo tenemos así:

Ya está registrado

En el navegador, la página con el formulario de registro se ve así:


Mediante el uso atributo requerido, hemos hecho que todos los campos sean obligatorios.

Preste atención al código del formulario de registro donde se muestra captcha:


Especificamos la ruta al archivo en el valor del atributo src para la imagen. captcha.php que genera este captcha.

Veamos el código del archivo. captcha.php:

El código está bien comentado, por lo que me centraré en un solo punto.

Dentro de la función imageTtfText (), se especifica la ruta a la fuente verdana.ttf... Entonces, para que el captcha funcione correctamente, debemos crear una carpeta fuentes y coloque el archivo de fuente allí verdana.ttf... Puede encontrarlo y descargarlo de Internet, o tomarlo del archivo con los materiales de este artículo.

Hemos terminado con la estructura HTML, es hora de seguir adelante.

Verificando la validez del correo electrónico con jQuery

Cualquier formulario debe verificar la validez de los datos ingresados, tanto en el lado del cliente (usando JavaScript, jQuery) como en el lado del servidor.

Debemos prestar especial atención al campo Correo electrónico. Es muy importante que la dirección postal ingresada sea válida.

Para este campo de entrada, configuramos el tipo de correo electrónico (type = "email"), esto nos advierte levemente contra formatos incorrectos. Pero esto no es suficiente, porque a través del inspector de código que nos proporciona el navegador, puedes cambiar fácilmente el valor del atributo escribe con Email sobre texto y listo, nuestro cheque ya no será válido.


Y en ese caso, tenemos que hacer una verificación más confiable. Para ello, usaremos la biblioteca jQuery de JavaScript.

Para conectar la biblioteca jQuery, en el archivo header.php entre etiquetas , antes de la etiqueta de cierre , agregue esta línea:

Inmediatamente después de esta línea, agregue el código de verificación de validación del correo electrónico. Aquí agregamos un código para verificar la longitud de la contraseña ingresada. Su longitud debe ser de al menos 6 caracteres.

Con la ayuda de este script, verificamos la validez de la dirección de correo electrónico ingresada. Si el usuario ingresó un correo electrónico incorrecto, entonces le mostramos un error al respecto y desactivamos el botón para enviar el formulario. Si todo está bien, eliminamos el error y activamos el botón para enviar el formulario.

Y así, hemos terminado con la validación del formulario en el lado del cliente. Ahora podemos enviarlo al servidor, donde también haremos un par de comprobaciones y añadiremos los datos a la base de datos.

Registro de usuario

Enviamos el formulario para su procesamiento al archivo. register.php, a través del método POST. El nombre de este archivo de controlador, especificado en el valor del atributo acción... Y el método de envío se especifica en el valor del atributo método.

Abre este archivo register.php y lo primero que debemos hacer es escribir una función para iniciar una sesión y conectar el archivo que creamos anteriormente dbconnect.php(En este archivo, hicimos una conexión a la base de datos). Y sin embargo, declaremos inmediatamente las celdas error de mensajes y mensajes_de_exito en la matriz global de la sesión. V mensajes_error registraremos todos los mensajes de error que se produzcan durante el procesamiento del formulario, y en succes_messages, grabaremos mensajes alegres.

Antes de continuar, debemos verificar fue el formulario enviado en absoluto... Un atacante podría ver el valor de un atributo acción del formulario y averigüe qué archivo está procesando este formulario. Y puede que se le ocurra la idea de ir directamente a este archivo escribiendo la siguiente dirección en la barra de direcciones del navegador: http: //arees_site/register.php

Por lo tanto, debemos verificar la presencia de una celda en la matriz POST global, cuyo nombre coincide con el nombre de nuestro botón "Registrarse" del formulario. Por lo tanto, verificamos si se hizo clic en el botón "Registrarse" o no.

Si un atacante intenta navegar directamente a este archivo, recibirá un mensaje de error. Permítame recordarle que la variable $ address_site contiene el nombre del sitio y se declaró en el archivo dbconnect.php.

¡Error! página de inicio.

"); } ?>

El valor del captcha en la sesión se agregó cuando se generó, en el archivo captcha.php... Como recordatorio, te mostraré este fragmento de código del archivo nuevamente. captcha.php, donde el valor de captcha se agrega a la sesión:

Ahora procedamos a la verificación en sí. En archivo register.php, dentro del bloque if, donde comprobamos si se hizo clic en el botón "Registrarse", o mejor dicho, donde se especifica el comentario " // (1) Lugar para el siguiente fragmento de código"nosotros escribimos:

// Verifica el captcha resultante // Recorta los espacios desde el principio y el final de la línea $ captcha = trim ($ _ POST ["captcha"]); if (isset ($ _ POST ["captcha"]) &&! empty ($ captcha)) (// Compara el valor recibido con el valor de la sesión. if (($ _ SESSION ["rand"]! = $ captcha ) && ($ _SESSION ["rand"]! = "")) (// Si el captcha no es correcto, devolvemos al usuario a la página de registro, y allí mostraremos un mensaje de error de que ingresó el captcha incorrecto . $ mensaje_error = "

¡Error! Ingresaste el captcha incorrecto

"; // Guarde el mensaje de error en la sesión. $ _SESSION [" error_messages "] = $ error_message; // Regrese al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: " . $ Address_site. "/ Form_register.php"); // Detiene el script exit ();) // (2) Lugar para el siguiente fragmento de código) else (// Si el captcha no se pasa o está vacío, exit ( "

¡Error! No hay código de verificación, es decir, el código captcha. Puede ir a la página de inicio.

"); }

A continuación, necesitamos procesar los datos recibidos de la matriz POST. En primer lugar, debemos verificar el contenido de la matriz POST global, es decir, ¿hay celdas cuyos nombres corresponden a los nombres de los campos de entrada de nuestro formulario?

Si la celda existe, recortamos los espacios desde el principio y desde el final de la línea de esta celda, de lo contrario, redirigimos al usuario a la página con el formulario de registro.

Además, después de recortar los espacios, agregue una línea a la variable y verifique si esta variable está vacía, si no está vacía, continúe, de lo contrario, redirigimos al usuario a la página con el formulario de registro.

Pega este código en la ubicación especificada " // (2) Lugar para el siguiente fragmento de código".

/ * Verifica si la matriz global $ _POST contiene datos enviados desde el formulario y encierra los datos enviados en variables ordinarias. * / If (isset ($ _ POST ["first_name"])) (// Recorta los espacios desde el principio y desde el final de la cadena $ first_name = trim ($ _ POST ["first_name"]); // Compruebe si la variable está vacía if (! empty ($ first_name)) (// Por seguridad, convierta los caracteres especiales en entidades HTML $ first_name = htmlspecialchars ($ first_name, ENT_QUOTES);) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

Introduzca su nombre

Falta el campo de nombre

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); ) if (isset ($ _ POST ["last_name"])) (// Recortar espacios desde el principio y el final de la cadena $ last_name = trim ($ _ POST ["last_name"]); if (! empty ($ last_name )) (// Por seguridad, convierta los caracteres especiales en entidades HTML $ last_name = htmlspecialchars ($ last_name, ENT_QUOTES);) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

Ingrese su apellido

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); )) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

Falta el campo de apellido

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); ) if (isset ($ _ POST ["email"])) (// Recortar espacios desde el principio y el final de la línea $ email = trim ($ _ POST ["email"]); if (! empty ($ email )) ($ email = htmlspecialchars ($ email, ENT_QUOTES); // (3) Lugar del código para verificar el formato de la dirección de correo electrónico y su singularidad) else (// Guarde el mensaje de error en la sesión. $ _SESSION [ "mensaje_error"]. = "

Introduce tu correo electrónico

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); )) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); ) if (isset ($ _ POST ["contraseña"])) (// Recortar espacios desde el principio y el final de la cadena $ contraseña = trim ($ _ POST ["contraseña"]); if (! empty ($ contraseña )) ($ contraseña = htmlspecialchars ($ contraseña, ENT_QUOTES); // Cifre el paprol $ contraseña = md5 ($ contraseña. "top_secret");) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages "]. ="

Ingresa tu contraseña

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); )) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); ) // (4) Lugar para el código para agregar un usuario a la base de datos

De particular importancia es el campo Email... Tenemos que comprobar el formato de la dirección postal recibida y su unicidad en la base de datos. Es decir, ¿hay algún usuario ya registrado con la misma dirección postal?

En la ubicación especificada " // (3) Lugar del código para comprobar el formato de la dirección postal y su unicidad"agregue el siguiente código:

// Verifique el formato de la dirección de correo electrónico recibida usando la expresión regular $ reg_email = "/^**@(+(*+)*\.)++/i"; // Si el formato de la dirección de correo electrónico recibida no coincide con la expresión regular if (! Preg_match ($ reg_email, $ email)) (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

Ingresaste un correo electrónico no válido

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); ) // Comprobamos si ya existe dicha dirección en la base de datos. $ Result_query = $ mysqli-> query ("SELECT` email` FROM` users` WHERE` email` = "". $ Email. "" "); // Si el número de filas recibidas es exactamente uno, entonces un usuario con esta dirección de correo electrónico ya está registrado if ($ result_query-> num_rows == 1) (// Si el resultado no es falso if (($ row = $ result_query -> fetch_assoc ())! = false) (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

Un usuario con esta dirección de correo electrónico ya está registrado.

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php ");) else (// Guardar el mensaje de error a la sesión. $ _SESSION ["error_messages"]. = "

Error en la consulta de la base de datos

"; // Devuelve al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php ");) / * cierra la selección * / $ result_query-> close (); // Detener el script exit ();) / * cerrando la selección * / $ result_query-> close ();

Y así, hemos terminado con todas las comprobaciones, es hora de agregar el usuario a la base de datos. En la ubicación especificada " // (4) Lugar para el código para agregar un usuario a la base de datos"agregue el siguiente código:

// Solicitud para agregar un usuario a la base de datos $ result_query_insert = $ mysqli-> query ("INSERT INTO` users` (first_name, last_name, email, password) VALUES (" ". $ First_name." "," ". $ Last_name . "", "". $ correo electrónico. "", "". $ contraseña. "") "); if (! $ result_query_insert) (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

No se pudo agregar un usuario a la solicitud de la base de datos

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); ) else ($ _SESSION ["success_messages"] = "

Registro completado con éxito !!!
Ahora puede iniciar sesión con su nombre de usuario y contraseña.

"; // Envía al usuario al encabezado de la página de autorización (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_auth.php ");) / * Completando la solicitud * / $ result_query_insert-> close (); // Cerrar la conexión de la base de datos $ mysqli-> close ();

Si ocurre un error en la solicitud para agregar un usuario a la base de datos, agregamos un mensaje sobre este error a la sesión y devolvemos al usuario a la página de registro.

De lo contrario, si todo salió bien, también agregamos un mensaje a la sesión, pero ya más agradable, es decir, le decimos al usuario que el registro fue exitoso. Y lo redirigimos a la página con el formulario de autorización.

El script para verificar el formato de la dirección de correo electrónico y la longitud de la contraseña está en el archivo header.php, por lo que también actuará en los campos de este formulario.

La sesión también se inicia en el archivo. header.php, entonces en el archivo form_auth.php no es necesario que inicies la sesión, porque obtendremos un error.


Como dije, el script para verificar el formato de la dirección de correo electrónico y la longitud de la contraseña también funciona aquí. Por lo tanto, si el usuario ingresa una dirección de correo electrónico incorrecta o una contraseña corta, inmediatamente recibirá un mensaje de error. Y el boton entrar se volverá inactivo.

Después de eliminar los errores, el botón entrar se activa y el usuario podrá enviar el formulario al servidor donde será procesado.

Autorización de usuario

Para atribuir valor acción la autorización para discapacitados tiene un archivo auth.php, esto significa que el formulario se procesará en este archivo.

Y entonces, abre el archivo auth.php y escriba el código para procesar el formulario de autorización. Lo primero que debe hacer es iniciar una sesión y conectar el archivo. dbconnect.php para conectarse a la base de datos.

// Declare una celda para agregar errores que puedan ocurrir al procesar el formulario. $ _SESSION ["error_messages"] = ""; // Declara la celda para agregar mensajes exitosos $ _SESSION ["success_messages"] = "";

/ * Compruebe si se envió el formulario, es decir, si se hizo clic en el botón Iniciar sesión. Si es así, continúe, si no, muestre un mensaje de error al usuario indicando que fue directamente a esta página. * / if (isset ($ _ POST ["btn_submit_auth"]) &&! empty ($ _ POST ["btn_submit_auth"])) (// (1) Espacio para el siguiente fragmento de código) else (exit ("

¡Error! Ha ingresado a esta página directamente, por lo que no hay datos que procesar. Puede ir a la página de inicio.

"); }

// Verifica el captcha resultante if (isset ($ _ POST ["captcha"])) (// Recorta los espacios desde el principio y el final de la línea $ captcha = trim ($ _ POST ["captcha"]); if (! Empty ($ captcha)) (// Compara el valor recibido con el valor de la sesión. If (($ _ SESSION ["rand"]! = $ Captcha) && ($ _SESSION ["rand"]! = " ")) (// Si el captcha no es correcto, devolvemos al usuario a la página de autorización, y allí mostraremos un mensaje de error de que ingresó el captcha incorrecto. $ Error_message ="

¡Error! Ingresaste el captcha incorrecto

"; // Guarde el mensaje de error en la sesión. $ _SESSION [" error_messages "] = $ error_message; // Regrese al usuario al encabezado de la página de autorización (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: " . $ Address_site. "/ Form_auth.php"); // Detener el script exit ();)) else ($ error_message = "

¡Error! El campo para ingresar captcha no debe estar vacío.

"; // Guarde el mensaje de error en la sesión. $ _SESSION [" error_messages "] = $ error_message; // Regrese al usuario al encabezado de la página de autorización (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: " . $ Address_site. "/ Form_auth.php"); // Detener el script exit ();) // (2) Lugar para procesar la dirección de correo // (3) Lugar para procesar la contraseña // (4) Lugar para haciendo una consulta a la base de datos) else (// Si no se pasa captcha exit ("

¡Error! Falta el código de verificación, es decir, el código captcha. Puede ir a la página de inicio.

"); }

Si el usuario ingresó el código de verificación correctamente, entonces continúe, de lo contrario lo regresaremos a la página de autorización.

Comprobación de la dirección postal

// Recorta los espacios desde el principio y el final de la línea $ email = trim ($ _ POST ["email"]); if (isset ($ _ POST ["email"])) (if (! empty ($ email)) ($ email = htmlspecialchars ($ email, ENT_QUOTES); // Verifica el formato de la dirección de correo electrónico recibida usando la expresión regular $ reg_email = "/^**@(+(*+)*\.)++/i"; // Si el formato de la dirección de correo electrónico recibida no coincide con la expresión regular if (! preg_match ($ reg_email, $ email)) (// Guardar en el mensaje de error de la sesión. $ _SESSION ["error_messages"]. = "

Ingresaste un correo electrónico incorrecto

"; // Devolver al usuario al encabezado de la página de autorización (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_auth.php "); // Detener el script exit (); )) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

El campo para ingresar la dirección postal (correo electrónico) no debe estar vacío.

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_register.php "); // Detener el script exit (); )) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

Falta el campo de correo electrónico

"; // Devolver al usuario al encabezado de la página de autorización (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_auth.php "); // Detener el script exit (); ) // (3) Espacio para procesar la contraseña

Si el usuario ingresó una dirección postal en un formato incorrecto o el valor del campo de dirección postal está vacío, lo devolvemos a la página de autorización donde mostramos un mensaje al respecto.

Confirmacion de contraseña

El siguiente campo que se procesará es el campo de contraseña. A la ubicación especificada " // (3) Un lugar para procesar la contraseña", nosotros escribimos:

If (isset ($ _ POST ["contraseña"])) (// Recortar espacios desde el principio y el final de la cadena $ contraseña = trim ($ _ POST ["contraseña"]); if (! Empty ($ contraseña) ) ($ contraseña = htmlspecialchars ($ contraseña, ENT_QUOTES); // Cifre la contraseña $ contraseña = md5 ($ contraseña. "top_secret");) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages" ]. = "

Ingresa tu contraseña

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_auth.php "); // Detener el script exit (); )) else (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

No hay ningún campo para ingresar una contraseña

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_auth.php "); // Detener el script exit (); )

Aquí, usando la función md5 (), encriptamos la contraseña recibida, ya que en la base de datos tenemos las contraseñas en forma encriptada. Una palabra secreta adicional en cifrado, en nuestro caso " ultra secreto"debe ser el que se utilizó al registrar al usuario.

Ahora necesita realizar una consulta a la base de datos en una muestra de un usuario cuya dirección de correo es igual a la dirección de correo recibida y la contraseña es igual a la contraseña recibida.

// Consulta en la base de datos sobre la selección del usuario. $ result_query_select = $ mysqli-> query ("SELECT * FROM` users` WHERE email =" ". $ email." "AND contraseña =" ". $ contraseña." ""); if (! $ result_query_select) (// Guarde el mensaje de error en la sesión. $ _SESSION ["error_messages"]. = "

Solicitar error al recuperar el usuario de la base de datos

"; // Devolver al usuario al encabezado de la página de registro (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_auth.php "); // Detener el script exit (); ) else (// Verificamos si no hay ningún usuario con tales datos en la base de datos, luego mostramos un mensaje de error if ($ result_query_select-> num_rows == 1) (// Si los datos ingresados ​​coinciden con los datos de la base de datos, luego guardamos el nombre de usuario y la contraseña en la matriz de sesión. $ _SESSION ["email"] = $ email; $ _SESSION ["contraseña"] = $ contraseña; // Devuelve al usuario al encabezado de la página principal ("HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Index.php ");) else (// Guarde el mensaje de error en la sesión. $ _SESSION [" error_messages "]. ="

Nombre de usuario y / o contraseña incorrectos

"; // Devolver al usuario al encabezado de la página de autorización (" HTTP / 1.1 301 Moved Permanently "); header (" Ubicación: ". $ Address_site." / Form_auth.php "); // Detener el script exit (); ))

Cerrar sesión en el sitio

Y lo ultimo que hacemos es procedimiento para salir del sitio... Por el momento, el encabezado muestra enlaces a la página de autorización y a la página de registro.

En el encabezado del sitio (archivo header.php), utilizando la sesión comprobamos si el usuario ya está conectado. De lo contrario, mostramos los enlaces de registro y autorización; de lo contrario (si está autorizado), en lugar de los enlaces de registro y autorización, mostramos el enlace. Producción.

Pieza de código modificada del archivo header.php:

registro

Producción

Cuando hace clic en el enlace de salida del sitio, llegamos al archivo logout.php, donde simplemente destruimos las celdas con la dirección de correo y la contraseña de la sesión. Después de eso, devolvemos al usuario a la página en la que se hizo clic en el enlace. producción.

Código de archivo logout.php:

Eso es todo. Ahora sabes como Implementar y procesar formularios de registro y autorización. usuario en su sitio. Estos formularios se encuentran en casi todos los sitios, por lo que todo programador debe saber cómo crearlos.

También aprendimos cómo validar los datos de entrada, tanto en el lado del cliente (en el navegador, usando JavaScript, jQuery) como en el lado del servidor (usando el lenguaje PHP). También aprendimos implementar el procedimiento para salir del sitio.

Todos los scripts se prueban y funcionan. Puede descargar el archivo con los archivos de este pequeño sitio en este enlace.

En el futuro escribiré un artículo donde describiré. Y también planeo escribir un artículo donde lo explicaré (sin recargar la página). Entonces, para estar al tanto del lanzamiento de nuevos artículos, puede suscribirse a mi sitio.

Si tiene alguna pregunta, póngase en contacto, también, si nota algún error en el artículo, hágamelo saber.

Plan de lección (Parte 5):

  1. Cree una estructura HTML para el formulario de inicio de sesión
  2. Procesamos los datos recibidos
  3. Mostramos el saludo del usuario en el encabezado del sitio.

¿Te gustó el artículo?



© 2021 skypenguin.ru - Consejos para cuidar mascotas