Crea un guión de acceso SEGURO en PHP | John Morris | Skillshare
Menú
Buscar

Velocidad de reproducción


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Crea un guión de acceso SEGURO en PHP

teacher avatar John Morris, I help freelancers get clients.

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Bienvenido e introducción

      2:16

    • 2.

      Crear un sesión sencillo y sin datos de datos

      25:17

    • 3.

      Crear un sesión avanzado y con base de datos

      29:18

    • 4.

      Añade una característica de recordar

      24:50

    • 5.

      Crear un reajuste de contraseña seguro

      45:32

    • 6.

      Próximos pasos

      1:16

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

1176

Estudiantes

1

Proyectos

Acerca de esta clase

Aprenderás a crear un sistema de acceso seguro en PHP de sesión en PHP. Hay dos veriones: 1) una versión simple no de la base que crearemos primero para rápidamente los conceptos básicos. Luego, 2) Convertiremos eso en script de inscripción de base de datos de la base completo:

  • Acceso de usuario seguro con sesiones
  • Registro de usuarios
  • Recuerda mi característica
  • reset contraseña en el correo electrónico
  • Tokens Cryptographically
  • Prevención de inyección de SQL
  • Instalar script

y más.

WARNING

Este es un curso avanzado. Los temas que se abordan aquí supuestos de cierto nivel de conocimiento de PHP. Sin francamente es un pequeño porcentaje de desarrolladores del mundo que saben de lo que lo hacer Te recomiendo strongly te recomiendo tomar mi curso de PHP 101 antes de tomar este uno. Solo te ponga a de esto cuando estés listo para desafiar y hacer tus habilidades de PHP de notar.

Comviene con código completo en la sección de proyectos de clase.

Conoce a tu profesor(a)

Teacher Profile Image

John Morris

I help freelancers get clients.

Profesor(a)

Click here to start this class

Ver perfil completo

Level: Advanced

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Bienvenido e introducción: Hey ahi, John Morris Aquí, John Morris online dot com. Entonces quiero ser muy rápido lo que vas a aprender en este curso, Así que vas a aprender a construir un script yo diría bastante avanzado de inicio de sesión. Por lo que este script de inicio de sesión, por supuesto, está dirigido por sesiones. Ya verás que tiene una característica de recordarme aquí en pleno funcionamiento. Recuérdame característica. Entonces si alguien marca esto y cierran su navegador y regresan, los recordará y seguirán iniciando sesión, aunque, porque estamos usando sesiones cerrando el navegador destruye las sesiones. Utilizamos cookies para ayudar a que vuelvan a iniciar sesión. ¿ Los recuerdas? Se podía ver aquí. Tiene un registro se hablará de. Hay formas fáciles, dedo del pie, agregar campos y así sucesivamente. Tenemos restablecimiento de contraseña junto con ella para que puedas tener ah, contraseña enviada por correo electrónico. Que se restablezcan. Entonces es un Es un script de inicio de sesión bastante funcional, y vamos a caminar a través de una especie de cómo resolver esto, todo el código asegurando todas estas cosas porque empezamos a hablar de la función Recordarme y una función de restablecimiento de contraseña. Esas cosas son bastante sensibles en cuanto a poder asegurarlas. Hablaremos de asegurarnos de que esos criptográficos aéreos Lee sean seguros. Hablaremos ahora, insertar todo esto en la base de datos, cómo crear la base de datos para este tipo de cosas. Hay un script de instalación como parte de esto que echará un vistazo y simplemente realmente lo romperá todo, te enseñará cómo hacerlo. Y y como dije, esta es una especie de forma ah bastante avanzada aquí. Entonces esto es algo que puedes aprender a hacer. Y si realmente clavas esto abajo, quiero decir, esto no es algo que todo codificador y por ahí sabe. Yo diría que es probablemente, no sé, 10% 20% tal vez de gente por ahí que realmente entienden cómo hacer esto Así que realmente puedes diferenciarte. Ah, a lo grande con saber hacer esto. Entonces, de nuevo, vamos a cavar en todo eso. Te voy a mostrar cómo construir un muro, cómo asegurarlo. Ah, y cómo hacer que todo funcione. Eso es lo que hay en este curso. Ah, seguro que hay un botón de inscripción o algo por aquí en alguna parte. Así que adelante y haga clic en eso, y espero verlos en el curso. 2. Crear un sesión sencillo y sin datos de datos: Hola ahí. John Morrissey, John Morris online dot com. Esta lección. Te voy a guiar por la sencilla versión de este log en forma. Entonces esto es Ah, esto sería algo que no vas a distribuir. A lo mejor más utilizado para el tipo de cosas internas. Y, ya sabes, solo quieres no tener dedo no quieres tener que preocuparte por la base de datos y todo ese tipo de cosas. Simplemente quieres tener un tipo simple de script de inicio de sesión que luego solo puedes poner tipo de contenido que quieras ahí para los usuarios iniciados. Es posible que seas el único usuario conectado. Puede que tengas algunas personas. De verdad depende de ti. Se puede agregar más usuarios, pero de nuevo, es solo una versión simple, no basada en datos de un script de inicio de sesión. Entonces déjame solo mostrarte esto muy rápido. Tengo ah, contraseña, nombre bonito y contraseña aquí, y en realidad, sí necesito cambiar algunas ahí mismo. Pero lo haremos cuando lleguemos aquí. Entonces si nos pegamos a presentar, se puede ver a qué vengo. Una pantalla sencilla que dice, bienvenido a John Morris. Y entonces es así que tiene mi nombre y sabe quién soy y luego tiene este click aquí para cerrar sesión enlaces. Entonces aquí es donde podrías yo solo tengo realmente simple aquí, pero estoy demostrando que en realidad puedes agarrar algunos datos de usuario. Entonces sabe quién soy, y estoy conectado. Si tipo de recarga esta página, ya sabes, todavía va a reconocer que estoy conectado, y entonces solo tengo un simple enlace de cierre de sesión aquí. Entonces si hago clic aquí para cerrar sesión dice que ya estás desconectado y si vuelvo aquí Ah, esta es en realidad la página principal. Por lo que este es index dot PHP y está volviendo a subir la pantalla de inicio de sesión. Entonces estoy seguro de que tienes todo lo que funciona, pero eso es esencialmente lo que hace el guión. Si pongo solo algunos gobbledygook para ah, nombre y pastor y trato de enviarlo, ya puedes ver que no me meto conectado. Y si trato de refrescar esta página para volver a entrar, no puedo volver a entrar. De acuerdo, entonces es una idea sencilla aquí. Ahora saltemos y veamos todo el código detrás de esto. Entonces como dije, este es un script de registro de no base de datos. Entonces donde realmente guardamos los datos del usuario está en un archivo de conflicto. Y así esto es esencialmente que acabo de crear en ah array y el tipo de un espacio global de Natan aquí llamado usuarios. Y en ella tengo el nombre de usuario, la contraseña y el nombre. Entonces solo algunos datos simples. Podrías, por supuesto, agregar cualquier dato que quisieras a esto y estar bien. También puedes, si solo tipo de copio esto y copio Pegar y solo cambiemos. Vamos a añadir un nuevo usuario aquí. Entonces, Dawn Juan, entraremos todo este año y lo salvaremos. Y si vuelvo aquí y ahora, inicio sesión con mi nombre de usuario de Don Juan y golpeo enviar. Ahora sabe que soy Don uno, y estoy conectado para que puedas agregar fácilmente nuevos usuarios a esto otra vez, no usando una base de datos, y podría estar preguntándose sobre guardar estos nombres de usuario y contraseñas en un archivo PHP como este. Está perfectamente bien, porque si ellos si llegaron ahí, no pueden ver este archivo de conflicto directamente ahí, ¿ verdad? No hay forma de hacer eso. Todos los servidores protegen contra ese tipo de cosas. Porque si tuvieran acceso a tu abrigo, aunque estuvieras, digamos, digamos, almacenando estos en una base de datos y estuvieras hashing todavía tendrías que tener tus tonterías y todo ese tipo de cosas estado guardado en tus archivos. Entonces si consiguen acceso a tu código así, entonces pueden conseguir que puedan entrar en cualquier lugar que quieran. Entonces, ah, tenerlo en texto plano o no hashed aquí no es más, más o menos seguro. Ah, Entonces si intentáramos y Hashem aquí y hiciéramos todo ese tipo de cosas, eso no lo haría más seguro porque tendrían las tonterías, um, o las sales. Y podrían simplemente recrear. Ah, el hash de todos modos, Así que está perfectamente bien hacer esto para este escenario ah en particular aquí, no van a poder obtener acceso a este archivo. Ah, para poder ver estas contraseñas y demás. Correcto, Así que ese es el archivo de conflicto. Voy a seguir adelante y cerrar tipo de cerrar esa fuera porque realmente ya no vamos a estar usando eso. Um, nuestro archivo principal aquí es ese tipo de nuestros manejadores son index dot PHP y dentro de él. Estamos requiriendo este PHP de punto bajo y así en carga. Ya he hablado de esto antes, pero me gusta thes cargar archivos porque puedo poner todas mis declaraciones requeridas en este archivo de carga y luego en cada archivo donde necesito acceso a los que solo puedo hacer esto requieren una vez en carga , y carga todas las cosas que hay aquí en lugar de tener que tomar todas estas cosas y ponerlo en la parte superior de aquí. Entonces eso es esencialmente lo que la carga hace va a cargar nuestro archivo de conflicto. Te acabo de mostrar. Y luego va a cargar un archivo de nuestra carpeta incluye, que en realidad es nuestra clase de inicio de sesión que vamos a estar, ah, usando aquí. Entonces llegaremos a eso en un segundo. Pero eso es lo que hace bajo. Yo sólo estoy tratando de pasar por las que nos podemos deshacernos del bate. Entonces Ah, eso es PHP de punto bajo. Muy bien, entonces ahora podemos especie de sumergirnos en esto y mostrarles el manejador inicial, así que tenemos PHP de punto bajo siendo cargado, que eso nos dé acceso a nuestro archivo de conflicto y a nuestra clase de inicio de sesión. Y entonces básicamente necesitamos hacer dos cosas. Por lo que en primer lugar, necesitamos comprobar si hay algún tipo de datos de inicio de sesión que se haya enviado. Entonces si necesitamos comprobar si ese formulario de inicio de sesión ha sido enviado Así que vamos a comprobar si Publicar datos si Si el método de solicitud es un método de publicación. Básicamente, si se ha enviado un formulario y si es así, entonces lo primero que vamos a hacer es que vamos a pasar los datos de post a este método de verificación de inicio de sesión en nuestra clase de inicio de sesión, y de nuevo vamos a pasar por lo que es decir. Pero necesitamos poder manejar esos formularios de presentación. Entonces eso es esencialmente lo que este bloque es un código aquí mismo. Está manejando los Loggins. Ahora te das cuenta que no estamos redirigiendo ni nada por el estilo, y te mostraré por qué? Porque vamos a estar usando sesiones. Y esa es una de las cosas bonitas de usar sesiones es que no tenemos que hacer un montón de redirecciones y así sucesivamente. Entonces ah, otra vez, estábamos manejando Loggins. Vamos a revisar para ver, básicamente, si necesitamos manejar mucho tiempo, y si es así, vamos a manejarlo y luego vamos a volver aquí y en cada carga de páginas. Vamos a verificar la sesión. Entonces, esencialmente, lo que esto hace es que toma los datos de la sesión. Se comprueba para ver si hay algún dato de sesión establecido relacionado con este usuario que se está registrando. Hombre, hablaremos de qué es todo eso aquí en tan solo un segundo, pero va a comprobar para ver si esos datos existen. Si existe, eso lo va a comprobar contra lo que tenemos en nuestro expediente de conflicto. Asegúrate de que no sea alguna Ah incómoda, o hay algún tipo de ataque o hackeo o algo así. Se va a comprobar contra lo que tenemos en nuestro expediente de conflictos. Y si hay una coincidencia, entonces si el usuario es realmente un usuario en nuestro sistema, entonces va a seguir adelante y permitir que esta sesión continúe. Y luego basado en eso, si verificamos la sesión, entonces vamos a incluir nuestra página principal, que es la que dijo Welcome, John. Haga clic aquí para cerrar sesión esa es nuestra página principal. Y luego si el usuario no está verificado, entonces vamos a incluir nuestro log in dot PHP. Así que home dot PHP dice, Hey, bienvenido Y luego el nombre de usuario y tiene el click toe iniciar sesión aquí. Esto en realidad está incluido dentro del índice Stop PHP. Entonces este índice stop peach PHP es una especie de rapero para todo el sistema, y es realmente un manejador. Ah, y luego, por supuesto, si no están autenticados, entonces mostramos nuestro registro y formulario aquí, y eso es lo que es esto. Saldremos todo esto en tan solo un segundo. Pero lo que quiero que entendáis de esta página en particular es que, um es un está manejando Loggins, pero sea realmente es Es una página de manejador, así que index dot PHP realmente no muestra nada Todo lo que hace. ¿ Es Zalkind como un guardia puntual en basquetbol, está dirigiendo el tráfico. Y así es que está diciendo, Estaba ahí ah, post emisión. OK, haz esto y luego una vez que eso esté hecho. Pero si entonces vamos a revisar y verificar al usuario, los usuarios verificaron que vamos a cargar esta página si el usuario no está verificado. entonces vamos a cargar esta página, ¿de acuerdo? Y así todas las páginas reales en las que realmente vas a ver visualización se van a incluir en este punto índice PHP. Ahora, una cosa de eso, la razón por la que traigo todo esto es porque si querías crear, digamos que querías crear Ah, y decir de página o algo así entonces Y querías crear un todo especie de nueva página aquí mismo. Estamos haciendo casa o inicia sesión. De acuerdo, entonces esta es básicamente la página principal. Digamos que querías crear una página sobre. Usarías este mismo manejador. Usarías todo el mismo código, tal vez deshacerte de los Loggins aquí y si ah, este este log en parte aquí. Pero el manejo de la solicitud aquí porque te mostraré en forma de segunda vía. Podrías hacer eso, pero ah, probablemente podrías deshacerte de esta parte. Pero seguirías queriendo esta parte. Y en ese caso de decir sobre página, se trataría de dot PHP o log y dot PHP. De acuerdo, entonces cada página que crees va a verificar la sesión y luego o bien muestra la página que se supone que deben ver o muestra la página de inicio de sesión. También podría no tener que hacer una inclusión de iniciar sesión aquí. Podrías hacer. Podrías hacer, ah, ah, encabezado redirigir a una página de inicio de sesión. Entonces tienes opciones con todas estas cosas, y hay alrededor de 100 maneras diferentes del dedo del pie para hacer este tipo de cosas. Pero esta es la forma en que he elegido para hacer eso. Entonces solo quiero tratar de darle el panorama más amplio aquí por un segundo de las formas en que puedes cambiar esto y usar esto y demás. Por lo que cada página que creas va de los pies a intentar autenticar el uso de la Tierra usando. Verifica este método de verificación de sesión, y o bien va a mostrar la página de su verificado o va a mostrar, iniciar sesión y o redirigirlos a una página de inicio de sesión. Um, si no se verifican, cada página que creaste está bien, con eso fuera del camino, entonces sabemos que este es el manejador. Sabemos que estamos incluyendo el registro de un PHP. Tenemos home dot PHP Vamos a seguir adelante y ver la lógica real detrás Verificar, iniciar sesión y verificar sesión porque esas son las dos cosas principales aquí. Muy bien, así que este es nuestro login clase clase clase. Tenemos este público. Ah, propiedad para este llamado usuario. Hablaremos de eso aquí en tan solo un segundo. Um y luego tenemos nuestro método constructor en nuestro constructor. Lo que estamos haciendo es un fueron globalizándose. Nuestros usuarios array de nuestro miembro del archivo de conflicto porque fue creado en el ámbito global. Y así ahora estamos dentro de una función. Tenemos que globalizarlo aquí. Y entonces lo que estamos haciendo aquí abajo es básicamente captar eso para que no tengamos que globalizarnos en todas las demás funciones. Lo estamos capturando como esta propiedad. Uh, esta propiedad llamó usuarios, por lo que eso nos permite entonces usar esta propiedad a lo largo del resto de nuestra clase. La otra cosa que estamos haciendo es iniciar nuestra sesión porque en cualquier momento que quieras usar sesiones, tienes que remolcar iniciar la sesión en el punto más alto. ¿ En serio? Y en este caso, esto es bastante alto en nuestro sistema. Mover, Recordar, desde nuestro PHP de punto bajo, incluimos el uh, el archivo de conflicto, y luego incluimos esta clase log in. Por lo que esta sección está empezando básicamente justo en porque porque está en el método constructor. Está empezando básicamente justo después del archivo de conflicto, lo cual está bien. Solo necesita iniciarse antes de que haya alguna salida real. Bueno, no va a haber salida ninguna salida en el archivo de conflicto, así que esto funciona bien. Por lo que conseguimos a nuestros usuarios de set de rieles para que podamos volver a usar esto. Recuerda, estos son nuestros nombres de usuario y contraseñas reales de nuestro archivo de conflicto. Empezamos nuestra sesión. Eso es lo que estamos haciendo en nuestro constructor. Y estamos en postura, cantando una instancia de ello al final de este expediente. Entonces, básicamente, cada página que esto está incluido en vas a instancia, comer una instancia de esta clase y luego vas a iniciar tu sesión, vas a conseguir que tus usuarios se instalen en el carril. Por lo que básicamente estás preparado y listo para trabajar con esto con solo incluirlo en ah, archivo particular. Está bien, así que verifica Iniciar sesión. Entonces lo que hicimos es que pasamos en nuestros datos de post, por lo que nuestros datos de post son solo un nombre de usuario y contraseña. Entonces lo primero que vamos a hacer es que vamos a comprobar y ver si el nombre de usuario y la contraseña están realmente establecidos en esos datos de publicación. Y por eso estamos usando una declaración o aquí. Entonces si éste es, si el nombre de usuario no está establecido o la contraseña no ha dicho ninguno no está establecido, sólo vamos a regresar. Falso. Y nuestra sesión, nuestros datos de sesión no se crearán, y por lo tanto no lo serán. No serán autorizados como iniciados, y no podrán acceder a contenido protegido. Entonces, um, cualquier cosa que falte a esta sesión aquí mismo, esencialmente crearse no les va a permitir el inicio de sesión. Entonces, uh, devolver el falso aparece lo hace para que no puedan iniciar sesión. Lo siguiente que vamos a hacer es que tenemos tipo de que tenemos, ah, tipo de método personalizado aquí y esencialmente lo que hace esto. Es igual que se parece mucho a la función en array en PHP. Excepto que lo que hace es que en realidad va una especie de un nivel más profundo por la forma en que se instalaron nuestros Reyes. Pero esencialmente lo que está haciendo este método es verificar el nombre de usuario que se pasó, y está buceando a través de nuestra matriz de usuarios desde nuestro archivo de conflicto para ver si ese nombre de usuario existe en nuestro archivo de conflicto. Eso es lo que está haciendo este método. Puedes mirar aquí abajo para ver cómo lo hace, pero quiero decir, siempre y cuando tus usuarios o un se vean como el que tengo en el archivo de conflicto este trabajo funcional, solo encuentra. Básicamente, lo que está haciendo es simplemente hacer un lazo a través de la matriz primero y luego ejecutarse en matriz en los elementos dentro de la matriz. Entonces miramos nuestro archivo de conflictos porque es un rayo multidimensional. Tienes esta matriz. Es un looping a través de cada una de estas necesidades. Una de ellas es una matriz. Entonces entonces está revisando esta matriz individual aquí mismo para ver si existe este nombre de usuario. Eso es esencialmente lo que ese método está haciendo aquí mismo. Y luego se va a, si existe, se va a devolver el artículo real. Por lo que va a devolver todo su va a devolver esta matriz aquí mismo, o si coincidió con esta. Va a, uh, devolver este, y por supuesto, si no coincide con ninguno, va a volver. Falso. Entonces así es como nosotros Eso es esencialmente como salimos de en Kato Log in. Tomamos el nombre de usuario que se pasó. Si ese nombre de usuario existe, agarramos ese ah en particular, datos de usuario esa matriz de datos justo aquí y entonces lo que hacemos a continuación es así que hemos devuelto eso de esto. Entonces esta es nuestra matriz de datos. El nombre de usuario existe. Entonces este es nuestro rayo sobre ese usuario en particular. Y así hemos almacenado eso como este usuario ahora, Entonces esto es que un dato de rayo del archivo de conflicto? Y si eso no es falso porque, ah, este método devuelve falso si no se encontró el nombre de usuario. Entonces si no es falso, sabemos que hemos usado ese nombre de usuario existe. Y ahora lo que vamos a hacer es que vamos a revisar la contraseña de nuestros datos de publicación contra la contraseña de ese usuario en particular en nuestro archivo de conflicto. Entonces solo estamos revisando para ver que coincidan las contraseñas, lo cual, por supuesto, tiene sentido. Si las contraseñas coinciden, entonces lo que vamos a hacer es establecer una variable de llamada muy mal de sesión llamada llamada nombre de usuario , igual al nombre de usuario que obtuvimos de nuestro archivo de conflicto. Entonces esto es lo que somos Esto es lo grande que buscamos aquí. Básicamente, si el nombre de usuario qué? ¿ Qué? Todo lo que estamos haciendo hasta este punto es comprobar si el nombre de usuario existe en nuestro archivo de conflicto en nuestra matriz de usuarios. Y si la contraseña que se presentó en el formulario coincide con la contraseña que tenemos en nuestro archivo de conflicto para ese usuario Así que de nuevo, eso es lo que te imaginas que harías si existe. Y si todo eso coincide, entonces estamos configurando esta variable de sesión para que ahora podamos comprobar si esta variable de sesión ha existido. Cuando verificamos nuestra sesión aquí abajo porque verificamos la contraseña ahora manera no quiero que tengan que iniciar sesión en cada carga de página, correcto, porque obviamente sería realmente molesto. Entonces lo que estamos haciendo es que estamos guardando el nombre de usuario es una sesión, y luego solo estamos revisando eso en el futuro. Y entonces, por supuesto, estaban entrenando Verdadero, si queremos correr algo fuera de esto por mostrar mensajes y auto y Por supuesto , si nada de esto si esto falla, en algún punto, sólo vamos a regresar. Falso. Entonces otra vez, verificar. Inicie sesión. Está comprobando si existe el nombre de usuario. Se está comprobando para ver si la contraseña para ese usuario coincide. Y si es así, está configurando una variable de sesión llamada nombre de usuario, igual al nombre de usuario que se presentó, y que está en el archivo de conflicto. Está bien, así que eso es verificar. Entra ahora que si volvemos al índice, es por eso que aquí todo lo que tenemos que hacer es media t verificar. El login se ejecuta eso, y no necesitamos ejecutar ninguna otra cosa, especie de. Si lo demás declaraciones fuera de esto, tampoco. El cuando se ejecuta esta verificación de inicio de sesión, o esa variable de sesión se va a crear o no lo es. Y luego a partir de ahí, bueno, es lo mismo que cada carga de página. Entonces solo verificamos si esa variable de sesión existe o no. Y luego incluimos el archivo de plantilla ah adecuado. base a eso. Por lo que manejar Loggins es todo el punto es solo crear esa variable de sesión. De acuerdo, entonces necesitamos verificar la sesión Entonces lo que hagamos al verificar la sesión volverá a ser bastante sencillo. Entonces lo que hacemos es agarrar esa variable de sesión. El que acabamos de crear aquí Nombre de usuario de sesión. Entonces agarramos eso. Ahora, claro, si tratamos de agarrar esto y no existe que todo el resto de esto va a fallar, Ok, entonces pero agarramos eso Ah, incluso no queremos simplemente comprobar que esta sesión variable iss set nosotros cada carga de página queremos comprobar y asegurarnos de que coincida con un usuario que está en nuestro en nuestro archivo de conflicto porque es posible que alguien simplemente pudiera encontrar una manera de establecer el nombre de usuario de sesión en true y luego ser ableto ahi que la gente puede conseguir algo así como alrededor de eso ahora. Variables de sesión, Es un poco. Es un poco más difícil, pero sólo queremos añadir una capa extra de seguridad aquí. Entonces lo que estamos haciendo es agarrar ese nombre de usuario de sesión y luego lo vamos a ejecutar nuevo a través de esto en un rayo. ¿ Es ese mismo método de aquí abajo y comprueba si ese nombre de usuario que está en esa sesión Ah, variable coincide con lo que hay en nuestro archivo de conflicto? Entonces, cada carga de página estamos tomando esa variable de sesión y la estamos revisando contra lo que hay en nuestro archivo de conflicto para que nos aseguremos de que coincida y que alguien no inicie sesión en su cuenta y luego intente entrar hay formas en que la gente puede tipo de hackeo alrededor de esto si no haces eso. Entonces de nuevo, solo estamos revisando cada carga de página para asegurarnos de que el usuario que es creemos conectado es el que realmente está conectado los existentes son, ah, ah, nuestro archivo de conflicto. Y no vamos. Sólo vamos a mostrar sus datos. Vale, Entonces cuando verifiquemos la sesión y ese nombre de usuario sí existe en nuestro archivo de conflicto, así que si eso no es igual dedo del pie falso justo aquí, entonces vamos a establecer a este usuario la propiedad de usuario igual a ese usuario que acabamos de sacar de nuestro archivo de conflictos. Entonces otra vez, esto va a tener todos esos datos de un raid y luego vamos a regresar. True si esto la sesión es verificada y falsa. Si no ahora, esto es importante aquí mismo, porque esto es lo que nos da acceso a nuestros datos porque hemos establecido esto en la propiedad para esta clase. Si volvemos a Index, se puede ver que estamos configurando aquí mismo, usuario igual a esa propiedad de nuestra clase de inicio de sesión de nuevo. Recuerda, nosotros en postura en una instancia de ello aquí abajo y ponemos eso para iniciar sesión. Entonces, cuando hagas eso, puedes acceder a las propiedades de clase de esta manera aquí mismo. Y lo que hemos hecho es que también lo hemos puesto. ¿ Qué fue de los datos que tenemos en nuestro expediente de conflicto después de verificar la sesión? Por lo que verificamos la sesión. Esencialmente panorama grande sabio. Estamos verificando la sesión, verificando que el nombre de usuario sea válido. Y luego estamos agarrando los datos sobre ese usuario, y lo estamos almacenando en esta variable de usuario justo aquí para que podamos acceder a ella en estas páginas aquí. De acuerdo, entonces a partir de eso, si ahora venimos a home dot PHP y estamos logueados, se puede ver que estamos usando esa variable de usuario aquí mismo para mostrar el nombre. Entonces, ¿eso es qué? Cuando mostramos este nombre aquí mismo. Eso es lo que hace eso es todo eso Agarrando los datos, verificando la sesión y luego haciéndolo eco aquí mismo, OK, Y luego por último pero no menos importante, hemos incluido algunas plantillas cosas aquí. Esto es realmente, realmente simple tipo de material de plantilla, así que no me envolvería demasiado en él. Se puede, literalmente la razón por la que escribí esto de la manera que lo hice con el archivo índice. Y este ser el manejador y el uso incluye todo ese tipo de cosas. El motivo por el que hice eso es para que cuando estás construyendo estas páginas justo aquí la página de inicio de sesión , uh, la página de inicio justo aquí. Puedes construir estos más o menos como, solo archivos de plantilla regulares que quizá me hayas visto hacer tutoriales en antes de que estés acostumbrado a significar que puedes incluir un encabezado. Se puede incluir un cuatro pies de página. Y podrías incluir bootstrap en todo esto. No tienes que preocuparte por el sistema de inicio de sesión real en cuanto a todo eso, a la hora de cómo vas a plantilla esto fuera. Entonces de nuevo, tengo un encabezado y un pie de página. Podemos mirar estos realmente rápido. Yo sólo lo hice realmente básico. Acaba de obtener el tipo doc de las etiquetas de olor H, la etiqueta de cabeza, cosas básicas de la etiqueta de cabeza. Y de nuevo, si has visto alguno de mis videos de template ing todas las cosas de las que hablo ahí en cuanto a cómo ir sobre template ing aplicaría Ah, aquí también. Footer es realmente simple simplemente cerrar esas etiquetas vamos al estilo. Solo un poco de estilo realmente básico aquí. Um, mi recomendación es, si vas a entrar y realmente plantilla esto fuera, simplemente me desharía de todo este CSS y tipo de reescribir el CSS desde cero. Cómo quieres y otra vez Por la forma en que se hace esto, puedes poner lo que quieras en estos archivos de encabezado. No tienes que preocuparte por el inicio de sesión en parte del mismo. Entonces eso es lo que hace que esta parte de ella sea algo importante. Y y práctico es tu no tener que inyectar todo esto en tus archivos de plantilla. Realmente has separado la lógica de inicio de sesión de la lógica de ing de plantillas, y podrías simplemente crear plantillas como quieres y luego tienes acceso a esto en estos archivos. Aquí, estos archivos de plantilla, tienes acceso a esta variable de usuario, que es la principal a la que necesitas acceder para mostrar los datos del usuario. Y podrías, por supuesto, ampliar esos datos de usuario tanto como quieras. Está bien, así que eso es Ah ah ah ah. Simple. Configura aquí para usar esto Si quieres agregar de nuevo. Si quieres agregar usuarios a esto, aquí es donde volverías a hacer esto. Esto es algo que no distribuirías dedo del pie otras personas. Esto sería algo que estás usando para uso interno que Onley Vas a estar viendo el código en tu no darle esto a otras personas. O si se lo estás dando a otras personas, tu Es como un amigo tuyo y tu borrando esta matriz de usuarios y luego nombres de usuario y contraseñas ante ti. Se lo das para que no sepan cuáles son tus nombres de usuario y contraseñas. Está bien. Entonces Ah, eso lo hará para esta lección. Gracias por ver. Hablar contigo la próxima vez 3. Crear un sesión avanzado y con base de datos: Hola ahí. John Morrissey, John Morris online dot com. Esta lección. Te voy a mostrar cómo crear un poco más de un script avanzado de inicio de sesión, y este puede ser el que te interese un poco más. Esto sería algo que podrías redistribuir. Esto está involucrando una base de datos tipo más del avanzado, complejo, moderno tipo log y script que podrías imaginar cuando escuchas a alguien decir iniciar sesión en script. Entonces lo que voy a hacer es ir a través de las cosas que he cambiado aquí porque yo Lo que hice, solo para que sepas, es que tomé esta carpeta para la simple, y simplemente la copié por completo en el todo de todos los archivos sobre esta avanzada . Y entonces sólo tuve que cambiar algunas cosas. Entonces, por ejemplo, quiero mostrarles que hablamos mucho del archivo índice la última vez. Bueno, el archivo de índice aquí en realidad no ha cambiado. Y esa fue una de las razones por las que hacerlo de esta manera es funciona realmente bien es porque solo estamos llamando a métodos. Y Aiken, ya sabes, puedo verificar el inicio de sesión y verificar la sesión, sin embargo, quiero que eso no va a cambiar. Entonces si estoy usando ah, archivo de texto o estoy usando una base de datos, ninguna de estas cosas cambia. Entonces hay un montón de cosas que no tuvimos que cambiar aquí. Entonces voy a pasar por las cosas que eso sí cambió. Ahora el primer tipo de grande que va a haber cambiado es el archivo de conflicto. Y eso es porque ya no estamos poniendo aquí la creación de nuestra matriz de usuarios y almacenando nuestros nombres de usuario y contraseñas en el archivo de conflicto. vamos a estar almacenando en una base de datos. Entonces aquí, esto probablemente sea más como un archivo de conflicto regular que podrías ver. Dónde tiene los detalles de la base de datos aquí. Entonces tenemos el nombre de usuario, lacontraseña, elnombre contraseña, el la base de datos, el host de la base de datos, y luego el conjunto de caracteres. Y luego junto con eso, voy a seguir adelante y cerrar eso porque realmente ya no vamos a estar hablando de eso demasiado . Um, también tengo este archivo de carga, y en él tengo conflicto hasta PHP, y ahora tengo uno nuevo para clase db dot PHP y luego para iniciar sesión dot PHP. Por lo que teníamos confianza de iniciar sesión antes. Ahora hemos agregado este db dot PHP Porque vamos a estar interactuando con la base de datos que clases aquí mismo. Esta es una clase de base de datos basada en PDO que en realidad he escrito. Um, he hecho tutoriales y escrito sobre y demás en otros cursos y demás. Obviamente vas a conseguir esto con el código fuente que obtienes. No voy a estar revisando a fondo esta base de datos, principalmente porque no es realmente necesario para lo que estamos haciendo aquí. Esta clase de base de datos solo funciona. Te mostraré cómo usar la clase de base de datos o cómo la estamos usando a lo largo de nuestro script de inicio de sesión . Pero tengo otros tutoriales completos donde hablo de escribir realmente un script de base de datos. Entonces si te interesa eso, yo iría a revisar esos. Entonces ah, otra vez, class dash db dot PHP Otra vez, voy a cerrar esto porque realmente no vamos a hablar una tonelada al respecto. Como dije confit, la clase DB, la clase log in. Entonces voy a cerrar esto porque realmente ya no vamos a hablar mucho de ello, y así que estamos empezando a bajar a sólo unas pocas cosas. Ah, a la izquierda de aquí. Entonces las dos cosas principales que cambiamos nuestro esta verifican iniciar sesión en este método de verificación de sesión . Y luego agregamos, Ah, método de registro aquí. Por lo que saltamos al frente y solo te mostramos esto muy rápido. Por lo que no he pasado y borrado a todos los usuarios. Yo estaba haciendo algunas pruebas. No hay usuarios en la base de datos ahora mismo, en realidad. Te puede mostrar eso realmente rápido. Vamos a los usuarios. Aquí no hay nada. De acuerdo, entonces obviamente no seríamos capaces de iniciar sesión aquí. Por lo que he agregado este enlace en la página de inicio de sesión que dice Registrarse aquí y que nos lleva a esta registrada en la página PHP. Y así solo sigue adelante e ingresa aquí mis datos, y vamos a hacer la contraseña es Morris y le pegará cemento. Así lo dice contar creado con éxito. Nadie puede entrar aquí y lo hará John y Morris. Y puedes ver que estamos logueados aquí. Y si vamos ahora a la base de datos, vamos a los usuarios. Se puede ver que tenemos un usuario. Ah, usuario llamado John La contraseña. El password está hashed tenemos nuestro nombre. Entonces estamos consiguiendo registros aquí. Ahora, si cierre sesión aquí y voy a registrarme de nuevo y déjame solo intentar usar ese mismo nombre de usuario y registrarme, dice que el nombre de usuario ya hace esto. Entonces nos dieron algunos chequeos básicos Teoh, ver si ya existen nombres de usuario. Tenemos agregando registros a una base de datos siendo capaces de iniciar sesión, luego usando esa información, hash contraseñas, todo ese tipo de cosas. Entonces eso es lo que básicamente te voy a mostrar aquí en esto. ¿ Todo bien? Entonces como dije, las principales cosas que cambiamos nuestro verifican iniciar sesión y verificar sesión. Pero para llegar a ese punto, tenemos que hacer algún tipo de un poco de trabajo de espalda. Entonces lo primero que tenemos que hacer es en realidad por aquí en PHP mi admin, que era crear nuestra base de datos. Entonces si volvemos aquí y nos vamos a simplemente ir a casa y hacemos click en bases de datos ahora, si lo estás haciendo en ah, servidor Web remoto, probablemente tengas que entrar, ver panel. Y hay una manera de hacerlo en el panel C solo puedes, por supuesto, hacer eso. Um, pero también puedes hacerlo desde aquí dentro de PHP en mi admin. Pero se puede ver aquí mismo bajo bases de datos. Dice crear base de datos. Por lo que acabo de teclear iniciar sesión. Yo establecí el cotejo. Teoh ut utf ocho MB cuatro subrayado. ¿ Ha sido? Yo lo creo. Waas Sí, aquí mismo. Esto ahora mismo, A partir del momento que estoy grabando, este es el tipo del genérico recomendado. Um, pero este el tiempo que he estado haciendo esto, este tipo de cosas ha tendido a cambiar. Entonces dependiendo de cuando estés viendo esto, simplemente iría y especie de Google cuál debería ser el tipo de cotejo estándar. Hay excepciones de eso. Te das cuenta que aquí hay diferentes, um, idiomas y cosas. Entonces si vas a estar usando principalmente con un determinado lenguaje que tal vez considerarías usar Ah, algunos de esos. Pero otra vez, yo sólo lo buscaría. Dudo en decirles que usen uno en particular simplemente porque en mi experiencia, he visto este tipo de fluctuar y cambiar y así sucesivamente, así que simplemente lo buscaría. Pero en cualquier caso, sólo tienes que escribir el nombre de la base de datos y golpear create. Y así una vez que tengas la base de datos, entonces es cuando puedes ir a tu archivo de conflicto y puedes poner en el nombre de la base de datos y luego en un servidor remoto, tendrás ah, nombre de usuario y contraseña que te crear cuando haces eso también. Entonces puedes poner esa información aquí una vez que hayas hecho eso, entonces creé necesitas Tienes la base de datos, pero necesito crear la tabla con los campos y así sucesivamente. Y así creé aquí un script de instalación. Entonces, una vez que tengas los detalles de tu base de datos establecidos en tu archivo de conflicto, entonces vamos a incluir el archivo de conflicto en la clase de base de datos. Y podrías simplemente cargar esta página para que solo puedas ir a slash instalar dot PHP y cargar esta página, y va a seguir adelante y crear la tabla para ti. Curso. Si quieres crearlo manualmente, toda la información está aquí. Eso se puede hacer dentro de PHP. Mi administrador. Una vez que entras a una base de datos, um, entonces puedes entrar y crear tablas así que crea tabla aquí mismo pon el nombre de la tabla, el número de columnas que va y te hubiera dejado entrar toda esa información y has consiguió todos los datos aquí. Entonces d el nombre de éste es yo d Es un auto sin firmar int. Por lo que te dice toda la información aquí mismo para cada uno si quieres crearla manualmente. En cualquier caso, Ah, si vamos a una vez, todo está hecho. Si vamos a instalado en PHP por lo que sólo va a crear ajuste no existe. Podemos regresar aquí. Esto es lo que va a regresar. Se va a describir esa tabla que tabla de usuarios que acabamos de crear. Por lo que sabrás cuando vayas a este script de instalación si realmente fue creado o no. Está bien, entonces una vez que lo tengas instalado, si lo haces usando este tipo de remoto o lo que sea, entonces ah, seguiría adelante y me desharía de este script de instalación. No necesariamente va a lastimar nada porque, um, no estamos tomando ningún tipo de entrada del usuario. Y, um, ya sabes, sólo estamos creando la mesa si no existe ya. Pero estás poniendo tu estructura de base de datos por ahí para que todos la vean. Y yo también soy de la opinión. Dar a la gente la menor información posible sobre mis cosas. Entonces, um, otra vez, yo eliminaría esta oferta ahí. Está bien, así que con eso dicho, nos deshacemos de eso. Y ahora tenemos Así que ahora tenemos una base de datos creada. Tenemos nuestras mesas. Ahora todo lo que necesitamos hacer realmente, somos nosotros. En primer lugar, necesitamos permitir que las personas se registren, y luego necesitamos cambiar la forma en que verificamos nuestros Loggins y nuestras sesiones para que coincidan con lo que tenemos en la base de datos. Entonces ve a registrado PHP. Tenemos una forma bastante estándar aquí, yo diría que sí. Estamos poniendo en nuestro archivo de carga aquí. Por lo que tenemos acceso a todo nuestro archivo de conflicto en nuestra clase de base de datos y nuestra clase de inicio de sesión . Y entonces estamos haciendo lo mismo que hacíamos antes y en realidad tenemos Loggins aquí. Esto debe manejarse. Hey, puedo ver. Acabo de copiarlo directamente sobre manejar las inscripciones, registro. Y luego cambiamos esto para registrar el estado. Pero solo estamos llamando al registro de registro de registro de método. Entonces antes de que nos usaran en la página de inicio de sesión que estamos usando. Ah, el pozo, realidad, en la semana de la página índice. Um, justo aquí estábamos usando Verificar Iniciar sesión. Básicamente acabo de copiar esto por aquí y lo cambié para registrarme. Entonces vamos a llamar a este método de registro, que estamos agregando a nuestra clase de inicio de sesión. Llegaremos a eso en un segundo. Ah, tenemos nuestro encabezado incluido. El formulario es bastante estándar. Lo único que es realmente diferente es la acción. En lugar de someterse al índice, detenga PHP porque index dot PHP es lo que maneja son Loggins. Nos vamos a someter esto a sí mismos. Por lo que sólo vamos a dejar la acción en blanco en este presente formal a sí mismo y luego vamos a usar el método de post. Ah, tenemos una especie de ah, mensaje de estado aquí va a llegar a eso en tan solo un segundo. Realmente no tiene sentido hasta que, ya sabes, entender lo que hay de nuevo en la clase. Pero el campo A en lo que va a la forma, los campos son todos prácticamente iguales. Excepto que hemos agregado este campo para nombre completo ya que nos estamos registrando. Y ese es uno de los campos que queremos recolectar. Entonces, ¿dónde está antes en la bitácora? Informarte solo pidiendo el nombre de usuario y contraseña porque eso es todo lo que necesitas para iniciarlos aquí cuando se registren. También estamos pidiendo su nombre completo para que tengamos esos datos. Ahora, por supuesto, cuantos más datos quieras recolectar y poder mostrar en tu tipo de zona de miembros tu anuncio Maneri o ahí estás ingresado en zona. Cuanto más pedirías información aquí, y tienes que cambiar tu por supuesto, tu base de datos para poder almacenar esos datos y así sucesivamente. Pero creo que como que tienes la idea aquí. Esta forma es realmente más o menos la misma que el formulario de registro en. Um Y luego agregamos un enlace aquí abajo al registro y forma aquí. Entonces cuando alguien envía este formulario, lo que va a pasar es que va a activar este si bloquea justo aquí, porque que el método de solicitud habrá sido post y va a pasar los datos de post a este método de registro que agregamos sobre aquí en nuestra ah, inicia sesión en clase. Está bien, así que sigamos adelante y echemos un vistazo a ese método de registro. Entonces lo que estamos haciendo con los métodos de registro fueron agarrando nuestros estaban pasando en nuestros datos de post . Lo primero que vamos a hacer es que vamos a comprobar y ver si el nombre de usuario que se pasó en un formulario de registro ya existe porque realmente no podemos hacer nada si ya existe. Por lo que creé esta función de ayudante o ayudar a su método llamado usuario existe. Y así si bajamos aquí, bueno, bueno, y en eso íbamos a pasar el nombre de usuario que se presentó en nuestros datos de post. Entonces lo que hacemos aquí abajo es simplemente ejecutar una simple consulta a nuestra base de datos, y vamos a seleccionar toda la información de nuestra tabla de usuarios donde el nombre de usuario es igual al nombre de usuario que se pasó. Ahora, este método get results aquí es específico de esta clase de base de datos que escribí, y te permite esto sí usar sentencias preparadas, y así te permite usar sentencias preparadas sin tener que ah, derecho. Todo el encuadernamiento y el ejecutor y la preparación y todas esas cosas tú mismo. La clase clip de base de datos maneja todo eso. Y así básicamente, lo que pasas a la clase basada en fechas es tu consulta con tu positor en ella. Entonces eso es justo aquí y luego la matriz real de datos para encajar. Por lo que esto utilizó este elemento. Nombre de usuario coincide con este titular del lugar, y pasará en estos datos. El uso de declaraciones preparadas lo vinculará correctamente y todo eso. Por lo que realmente práctico hace que esto sea mucho más fácil de ejecutar declaraciones preparadas. Las indagaciones de esta manera ayudan a abstraer que de estar realmente en este este log in class. Entonces lo que esto nos va a devolver es que los resultados de esto van a ser, Ah, va a ser, ah, una matriz con ¿Son todos nuestros datos de usuario? Entonces va a ser que vayamos a los usuarios. Va a ser un array con estos datos, el i d. El nombre de usuario, la contraseña y el nombre. Y así como ya estamos ejecutando esa consulta en lugar de simplemente devolver el tour false, donde realmente vamos a hacer nuestra clase de base de datos, miramos el método get results. Si hay resultados, se va a devolver resultados. Pero si no lo hay, sólo va a volver. Falso. Entonces lo que vamos a comprobar aquí es para asegurarnos de que falso no sea lo que se devolvió de esa consulta Se devolvió un falso. Entonces vamos a saltar este bloque esencialmente, y vamos a devolver falso aquí abajo. No obstante, si no fue falso, entonces vamos a devolver al usuario. Y esto es un poco peculiar de esto porque este es el método get results. En realidad pone los resultados en una matriz indexada. Ahora, en este caso, sólo va a haber un elemento porque sólo hay un usuario cuyo nombre y nombre de usuario va a coincidir con este nombre de usuario. Por lo que solo hay un elemento en la matriz. Por lo que tenemos que devolver el elemento a cero Índice. Entonces es un poco raro, pero en realidad no es un gran trato aquí. Entonces vamos a devolver esos datos de usuario usando este usuario existe bloque. Entonces debido a que ya estamos ejecutando la consulta, nos vamos a ahorrar un poco de rendimiento y simplemente gravar los datos porque de todos modos los vamos a necesitar, Um y entonces eso es lo que estamos haciendo aquí. Entonces otra vez, esto devuelve falso. Si el usuario ah no existe Así que si el usuario no ah, si lo hace, Si el usuario no iguala falso significado que básicamente el si el usuario existe que ya existe, entonces vamos a devolver esta matriz con el estado de cero, lo que significa básicamente es para falso y decir que este nombre de usuario ya existe. Te mostraré dónde vamos a usar estos mensajes aquí en un segundo. Pero en este método en particular, en lugar de simplemente volver a ella falsa porque tenemos múltiples cosas que podrían suceder, el nombre de usuario ya podría existir. El conteo podría crearse con éxito o podría haber algún tipo de aire desconocido. Porque tenemos múltiples cosas y no vamos a saber exactamente cuál. En realidad no podemos simplemente volver a ella falsa Si queremos mostrar mensajes de estado útiles y en particular este de aquí, queremos poder decirles que usas tu nombre ya existe. Por lo que íbamos a regresar y dijimos, acaba de regresar falso. Vamos a devolver una matriz que diga: Oye, Oye, no funcionó y luego da un mensaje que podemos usar ¿verdad? Entonces si existe el nombre de usuario vamos a devolverlo. No obstante, si no existe, entonces continuaremos aquí y vamos a seguir adelante un inserto ese usuario en la base de datos . Entonces estamos usando el método de inserción de la clase de base de datos. Lo vamos a insertar en la mesa del usuario en la que estamos. Inserte el en el campo nombre de usuario. Vamos a insertar los datos de la publicación desde el nombre de usuario. Ahora de nuevo, Recuerde estos métodos de clase de base de datos que clase de base de datos hace las declaraciones preparadas para usted. Entonces no estoy poniendo en un nuevo escapado de los datos preparados por la ONU aquí pueden parecer aquí porque no estoy haciendo nada, um, um, pasando nombres de usuario de post directamente a este método. Pero este método hace todo ese cuarto bien, por lo que pueden poner pasando el nombre de usuario en el campo nombre de usuario. En la contraseña se ejecutaba hash de contraseña. Entonces esta contraseña tiene es los hashes de la función PHP incorporada que tenemos ahora que funciona realmente, muy bien. Te recomiendo encarecidamente que lo uses sobre cualquier cosa que puedas haber visto alguna vez en el pasado a mí o a cualquier otra persona que hacer. Esta es la forma más reciente y más grande de parchear contraseñas hash. Y porque es una función PHP incorporada. PHP a medida que se actualiza y actualiza, va a seguir haciendo todas las cosas necesarias. Toe hash esto correctamente para que no tengamos que preocuparnos por ello. Y así pasamos la contraseña que el usuario ingresó al presentar el formulario de registro , y utilizamos este algoritmo password default. Yo quiero realmente recomendarte, a menos que realmente tengas una buena razón. Razón sólida. ¿ Sabes por qué exactamente? Quiero recomendar que uses password default porque password default va a usar el último y mayor algoritmo PHP de nuevo ya que se upgrades va a usar el mejor algoritmo disponible. Por lo que esto básicamente asegurará que siempre estés usando el mejor algoritmo toe hash, una contraseña en lugar de tener que averiguarlo. Simplemente puedes dejar que se encarguen de eso, así que usa password default que nos va a hash la contraseña, y luego vamos a pasar nuestro nombre de nuestro post de aquí también. Entonces tenemos que nombre de usuario o contraseña o nombre. Todos se van a insertar en nuestra base de datos utilizando nuestra clase de base de datos. Entonces si eso devolvió ese método ah de las clases de base de datos solo voy a regresar, verdadero o falso. O se insertó o no lo fue. Y así si es cierto, entonces vamos a regresar. Ah, mensaje de estado de uno. ¿ Y que el conteo o un estatus de uno? Un mensaje del conteo creado con éxito. Si no lo hizo, saltará esta cuadra y bajará a este regreso y volverá cero. Y hubo algún tipo de aire desconocido ocurrido. Realmente no sabemos cuál es el error. Esto es algo que sea bastante raro. Si probablemente va a ser algo que ver con tu base de datos tengo quiero decir, vas a tener problemas más grandes, supongo, Es lo que yo diría si eso se está activando. Está bien. De modo que ese formulario de registro, entonces, son este método de registro insertará al usuario en la base de datos si son que el nombre de usuario es único, y nos devolverá un mensaje de estado con el que podemos trabajar. Entonces si venimos aquí a registrarnos, debilita el estado de registro se establece a lo que haya método de registro devuelto, por lo que el estado de registro se va a establecer a esa matriz, el con el estado y luego el mensaje dependiendo de si existía el nombre de usuario, si se insertó correctamente, etcétera. Nos va a devolver eso. Entonces por eso, podemos entonces mostrar los mensajes apropiados aquí. Entonces primero, vamos a revisar y ver si el estado de registro está establecido ¿verdad? Porque si si esto era parejo, porque si no había datos de post presentados, no se va a fijar. Por lo que no necesitamos mostrar nada y luego si se puso, estaban haciendo un recorrido por Eri aquí. Y básicamente lo que esto, uh, giro áreas verificando es si el estado es igual a verdadero cuál, si no usas tres iguales aquí si no usas uno estricto es lo mismo es cierto es que mismo es cierto pero lo hará . Se lo hará. Ah, hará Esto evaluará a cierto para ese mensaje de estado de uno. Entonces esto lo hará si ese status se establece dedo del pie uno que esto será cierto. Y en ese caso, la clase establecerá esta variable de clase al éxito. Y si no lo es, si los mensajes de estado no son verdaderos, entonces establecerá esta clase, um, um, esta clase variable de error dedo del pie. Entonces aquí abajo es donde luego hacemos eco de lo que sea que sea esa clase. Entonces esto es para nuestro mensaje. Entonces esto básicamente ojos para que podamos dar el CSS adecuado para un mensaje de aire o para, ah, mensaje de éxito. Entonces eso nos permite ah, cambiar esa clase en base a lo que obtuvimos de nuestra consulta de base de datos. Entonces aquí abajo en lugar de mano dura recubrir un mensaje de estado, simplemente Simplemente Hacemos eco de los mensajes de estado que obtuvimos de nuestro de nuestro script de inicio de sesión . Entonces se irá. Será uno de estos mensajes aquí mismo. Usar el nombre ya existe. Conteo creado con éxito, o ocurre un aire desconocido dependiendo de cuál de esas pasa a ser cierto. ¿ Verdad? Entonces así va así es como manejamos nuestros mensajes aéreos. Y simplemente muy rápido. Si vamos al padrón y es a John John Morris, eso ya debería existir. Sí, así es como conseguimos ese nombre de usuario. Ah, aquí mismo. O eso. Ese mensaje aéreo aquí mismo. De acuerdo, así que eso te muestra la parte de registro de la misma. Ahora, vamos a entrar en cómo verificamos esto. Entonces de nuevo, ahora estamos interactuando con una base de datos aquí, así que necesitamos cambiar, verificar, iniciar sesión y verificar sesión solo un poquito. Bueno, ya tenemos un método aquí abajo que nos permite comprobar si existe un nombre de usuario y si es así, nos devuelve los datos de ese usuario. Bueno, eso es realmente lo que necesitamos para ambos escenarios ya. Por lo que bajo verificar, inicia sesión. Pero se puede ver que seguimos haciendo esto, que hicimos esto antes. Por lo que post uso nombre y post contraseñas. Estamos revisando para ver si ahí dijo si no están configurados, no podemos hacer nada de todos modos. Y entonces estamos corriendo. Este usuario existe método y estamos pasando el nombre de usuario. Entonces el uso que fue enviado por el formulario, y así vamos a simplemente ejecutar eso a través del usuario existe, Y si existe, vamos a recuperar los datos del usuario. Si no, vamos a volver falso para que podamos correr eso mismo si bloquear si es falso y es estricto aquí porque queremos. Asegúrate de que sea estrictamente falso porque eso es lo que devuelve. Si es falso. Ah, si los usuarios son falsos o si no es falso, entonces vamos a seguir adelante y hacer todo lo que hay dentro de esta cuadra. Si no si ah, si el usuario es falso, vamos a devolver falso aquí abajo. De acuerdo, Entonces si el usuario sí existe de lo que vamos a hacer es vamos a verificar la contraseña. Por lo que vamos a usar contraseña Verificar. Por lo que esta es otra función de PHP incorporada para contraseñas. Por lo que tenían hash de contraseña y fuera, y luego también habían agregado verificación de contraseña. Hace que sea realmente, realmente fácil hash contraseñas y chequear para ver Verificar esas contraseñas. No tenemos que hacer ningún levantamiento pesado. Entonces todo lo que tenemos que hacer es tomar la contraseña que fue enviada por el usuario, que va a estar ahí versión de texto plano. Y tomamos la contraseña que tenemos de nuestra base de datos, que es la versión hash. Y los pasamos a contraseña, verificamos y contraseña. Verificar básicamente reproducirá la contraseña de texto plano de pintura exactamente de la misma manera que originalmente fue hash antes de que se almacenara en la base de datos cuando se registraron y comprobará para ver que coinciden. Por lo que este método hará todo eso por nosotros. Ya has visto en las cosas que he hecho el pasado antes de que esto saliera con contraseñas que solías tener que hacer todo eso. Ahora no tienes que hacer nada de eso. Todo lo que tienes que hacer es pasar la contraseña que se ingresó en el formulario y el hash de contraseña que has almacenado en tu base de datos en bastardo. Verifica y lo revisará todo por ti. Si esa contraseña lo verifica, entonces podemos hacer lo que hicimos antes de poder establecer el nombre de usuario de sesión en, ah, el nombre de usuario. Y así es como nosotros Entonces eso es lo que usamos para verificar sesión aquí abajo y volveremos verdad aquí. Entonces así verificamos Iniciar sesión. Y en última instancia, lo que buscamos es que si el inicio de sesión es bueno, vamos a establecer este nombre de usuario de sesión y luego lo usaremos aquí mismo y verificaremos sesión, y lo vamos a hacer de nuevo. Vamos a agarrar el nombre de usuario, vamos a agarrarlo. Ah, el nombre de usuario de sesión y vamos a volver a ejecutar ese nombre de usuario a través de usuario existe para ver si ese usuario existe. Porque recuerden, hicimos esto antes. La única diferencia es que íbamos a nuestro archivo de conflicto en nuestra matriz de usuarios para ver si el usuario existe allí. Aquí. En realidad estamos adquiriendo nuestra base de datos de nuevo. Por lo que cada vez que la página se carga donde se ejecuta este método de verificación de sesión, se va a buscar un nombre de usuario, este bloque de nombre de usuario se establece en la variable de sesiones. Y va a comprobar qué puso su contra lo que hay en la base de datos y ver si ese usuario realmente existe en la base de datos. Entonces si ese usuario existe, vamos a almacenar, recordar, recordar, el usuario existe, este usuario existe. Método devuelve el usuario, todos los datos de usuario si ese usuario existe. Y así vamos a almacenar eso como esta variable de usuario otra vez, vamos a comprobar para ver si o no, um, esto era falso o no. Entonces, si el usuario sí existe, entonces vamos a establecer a este usuario igual al usuario, igual que lo hicimos antes y se volvieron verdaderos. De lo contrario, vamos a devolver falso. Entonces ojalá lo que has visto de todos me encuentres pasando por todo esto. ¿ Esa es la diferencia desde una perspectiva de gran panorama? La diferencia entre hacer esto las comprobaciones de inicio de sesión y tener este registro en verificación entre hacer en un archivo de texto y hacer en la base de datos no es tan diferente. La única diferencia real es que hay que tener lo del registro. Y técnicamente, ni siquiera necesitas tener eso. Podrías entrar e ingresar esa información manualmente, aunque el hashing sería problemático en ese sentido. Pero estos estos métodos aquí mismo no son realmente todos tan diferentes. Todo lo que estás haciendo es simplemente agarrar los datos de la base de datos en lugar de tomarlos del archivo de conflicto y prácticamente ejecutar cheques muy, muy similares y hacer cosas muy, muy similares. Entonces cuando llamamos a esto avanzado, en realidad no todo es mucho más complicado que lo que hacíamos antes. Y desde una perspectiva de gran panorama. Realmente no hemos cambiado mucho, y eso es bastante literal. Si vamos a la página del índice, nada ha cambiado aquí. Entonces está en Lee Cosas internas que realmente cambió, Entonces la idea es la misma. ¿ Desea verificar el registro en el Loggins correcto? Se desea crear la variable de sesión y luego cada carga de página que se desea tener protegida. Comprobarás esa variable de sesión para ver si existe. Si existe en la matriz de sesión, y luego si el nombre de usuario que está en ella realmente existe en su base de datos. Se trata de un usuario verificado. Y luego encima de eso, una vez que tengas esas cosas base en su lugar, podrías hacer todo tipo de cosas. Podrías agarrar más datos para cada usuario para que puedas mostrar eso. Es decir, así es como no tienes sitios de comercio electrónico que no, Todos los diferentes pedidos que has hecho o sabes, inicias sesión remolque. No conozco el sitio PlayStation, y tiene toda esta información sobre tu sitio de Microsoft. Tiene todos los pedidos y cosas que has comprado y toda esta información, todo tipo de está basado en esta cosa tan fundamental de poder verificar Loggins y verificar usuarios. Entonces ah, aprender a hacer esto es algo fundacional que te permitirá entonces expandirte a partir de ahí. Entonces eso es todo. Es decir, que realmente hay, uh realmente hay? Bueno, no, en realidad cubrimos log out en el otro. Por lo que el log out es el mismo aquí. Acabas de destruir la sesión. Um, y eso es más o menos. Entonces eso es bastante sencillo. Otra cosa que debo mencionar, iba a mencionar la última. Y entonces creo que no lo hice. Yo había mencionado cómo estábamos viendo. Cuando estamos escribiendo nuestra contraseña en el bloque de contraseñas, realidad las estamos viendo. Eso se debe a que había puesto este tipo a texto. En realidad quieres establecer esta contraseña tipo dos. Y sí cambié eso aquí en el registro en uno también. Entonces por eso si venimos aquí y tecleamos en este bloque ahora, realidad estás viendo los puntos en lugar de las palabras. Entonces Muy bien, el botín para esta lección lleva la observación. Hablaremos con la próxima vez. 4. Añade una característica de recordar: Hola, John Morse. Aquí. John Morris online dot com. Esta lección nos vamos a meter en agregar una funcionalidad recordarme a tu registro, informa tu largo y guión aquí. Ahora, voy a prefaciar todo esto diciendo que cuando haces esto, estás, de alguna manera creando una puerta trasera en tu sistema. Ahora vamos a pasar por cómo asegura eso. Y probablemente la mayor parte de lo que estamos haciendo aquí es la parte aseguradora del mismo. Porque el do real haciendo la funcionalidad recuérdeme es bastante simple y directo. Es lo que Realmente la parte más compleja está asegurándolo en realidad. Entonces podrías encontrar para tu solicitud que lo de recordarme no es tan grande de un trato. Y así estarías bien, en mi opinión, no agregar esto a tu guión si no quieres tener ese tipo de puerta trasera, OK, OK, tú creo que verás lo que quiero decir con eso cuando nos metamos en esto. Pero a lo que supongo que a lo que quiero llegar es que no tienes que tener esto y luego para algunas aplicaciones, por ejemplo, ah, las aplicaciones bancarias serían un ejemplo realmente obvio. Esto es algo que realmente no querrías dar, porque de nuevo, porque de nuevo, es una especie de ah, una especie de puerta trasera dentro de nuestro sistema. Entonces con ese tipo de salvedad, sigamos adelante y luego echemos un vistazo a cómo harías esto si quieres hacerlo. Entonces lo primero que tenemos que hacer es que creo que la parte probablemente más obvia es que necesitamos agregar un nuevo insumo a nuestra forma. Entonces si miramos nuestro guión aquí, tenemos este nuevo recuérdame tipo de casilla de verificación aquí, y simplemente hacemos entrada. Lo hice en ah, etiqueta de párrafo. Sólo porque tengamos esto recuérdeme texto y para crear un poco más Ah, espacio aquí entre el botón de cemento real y el bloque recordarme solo por estética principalmente. Por lo que tenemos tipo de entrada de casillas de cheques. El nombre es ¿Recordarme? ¿ Quién es ese? El valor dedo del pie uno. Entonces si está comprobado, esencialmente el valor que está en nuestro post array será uno. Y entonces tenemos nuestro texto recordarme justo aquí, así que bastante sencillo en eso. Lo que básicamente hace es otra vez cuando el primero se presentó, habrá un nuevo elemento en la matriz de rayos con la clave de recordarme y el valor set toe one. ¿ En serio? El valor no importa demasiado porque simplemente vamos a Básicamente, Si no lo es, si esto no está comprobado, esto no va a estar en la matriz de todos modos. Ah, esta cosa, este elemento del todo no estará ahí, así que pero así es ah, justo como lo estamos haciendo aquí. Entonces dicho eso, entonces lo que vamos a hacer aquí es que vamos a agregar que alguna funcionalidad a nuestro verifique iniciar sesión porque este es nuestro formulario de inicio de sesión. Estamos haciendo esto en nuestro login, así que tenemos que agregarle un poco. Entonces todo es igual hasta este punto aquí mismo. Entonces esencialmente esta pequeña cuadra de aquí, solo estamos revisando para ver si los ojos del elemento recordarme se ponen esencialmente. Y esta la forma en que funciona esto que básicamente comprobará para ver si es puesta del pie uno. Por lo que está comprobando para ver si esa casilla de verificación ha sido marcada. Y si es así, vamos a llamar a este nuevo método que hemos creado llamado Recordarme y vamos a pasar nuestros datos de usuario que ya tenemos disponibles para nosotros aquí porque vamos a necesitarlo. Y me recuerdo funcionalidad. Y ya lo tenemos aquí, así que no hace falta volver a consultar la base de datos. Entonces vamos a seguir adelante y pasar eso a esto ¿me recuerdas? Método. Correcto. Entonces el básicamente, esto tiene dos partes. Entonces una vez que ah, una vez que hemos comprobado nuestro formulario, entonces esencialmente lo que vamos a hacer es crear un Vamos a crear tokens. vamos a almacenar en la base de datos. Entonces si vamos y miramos la base de datos, tenemos una nueva tabla cancelada tokens y en tokens off. El formato es vendría aquí a la estructura, y tenemos un I d Eso es un int. Tenemos un selector, tenemos un token, tenemos un nombre de usuario, y luego tenemos un tiempo en el que caduca. Y si venimos aquí y miramos nuestro script de instalación, he agregado esto al script de instalación aquí. Para que pudieras. Todo lo que necesitarías hacer es volver a visitar tu script de instalación, y no creará esta base de datos porque esa ya existe, y creará esta nueva para ti ya que ésta no existe. Entonces todo lo que tienes que hacer es simplemente volver a visitar esta página de instalación. Se va a crear de forma automática esta tabla para ti. Pero de nuevo, aquí es donde vamos a almacenar nuestros tokens de autenticación que nos van a permitir recordar a la gente. Esencialmente. Entonces eso es lo que todo esto hace aquí. Entonces, básicamente, vamos a almacenar las fichas, y luego, ah, cuando alguien visite una página, vamos a sacar los datos y vamos a revisarlo contra Ah, galleta. Entonces lo primero que tenemos que hacer aquí es que necesitamos crear thes selectores y los estos autentican a este autenticador. Esencialmente, esto es crear unas claves públicas y privadas, yo diría que generalmente es lo que estamos haciendo aquí. Entonces el selector que vas a ver aquí, vamos a almacenar el selector básicamente de ancho abierto en nuestra cookie, y luego nuestro autenticador, vamos a hacer un poco de codificación y luego estamos usando bytes aleatorios fueron utilizando la codificación aquí. Básicamente, solo estamos generando ah. Ah, números aleatorios aquí para hacer esto. Entonces quiero decir, probablemente no sea exactamente eso pero como que lo miro como una clave pública y privada. Um, Y así lo que hacemos aquí es, una vez que tengamos esos generados, entonces vamos a poner una galleta. El nombre de la galleta será recordarme? Y en realidad, es bueno. Y pon esto aquí abajo. El valor de la cookie. El dato que realmente se está almacenando en la cookie es el colon selector. Y luego basamos 64 código nuevamente el autenticador. O en este caso, esa es la primera vez para el autenticador. Entonces esto crea una cookie que esencialmente tiene estos datos, el selector y este autenticador en ella, dijimos: Ah, Ah, hora aquí. Ah, cuando queríamos expirar, esto es Ah, son como 10 días en el futuro. Ah, este es el camino del dominio. Si está vacío, sólo va a elegir el dominio actual. Y entonces esto es para ah, creo que es solo https. Y luego TLS sólo algo así. Entonces estos son si vamos y miramos a Francisco y miramos a set cookie. Entonces sí, seguro. Y luego http, solo Así que esto es básicamente, um solo lo va a hacer si es una conexión https, así que tendrás que prestar atención a eso. Dependiendo de dónde instales esto, es posible que tengas que establecer que el falso y luego HC TP solo significa que no se puede acceder a él a través de lenguajes como javascript, lo cual es importante. Por lo que solo querías que se pudiera acceder a esto a través de Http de nuevo. Todo esto es parte de la forma en que estamos asegurando esto. De acuerdo, entonces vamos a establecer esta cookie, y luego cuando establezcamos esta cookie, es decir, eso es lo que va a hacer que las Cookies vayan a residir en el navegador del usuario. Entonces cuando dicen cerrar su navegador, esa cookie no se eliminará. Y la próxima vez que abran su porque de nuevo con sesiones, cada vez que croan cerraron su navegador, esencialmente, eso va a terminar la sesión por lo que básicamente se cerrarían automáticamente. Esto nos está permitiendo persistir Loggins a través de ah, sesiones de navegador. Por lo que esa cookie, cuando cierran el navegador seguirá ahí. Entonces cuando abren su navegador de nuevo y vienen a visitar nuestra página, si han hecho clic en eso, ¿me recuerdas? Casilla de verificación. Entonces vamos a esencialmente auto logarlos de nuevo en es realmente lo que es esto. Entonces, ¿qué fueron otra vez? Hemos puesto la galleta. Aquí tenemos nuestro selector. Tenemos nuestro autenticador, y eso es lo que vamos a necesitar para entonces usted para nuestro token aquí. Entonces esta parte de aquí es esencialmente estamos limpiando las fichas viejas. Entonces si tú con este sistema, si inicias sesión y revisas la casilla Recordarme, va a crear un token que va a almacenar en la base de datos. Y luego si en realidad presionas el botón de cerrar sesión, vamos a eliminar la cookie de tu navegador porque tienes, esencialmente, esencialmente, al hacer clic en cerrar sesión y otra vez, podrías cambiar la forma en que el comportamiento de este lo que quieras. Pero en mi opinión, cuando haces clic en cerrar sesión, básicamente estás diciendo que ya no quiero que me recuerden. No quiero estar auto conectado la próxima vez. No puedo volver. De lo contrario quiero decir, ¿por qué hacías clic en cerrar sesión? Entonces vamos a borrar Ah, esa galleta. Bueno, lo que pasa cuando eliminas la cookie es que si vuelven al sitio y hacen clic en ese cuadro me recuerdan, vamos a generar otro token y que el selector y el aire auténtico van a ser diferente. Y así va a crear un nuevo token, básicamente nuevo dentro de la base de datos para ese usuario. Entonces, esencialmente, lo que pasaría es, si no hiciéramos ninguna limpieza, tendrías, ya sabes, ya sabes, múltiples tokens en la base de datos para el mismo usuario. Y luego dependiendo de cuántos usuarios seas, tienes lo harías cada uno de ellos, cada uno que usa podría tener múltiples tokens. 10 15 Con el tiempo , podrían ser 100 200. Para que esa mesa vaya a crecer enorme y sea que vas a tener un montón de estos tokens off por ahí, lo cual simplemente nunca es una buena idea para nada relacionado con la seguridad. Entonces esencialmente, lo que estamos haciendo aquí es cuando ellos cuando iniciamos sesión y esto me recuerdan, casillas marcadas y estamos ejecutando este método recuerdan me aquí. Vamos a asumir que todos los viejos tokens aire básicamente van a ser inválidos? Entonces eso es esencialmente lo que esto hace ahora. El único que solo deben tener alguna vez un token en el en la base de datos en la tabla. Um, porque los estamos borrando ya que crean otros nuevos Pero si por alguna razón hubo un montón de ellos o lo que sea, esto en realidad eliminará cada token de la base de datos que para este usuario en particular que se estaba conectando en este momento. Entonces si tuvieran 10 y ahí borrarían los 10 Así que eso es lo que hace aquí mismo . Entonces a partir de ahí. Lo que queremos hacer es que queremos insertar el nuevo token. Ahora que hemos dicho nuestra galleta, hemos limpiado todas nuestras fichas viejas. Ahora queremos insertar este nuevo token en la base de datos para que podamos usarlo cuando estemos verificando nuestra sesión. Entonces lo hacemos. Ah, inserte en su base de datos, donde incidente y fuera de tokens tenemos selector, nombre de usuario de token y expira quien pasó en nuestro selector. Directo arriba nosotros hash somos autenticador básicamente la razón, como yo lo entiendo y otra vez algunas de estas cosas cuando comienzas a meterte en esta seguridad realmente pesada en criptografía y todo esto se pone una lamida, es un poco confuso, incluso para mí. Pero básicamente la idea aquí es haciendo hash a este autenticador. Aunque alguien tuviera acceso a nuestra base de datos y consiguiera el selector y el autenticador, todavía tendrían que hacer. Ah, trabajo para ser para desecar sh esta ficha. Entonces y es significativo, y suficiente que les tomaría un tiempo poder hacer eso. Entonces es por eso que hachís esto. Y luego lo asociamos con el nombre de usuario. Porque, por supuesto, un token pertenece a Toa un usuario, y luego nos ponemos ahí cuando caduca, si alguna vez queremos usar eso en algún momento. Si bien, realmente, lo que importa es el tiempo que fijamos aquí para que esta cookie caduque. De acuerdo, entonces con eso lo que terminamos solo para recapitular alguien hace clic en la caja recordarme. Ejecutamos este método recordarme. Y lo que hace ese método es que crea una clave básicamente pública y privada. Tipo de eso almacenamos en nuestra cookie, y también almacenamos en nuestra base de datos. De acuerdo, entonces es otra vez, es una cookie en su navegador. Y también hemos empezado en nuestra base de datos en esta fuera de tokens, uh, esta tabla de tokens off. Entonces como tú si te estás cayendo mucho, podrías empezar a ver ahí. Lo que eso permite lo que eso nos va a permitir hacer es cuando regresen al sitio, poder agarrar la cookie y decir: OK, OK, tienes esta cookie. Vamos a revisar la base de datos para ver si ese es un token de autorización válido. Y si lo es, entonces vamos a poder autologarlos y que esa parte de ello es esencialmente lo hacemos aquí mismo. Entonces esto es todo lo nuevo justo aquí Antes de que haríamos nombre de usuario era Ah do nombre de usuario de sesión y todo esto estaba aquí antes. Entonces este este bloque de código, ¿verdad? Esto es lo que hemos agregado. Entonces básicamente lo que estamos haciendo es que estamos revisando para ver si se establece el nombre de usuario de sesión porque nuevo en este, en este escenario, estamos asumiendo que han cerrado su navegador. Y así habrá terminado la sesión. Y así cuando regresen el nombre de usuario de sesión no se establecerá. Entonces vamos a comprobar y ver si dicho eso, si es si está vacío, si está vacío y hay una cookie configurada para esto para nuestro sitio llamado Recuérdeme, que básicamente nos está diciendo que tenemos el escenario que queremos, que es que no tienen una sesión activa y sí tienen la galleta recordarme. Entonces eso significa que vamos a seguir adelante y autoiniciar sesión en ellos. Entonces lo que hacemos es usar esta lista de ascensor y ah, explotamos nuestra cookie. Entonces recuerdo cuando dijimos nuestra galleta Ah, creamos una cuerda con dos puntos en ella así. Y luego tenemos selector por un lado y autenticador por el otro lado. Entonces, esencialmente, cuando lo explotamos, con lo que terminamos es terminar con una matriz. Un elemento es el selector, y un elemento es el autenticador, y luego ejecutamos. Corremos eso a través de la lista, que básicamente toma el elemento que es el selector y establece que igual al selector de variables y al elemento que es el autenticador y establece que igual a la variable autenticador aquí. Entonces terminamos con, um, um, son selector real de nuestro conjunto de cookies para salar el selector valioso y los datos de autentificación reales de nuestro conjunto de cookies a autenticador, que es lo que queremos, básicamente. Muy bien, Entonces lo que vamos a hacer es cuando una consulta, nuestra base de datos, y vamos a seleccionar los datos de la base de datos de tokens off donde el selector es igual. En última instancia, estamos haciendo declaración preparada, pero en última instancia, donde es igual a selectores R. Entonces estamos tomando el selector de nuestra cookie y usando eso para queer base de datos y encontrar ese selector en nuestra tabla de tokens off. Ahora, si no existe, entonces eso significa que algo no está bien. Y así no vamos a decir que no vamos a hacer nada de esto, ¿de acuerdo? No vamos a verificar la sesión. Esencialmente, somos Lo que básicamente pasaría es cuando venimos aquí abajo para ejecutar el hash igual que fallaría . Por lo tanto, no estableceríamos aquí la sesión, y así seguiríamos aquí abajo y finalmente devolvemos falso, por lo que nunca verificaríamos la sesión. De acuerdo, entonces eso es lo que estamos haciendo aquí es ver si ese selector existe. Si ese selector sí existe, entonces vamos a agarrar básicamente todo eso de los datos de token. Entonces eso es otra vez. Va a tener ah, el i d El selector, el token, el nombre de usuario y cuando caduque, y así vamos a agarrar todo eso de los datos de token, y entonces lo que vamos a hacer es vamos a usar este hash igual a ah, función aquí. Entonces, básicamente hash igual va a comprobar el el el el El token que tenemos de nuestra base de datos contra el autenticador que tenemos de nuestra cookie va a ver si se igualan entre sí y se usa hash igual porque de nuevo, esto se complica. Pero hay un problema de tiempo donde, um si no usas hash igual, realidad podría hacer que sea más fácil para alguien probar la fuerza bruta porque cambian la cierta primera parte de, ah, el token. Cambian la letra, en realidad lo hará correr más rápido. Quiero decir, nuevo, se mete realmente, realmente profundamente en esto. Um, no sé que eso es necesariamente 100% necesidad de saber. El necesidad de saber es que necesitas ejecutar el shash igual. Y así pasamos en nuestro token, que de nuevo, este token es donde salvamos a nuestro autenticador. Pash más allá de eso y luego pasamos en nuestro autenticador que en realidad obtuvimos de nuestra cookie. Por lo que nuestro autenticador que obtuvimos de nuestra base de datos lo compara con nuestro autenticador que obtuvimos de nuestra cookie. Y así va a ver si se igualan entre sí si dieron. Entonces, si esto es cierto. Entonces lo que vamos a hacer es recordar, esto asume que el nombre de usuario aquí está vacío. Entonces lo primero y necesitamos nombre de usuario aquí abajo si vamos a hacer una autenticación real . Por lo que necesitamos establecer nombre de usuario igual al nombre de usuario que ahora hemos obtenido de nuestra base de datos a partir de nuestro inicio de sesión aquí. Entonces primero hacemos eso, y luego también necesitamos establecer nuestra variable de sesión. Entonces la galleta básicamente va a ser casi una especie de bypass de una sola vez. Entonces va a que esencialmente va a pasar por alto sólo el cheque estándar para sesión y comprobar el token de este apagado y todas estas cosas. Y luego si eso es todo bueno, entonces se va a fijar la sesión y luego de cada revisión de página a partir de entonces se basará fuera de esta sesión porque esta sesión ahora no estará vacía. Entonces esta cosa este si bloque nunca se activará, vale, Y entonces eso una vez que tengamos nuestro nombre de usuario y nuestras sesiones configuradas, y luego podremos volver a nuestros entrenadores regulares como teníamos antes, que es donde obtenemos el datos del usuario para que podamos mostrar eso en nuestras páginas. Entonces, como puedes ver, por eso veo que esto es una especie de puerta trasera en el sentido de que estás usando una cookie para sortear tu tipo de autenticación de sesión. Ahora lo estás atando de nuevo a ella. Pero eso es un sexual esencialmente lo que esto te permite hacer. Y así es como lo haces. Ah, ¿me recuerdas? Funcionalidad. Ahora una pareja. Yo llamaría adversidades aquí, dependiendo de qué versión de PHP estés ejecutando. Es posible que no tenga esta función bytes aleatorios, y es posible que no tenga la función hash igual aquí. Entonces lo que he hecho es que he incluido una clase llamada Random Compact, que hará que esta función de bytes aleatorios esté disponible. Si no es por disponible por la caída en PHP. Y esto hacks hash es igual a clase, lo que hará que hash igual esté disponible si no está disponible por defecto en PHP, ambos verificaron para ver si esas funciones ya existen antes de hacer realmente algo. Entonces si ya existen, solo van a usar los construidos en PHP. Pero si no existen, entonces van a usar las que han creado en estas clases que básicamente hacen lo mismo. Entonces una cosa que notarás en nuestra carga ah y abriría en nuestro PHP de punto bajo es que ahora estamos incluyendo esta pat de comm aleatorio, y este hash igual aquí también. Entonces si quieres, quizá no quieras incluir esos. Lo que podrías hacer es entrar aquí y podrías comentar esto y luego solo intenta ejecutar un login. Si no consigues que ningún heredero ejecute un inicio de sesión, entonces puedes eliminar de forma segura esta carpeta compacta aleatoria en este hash igual archivo y esto requiere justo aquí. Y porque tienes lo que necesitas para construido para PHP. Entonces, um, si en su función, no existen errores. Entonces si no tienes lo que necesitas, solo intentarhacer un tronco y se va a lanzar al aire y lo vas a saber enseguida. Por lo que de nuevo puedes calmarlo. Esos fuera, a ver si funciona y si lo hace, y deberías estar bien para irte, Está bien. Entonces con todo lo dicho, entonces podemos echar un vistazo a esto. Déjame seguir adelante e iniciar sesión, y voy a golpear el bloque recordarme y golpear enviar y eso me registra y podemos venir aquí a los tokens off y se puede ver que creó un nuevo off token aquí. Ah, para que yo lo use. Y luego si venimos por aquí, entonces vamos a nuestra configuración y toma un segundo llegar hasta aquí. Ah, video a configuración de contenido, cookies y luego ver todas las cookies y abajo. Y, por supuesto, dependiendo de qué navegador utilizado sea diferente. Tengo un tipo del dominio en el que estoy. Y luego si miramos en nuestras cookies aquí, tenemos esto Recuérdame y aquí está nuestro contenido de nuestra cookie aquí. Entonces tenemos la galleta. Ahora bien, si cerrara este navegador y saltara de nuevo a él Ah, y la sesión estaría terminada, pero podría volver a iniciar sesión con sólo la cookie. Ahora ya lo verás aquí. Si hago clic aquí para cerrar sesión, entonces voy aquí para dar clic aquí para volver a iniciar sesión, lo que simplemente me lleva a la página de índice. Ya ves, el informe de registro vuelve a subir. Eso es porque si nos fijamos en nuestro log out ese punto PHP. Esto esencialmente está destruyendo esa galleta. Entonces la forma en que destruyes una galleta es que lo dijiste. Estableces la galleta y lo dijiste para caducar a un tiempo en el pasado. Eso es lo que estamos haciendo aquí. Por eso tenemos menos lo que sea que sea el tiempo menos 3600 segundos. Entonces eso mata a la galleta y eso esencialmente, quiero decir, podrías probablemente podrías pol Odio decir que no puedes Probablemente hackers descubran una manera de falsificar toda esa información y esa cookie y poder cargarla y volver a meterlo. Pero eso sería, quiero decir, muy, muy difícil de hacer. Y básicamente, una vez esto una vez que cierres la sesión ese token se vuelve esencialmente inválido porque la próxima vez que inicies sesión y golpeas, recuérdame. Se va a crear un token completamente nuevo. Se va a sobrescribir la otra, y ya no tienes esa cookie en tu navegador. Entonces básicamente lo hace para que ya no puedas iniciar sesión de esa manera. Tienes que volver a iniciar sesión y tienes que usar el bloque recordarme. Y por supuesto, si no revisas el recuérdeme, Block. No va a hacer nada de eso fuera de las galletas. Simplemente no hace nada de eso porque todo se basa en si esas casillas marcadas o no. Está bien, entonces así es como agregar. Recuérdame, funcionalidad a tu script de inicio de sesión. Gracias por ver. Hablaremos contigo la próxima vez. 5. Crear un reajuste de contraseña seguro: Hola, John Morse. Aquí. John Morris online dot com. Esta lección. Te voy a mostrar cómo agregar una función de restablecimiento de contraseña a tu script de inicio de sesión aquí. Entonces esto va a ser, ah, ah, una función de contraseña de correo electrónico. Y así vamos a tener que actualizar algunas de las cosas que hemos hecho hasta este punto para que tengamos Ah, un correo electrónico. Y la razón por la que es un restablecimiento de contraseña de correo electrónico es básicamente, en la mayoría de los casos, esa va a ser la forma más segura para que lo hagas. Porque para que alguien pueda hackear de nuevo cualquier tipo de esto, este tipo de cosas van a ser una puerta trasera esencialmente en nuestro sistema. Por lo que queremos ser realmente cuidadosos con eso. Por lo que algún ah hacker tendría que no sólo conocer la dirección de correo electrónico y todo eso no sólo hackear nuestro sistema, sino que tendrían que haber hackeado la cuenta de correo del usuario. Y así ah, nuevo, cuando llegas a ese punto, esa persona probablemente tenga más problemas que lo que está pasando con tu sistema. Entonces simplemente es mucho mejor que tener algo en tu sitio donde tal vez entrarían algunas, ah, ah, preguntas de seguridad o cosas de esa naturaleza. Ah, simplemente porque entonces estás como poniendo todo eso. Toda la seguridad sobre ti y tu sistema. Ah, y vas a estar otra vez. Va a ser tu sistema. Ese es un blanco para hackear. En tanto que si lo haces por correo electrónico, va a ser Gmail o Yahoo ¿Alguna de estas cosas? Entonces nuevamente, generalmente, mayoría de las situaciones la forma recomendada de hacerlo es con un restablecimiento de correo electrónico. Entonces te voy a mostrar esto muy rápido. Ya verás que tenemos justo aquí. Tenemos esta contraseña de restablecimiento. Entonces vamos a seguir adelante y hacer clic en esto, y voy a seguir adelante e ingresar mi dirección de correo electrónico. Ahora, si en primer lugar entro algo que no existe, vamos a obtener un error. Ese correo electrónico simplemente no existe en nuestros registros. Entonces ahí está eso. Y luego si sí entro ah, correcta dirección de correo electrónico, entonces vamos a obtener este mensaje de éxito que dice: Consulta tu correo electrónico para el enlace de restablecimiento de contraseñas. Y luego si vengo aquí a mi programa de correo electrónico, arrastraré esto hasta aquí. Aquí se puede ver. Ah, lo que termino es con esto Ah filtrando que Mi correo aquí que puedo usar. Vamos a seguir adelante y hacer clic en eso y eso nos va a llevar a esta página de restablecimiento de contraseñas aquí . Y luego voy a restablecer mi contraseña para que en realidad no recuerdo qué fue esa última . Yo lo dije para seguir adelante y golpear reset, hit, enviar y dice, Contraseña actualizada. Se va exitosamente a golpear. Inicia sesión aquí y teclearemos el nuevo correo aquí. Entonces todos estamos logueados. De acuerdo, entonces eso es lo que nos permite hacer. Ah, y así es bastante sencillo. Ahora si volvemos y me dejas simplemente saltar de nuevo a mi programa de email muy rápido y trato de usar ese mismo reset de nuevo y trato de restablecer mi email, verás que obtengo un código de error. De acuerdo, entonces no fueron capaces de procesar eso. Y eso es lo que queremos. Porque ahora, una vez que se use ese token, no queremos que se vuelva a usar. De acuerdo, te voy a mostrar cómo hicimos todo esto. Entonces esa es la idea básica. Entonces hay algunas cosas que hemos hecho aquí que tendrán que pasar. En primer lugar irá por aquí al script de instalación. Aquí hay un par de cambios, y, ah, algunos de esto viene algo de esto es sólo limpiar y viene de hacer más pruebas en, ah, una serie de servidores diferentes. Así que sólo estaba tratando de asegurarme de que en todo tipo de configuración de servidores diferentes, esto todavía iba a funcionar. Entonces hay algunas cosas de cambio que tuvimos que limpiar aquí uno de esos años. Te darás cuenta de que he agregado aquí en los detalles de la base de datos y he creado una conexión única directamente a través de PDO a la base de datos. Y la razón por la que hice eso es ah, son nuestra clase de base de datos que estamos usando está destinada principalmente para la posterior instalación, así que podría pasar, y podría actualizar la clase de base de datos para eso. Pero realmente no quería meterme en eso con este particular este curso en particular, porque quiero enfocarme en el log en la parte s. Entonces lo que hice aquí es solo que creé ah, otra conexión a la base de datos de centrista separado del que usamos en el resto del guión y Esto está en Lee en la página de instalación, por lo que puedes mirar a través de esto, pero al final del día, realmente no importa. Ah, lo que importa aquí abajo es que hemos creado una nueva tabla llamada Password Reset, y tenemos I d field y email field ah, selector, un campo token y un campo expira. Entonces si miras, es casi idéntico a nuestros tokens off, excepto que estamos usando correo electrónico ahora en lugar de nombre de usuario. Y eso es sólo porque para las sesiones necesitamos que el usuario nombrado en es lo que estamos usando para los restablecimientos de contraseñas. El correo electrónico es, es lo que estamos usando. Entonces esa es la única razón fue para cambiar las cosas cambiadas. También notan que he agregado otro campo aquí llamado correo electrónico a la tabla de usuarios, porque necesitamos ahora recopilar esos datos para que podamos hacer enviar el restablecimiento de contraseña. Entonces lo que puedes hacer es que si solo entras en tu base de datos de mi secuela y vas a los usuarios y vas a las operaciones, puedes venir aquí y borrar la tabla. Basta con borrar la tabla. Asumo que estás en un entorno de pruebas. Obviamente, si vas a haber estado usando esto ya, entonces eso probablemente no sea necesario. Algo que vas a querer hacer. Pero está borrando la tabla, y luego puedes volver a visitar el script de instalación. Visita instalar dot PHP y lo reinstalará con el nuevo campo ahí dentro. O podrías ir si quisieras meterte en mi secuela. Ah, y podrías ir a pensar su estructura y luego podrías agregar un campo y así Ah, vete. Está aquí abajo. Eres capaz del dedo del pie. Agregar más campos aún crear. Ah, Agrega una columna justo aquí Así puedes agregar una nueva columna si querías y ah, en ese campo de correo de ahí dentro, así que sea cual sea la forma en que quieras hacerlo. Pero toda la información en cuanto a cómo se crea está aquí mismo. Es un gráfico ah ah ah var al 55. Está bien, así que eso es una especie de parte de la inicial configurada ahí arriba. Entonces nosotros también en un formulario de inscripción. Hemos agregado un campo para el correo electrónico aquí. Por lo que agregamos un correo electrónico. Ah, campo aquí. En realidad podríamos establecer este tipo dos de correo electrónico. Por lo que el pequeño HTM Island cinco realmente verificará para nosotros. Esa es una cosa que podemos hacer ahí. La clase está configurada en tech still, porque tenemos todo nuestro estilo predeterminado basado en eso, lo es. Técnicamente, sigue siendo una especie de campo de texto es sólo un tipo especial de nombre de campo de texto se establece en correo electrónico . Y luego si vamos a nuestro script de inicio de sesión por aquí y miramos nuestra función de registro aquí , Así que tenemos ah conjunto de campos requeridos, nombre de usuario, contraseña y correo electrónico. Esos van a ser son campos obligatorios. Ah, esto es sólo un chequeo rápido. Entonces, básicamente, lo que haces es recorrer esta matriz requerida y luego verificar si esa clave en los datos de publicación que se enviaron está vacía o no. Si está vacío, si alguien está vacío, el 1er 1 que está vacío, vamos a devolver un mensaje de estado de cero Ah, estado de cero. En un mensaje de favor ingrese su y luego lo que sea. El clave es así nombre de usuario, contraseña, correo electrónico, etcétera. Por lo que eso maneja asegurarnos de que obtenemos son campos obligatorios. Con este fin, también lo estamos haciendo en el formulario. Y si miramos al Registrador PHP. Estamos haciendo requerido aquí, pero siempre quieres. No se quiere confiar en las cosas HTML cinco. No siempre tendrás tu propia espalda y guión haciendo esos cheques también. Está bien, así que eso sí campos obligatorios. Y entonces eso fue que voy allá porque es algo nuevo que agregué aquí, no creo que tuviera eso en antes. Tenemos nuestra comprobación estándar para ver si usaron nombre ya existe. Y luego todo lo que hicimos fue agregar esta línea aquí mismo, que agrega ahora tomará el correo de los Datos de Post y lo pondrá en nuestra base de datos. Y entonces eso es realmente lo único fuera de esto aquí arriba que cambió en cuanto a insertar los datos en nuestra base de datos. Entonces eso es bastante sencillo. Entonces vamos a la página de registro. Entonces ahora cuando alguien se registre, ingresarán su nombre, su correo electrónico, su nombre de usuario y su contraseña y debilitados. Si vamos a iniciar sesión, haga clic aquí para cerrar sesión, entonces iremos a registrarnos aquí. Ahora ingresarán nombre, correo electrónico, dirección, nombre de usuario y contraseña. Está bien, así que eso nos pone a punto ahora. Tenemos nuestro correo electrónico. Ah, que estamos coleccionando. Ahora podemos usar eso para nuestra contraseña. Restablecer. Tenemos nuestro script de instalación. Ah, muchas de estas cosas no han cambiado realmente, Index. Y este tipo de cosas no ha cambiado ninguna, uh, entrar aquí? Lo único que se agregó aquí fue el enlace a la contraseña de restablecimiento. Entonces si volvemos a nuestro registro informamos todo lo que agregamos aquí fue este enlace de restablecimiento de contraseña. Entonces eso es todo lo que ha cambiado ahí. Nuestro archivo de conflictos. Sí agregamos un par de cosas. Entonces nosotros porque estamos enviando un correo electrónico, ahora necesitamos algunas cosas más. Entonces necesitamos la URL del sitio porque vamos a enviar un enlace a quién? Los que enlazan de nuevo a nuestro sitio. Entonces ah, necesitamos necesitamos que tu l en lugar de codificarlo duro a lo largo del guión. Porque si yo hiciera eso, entonces tendrías que entrar y cambiar cada instancia de eso. Acabo de crear Ah constante aquí. Y puedes cambiar esto hacia fuera por tu l Donde tengas esto instalado. Es la carpeta lo que sea. Cualquiera que sea la carpeta que tengas este guión ah subido en Eso es lo que el aceite que volverías a poner aquí porque estamos enviando correos electrónicos. También necesitamos un nombre y una dirección de correo electrónico para que puedas establecer aquí el nombre y la dirección de correo electrónico. Curso. También desea establecer los detalles de su base de datos para la base de datos que cree para esto. Ah, y luego dijimos una fecha por defecto. Zona horaria predeterminada. Acabo de decírselo a la UTC. Puedes, por supuesto, ponerlo lo que quieras. Pero muchos servidores en estos días, si no pones esto, va a arrojar algún tipo de error. Entonces acabo de poner esto ahí eso eso, uh, y esto se podría poner y en cualquier archivo. Entonces algunos servidores, si está configurado en algún archivo, entonces esto No verás ese aire. Pero lo puse en el código solo para que no tengas que lidiar con esos errores. Entonces y está listo para usar UTC, que para nuestro guión es Ah, eso está bien. En realidad las fechas no se mostraban en ningún lugar en este punto, solo las estamos usando para tiempos de caducidad, para nuestro restablecimiento de contraseña y para nuestro auto login. Por lo que nuestra función recuérdeme. Entonces no es algo que tenga alguna importancia en cuanto a exhibición. ¿ Verdad? Entonces así cambiamos nuestro archivo de conflictos. Y luego sí cambiamos un poco nuestra clase de base de datos. Básicamente, el que cambiamos este usuario execs existen Método. Yo sí quiero cubrir esto porque esta en realidad es una buena lección solo por ir a actualizar funciones o métodos. Entonces si recuerdas, antes esto solo aceptaba un parámetro y ese parámetro se establecía por defecto a nombre de usuario Bueno, podemos. Sería bueno poder comprobar el Si el usuario existe por más que solo el usuario que d o el nombre de usuario poder comprobarlo por cualquier cosa. El correo electrónico y en particular, útil en lo que estamos haciendo con nuestro, um, lo que estamos haciendo con nuestro restablecimiento de contraseña porque vamos a estar trabajando con el email . Por lo que sea agradable poder comprobar por el usuario por correo electrónico. Y así es lo que este cambio nos permite hacer. Entonces si recuerdas, antes tenía un parámetro y lo harías ah ah set. Esencialmente, ¿qué? Te cuál era el valor del nombre de usuario para que pasaras el nombre de usuario que querías comprobar para ver si eso existiría. Entonces lo que hice es que me fui. Este primer parámetro sigue necesitando esa misma cosa. Pero luego agregué un segundo campo llamado Wear Field, y lo puse por defecto a nombre de usuario. Lo que eso hace es que significa que cualquiera de los otros lugares donde he usado usuario ya existe, y fue por cómo se construyó a la antigua manera. Todos esos siguen yendo del pie de trabajo, y eso es importante porque no necesariamente lo hacemos. No necesariamente es fácil volver a través de una actualización todas las instancias donde llamamos usuario existe. Y así actualizé la función para que sea retrocompatible con las formas en que ya la hemos usado en nuestro código, porque ese primer parámetro sigue siendo lo mismo. Y luego porque éste es tiene un valor por defecto. Si el parámetro no es que este segundo cebadores no pase, solo va a usar este nombre de usuario aquí mismo. Por lo que por defecto acepta ah nombre de usuario y usa el nombre de usuario a Campo de campo para comprobar si el usuario existe. No obstante, ahora podemos pasar otra cosa que podríamos poner en la dirección de correo electrónico y el campo de desgaste se establezca en correo electrónico. Y así ahora seleccionará a todos los usuarios. Nuestro selecto todo de los usuarios. Donde el email Porque eso es lo que dijimos es donde campo Ah igual y este es nuestro lugar. El referenciamiento del titular son portador del lugar y en última instancia nuestro valor de desgaste Entonces donde el correo electrónico es igual a esta dirección de correo electrónico o si es el predeterminado donde este nombre de usuario igual, donde nombre de usuario es igual a cualquiera que los nombres de usuario pasados, derecha. Entonces esa es una actualización que hicimos a nuestra clase de base de datos ahí, y ahora estamos como que estamos bajando a lo que queda aquí. Por lo que tenemos tres páginas nuevas. Hemos perdido contraseña dot PHP reset dot PHP y reset process dot PHP. Por lo que la página de contraseña perdida es donde realmente estamos cuando alguien quiere solicitar y decir que ha perdido su contraseña y solicita un restablecimiento de correo electrónico. Esta es esa página. Por lo que esta página, en cuanto a lo que es, es en realidad bastante sencilla. Es ah, es una forma. Por lo que tenemos aquí nuestro formulario que se somete a sí mismo, y el único fielded acepta es la dirección de correo electrónico. Por lo que volvemos Aquí vamos a restablecer contraseña. Se trata de un formulario con un campo y es excepto la dirección de correo electrónico. Y luego si eso por miss enviada, va a pasar la información a Los Password. ¿ De acuerdo? Y estoy yendo de la gran visión conceptual de lo que hicimos, y luego nos sumergimos en los detalles. Pero se lo va a pasar a este último método de contraseña perdida pote en nuestra clase de script de inicio de sesión y lo procesaré y te mostraré lo que hacemos con eso en un segundo. La siguiente página es la página de reinicio real. Entonces a esto irán las páginas cuando hagan clic en el enlace del correo electrónico. Y así esta está un poco más involucrada. Lo primero que tenemos que hacer es notar que donde tipo de tenemos nuestro inclusivo aquí arriba , y estamos como que esto es un poco diferente a este tipo de forma, donde tenemos todas nuestras cosas incluye aquí abajo. Toda nuestra lógica PHP aquí arriba, ¿verdad? Es una especie de separado limpiamente. Esta es un poco diferente porque si lo son, si intentan simplemente visitar esta página directamente y no tienen los parámetros de consulta adecuados en la URL. Entonces necesitamos mostrar un mensaje de aire aquí abajo que diga que había un problema y así esto es un poco aburrido mezclado entre sí. Pero lo que estamos haciendo en última instancia es que estamos revisando para ver si esos parámetros de consulta existen. Entonces hay un selector y un validador. Y en el método de contraseña perdida por aquí, qué es donde realmente creamos y enviamos el correo electrónico. Ponemos esos parámetros en la U. R. L. Así que el enlace en el correo electrónico ya tendrá estos parámetros. Entonces, básicamente, esto ayuda a lidiar con cualquiera que esté tratando de ir a eso directamente y y flota por ahí. Necesitan tener los parámetros correctos, ah, ah,de consulta. Entonces revisamos para ver si esos parámetros de carrera existen, y luego revisamos para ver si son Hexi Decimal porque volverás a ver cuando nos mejoren la contraseña perdida, podemos crear, um, creamos básicamente un nonce o creamos un token, y nos convertimos a Hexi Decimal. Y así cuando estamos, cuando alguien hace clic en ese enlace, los parámetros de consulta deben ser ambos Hexi decimal, y así podemos comprobar para ver si son Hexi Decimal. Eso esencialmente nos ayuda a lidiar con cualquier cosa. O alguien podría intentar visitar esta página y establecer selector igual a algún script Java aleatorio o alguna String SQL o algo por el estilo. No se va a validar como Hexi Decimal. Y así, por tanto, estos cheques fallarán. De acuerdo, así que esto es solo un poco de filtrado de entrada justo aquí. Entonces vamos a revisar para ver si son Hexi Decimal. Si no son Hexi Decimal, entonces vamos a tirar este aire. Y si no existen, esto también lanzará al aire, por cierto. Entonces, um, esto comprueba tanto si existe, si es Hexi decimal y si no cumple con esas dos condiciones, entonces vamos a tirar ahí, cumple, cumple con esos dos condiciones. Entonces estamos creando dos campos ocultos aquí mismo donde vamos a poner en el selector y el validador. Eso tendrá que validar el token cuando ah, se presente este formulario. Y luego la contraseña aquí, esa ah, la persona, la nueva contraseña que la persona quiere establecer. Está bien. Por lo que enviarán este formulario y luego el script de procesamiento para esto comprobará y verá si los tokens que pasaron son válidos. De acuerdo, entonces eso es lo que hace esta forma aquí. Y luego pasa esa información para restablecer proceso punto PHP. Ahora la razón, y te das cuenta de la mayoría de las otras formas que se someten a sí mismos. El motivo por el que tengo esto sometiéndome a un script PHP diferente es de dos veces uno para mostrarte cómo hacer eso da de nuevo. Y eso es lo que quieren dejar claro con todas estas cosas. Escribo este código como ayuda de capacitación principalmente, y por eso siempre advierto a la gente sobre usar esto en producción. Eso realmente significa más para que aprendas el dedo del pie de ella que para que lo utilices. Y realmente no lo pago. Necesariamente enfocado demasiado en asegurarnos de que todo sea consistente. Yo podría hacer algo de una manera en una zona y de una manera diferente en otra área para poder mostrarles ambas cosas. Entonces otra vez, esto es entrenamiento primario, pero un para que te pueda mostrar esto. Pero sea si comienzas a tratar de mezclar en las variables get y y revisar por esas y luego tener también chequeando para la variable post se pone un poco tipo de se pone un poco loco Ah, y complicado. Y lo creo innecesariamente. Entonces simplemente lo hacemos me ponen cheques aquí, y luego lo vamos a pasar para restablecer process dot PHP. Y ahí es donde sólo podemos manejar todo nuestro post en nosotros. Por lo que ayuda a separar esas dos cosas hacia fuera. Entonces si venimos aquí para restablecer process dot PHP, podría ver ahora esto mira hacia atrás a más normal. Estamos revisando para ver si es un post Se han enviado los datos de Post, y si es así, vamos a tramitar. Vamos a mandar eso para restablecer contraseña. Si no hay estado de publicación enviado a esta página, no hay razón para que deban estar en esta página de proceso de restablecimiento a menos que hayan venido de este formulario. Entonces si están visitando esto directamente, no hay nada que podamos hacer por ellos. Y por eso no tenemos más bloqueo justo de si post en él fue enviado, y solo lanzamos un error. Por lo que no hay otra razón para que estén en esta página. Entonces ejecutamos este método Ah, reset password se meterá en los detalles de eso. Establecemos el estado en consecuencia aquí y luego aquí abajo, básicamente solo mostramos el estado de los datos. O reciben este mensaje de aire, reciben un mensaje de aire generado por Reset Password, o obtienen un mensaje de éxito generado por reset password. Y sólo mostramos eso aquí abajo. Está bien, así que esa es una especie de visión general del panorama general. Ahora, vamos a entrar son real log in class. Y así de nuevo, hemos perdido la contraseña aquí mismo. Ah, este es uno de nuestros principales métodos y hemos restablecido la contraseña aquí mismo. Entonces esos son dos métodos principales que necesitamos del dedo del pie. Mira a través. Por lo tanto, veamos primero la contraseña de pérdida. Está bien, así que si subimos aquí, hay reset password, y ahora tenemos mucha contraseña perdida. Entonces con contraseña perdida, lo más grande con estos tokens es que necesitamos solo asegurarnos de que sean criptográficos Lee seguros para que no sean realmente, realmente fáciles de hackear Now. Obviamente, si alguien los recibe directamente del correo electrónico de la persona, van a poder usarlos. Pero queremos que lo hagamos. Por lo que es difícil para los hackers simplemente una especie de tratar de ir a un formulario de restablecimiento y tratar adivinarlos. Y así es lo que va a ser la mayor parte de este código. Pero para nuestro método de contraseña perdida, se toma el post Fuera de eso fue enviado de nuevo. Recuerda que Post Data es, ah, va a ser simplemente la dirección de correo electrónico aquí. Eso es todo lo que se está sometiendo. Ah, Y así vamos a tomar esos datos que vamos a verificar para asegurarnos de que ese correo postal fue enviado . Si no, vamos a lanzar al aire. Entonces vamos a revisar nuestra base de datos para ver si ese usuario existe. Y esto es que somos parte de donde estábamos usando usuario existe, y estamos revisando por correo electrónico. Por eso actualizamos ese método basado en sangrado de datos. Si el usuario no existe, entonces vamos a lanzar al aire porque no podemos restablecer una contraseña para un correo electrónico o usuario que no existe. Si lo hace, vamos a seguir aquí. Y lo primero que hacemos es crear nuestro selector. Vamos a usar bytes aleatorios su longitud de ocho, y estamos haciendo sido toe hexi decimal. Entonces estamos creando ah, Hexi decimal. Básicamente, string aquí que vamos a usar es nuestro selector y como es aleatorio cada vez que este este este método se ejecuta, va a ser algo diferente. Ahora lo vamos a almacenar para que así sea como emparejamos todo. Pero eso es importante que no esté teniendo lo mismo que se está creando y la forma en quefuncionan los bytesaleatorios funcionan los bytes , ya sabes, crea algo que es criptográfico Lee seguro para estos fines. Estamos haciendo lo mismo para token, excepto que estamos creando uno que es más largo. Ah, y no estamos haciendo Ah, el hexágono de Binda aquí. Si bien lo haremos aquí en un segundo. Entonces eso crea nuestro que esencialmente crea son dos tokens que necesitamos. Y como, como dije antes, esto es algo así como una clave pública y privada. A pesar de que en nuestro caso, en realidad vas a mandar a ambos. Ah, ambos al usuario. Pero tener estas dos claves diferentes ayuda con los problemas de tiempo y hace que sea más difícil alguien intente entrar y adivinar esto ahora tienen una conjetura, también, y que lo hagan bien y son mucho más, mucho más tiempo que el otro y así sucesivamente. Entonces una vez que tengamos esos dos tokens, entonces necesitamos crear rul que vamos a enviar al usuario para que restablezca sus contraseñas. Entonces estamos usando sprint. La mitad que tenemos son dos posicionadores. This percentage s está aquí nuestras páginas reset dot PHP. Para que otra vez, esa fue esta página de reinicio aquí arriba que acabamos de mirar. Ese es el que realmente van a aterrizar cuando hacen clic en el enlace del correo electrónico. Entonces aquí es donde pasamos. Recuerda dije en nuestro archivo de conflicto, especificamos nuestra u R l para donde está instalado este script. Entonces aquí es donde estamos usando eso. Esto es ABS. Eres l Así que eso va a hacer esto para que cuando actualices ese archivo de conflicto y ese enlace que envió, se envíe al lugar correcto y se vaya a restablecer punto PHP. Entonces vamos a usar la consulta de compilación HT ht TB. Esto es básicamente construir nuestros parámetros de consulta para nosotros. Y así ah, pasamos en nuestro selector que habíamos creado aquí arriba. Pasamos a nuestro validador y lo ejecutamos a través de sido a Hex para crear un decimal hexi aquí y pasando nuestro token. Ahora es importante saber esto porque ambos en última instancia están corriendo por Been to Hex, pero te darás cuenta aquí abajo, hay algo que quiero mostrarte. Cuando insertamos esto en la base de datos estaban usando token, que está aquí arriba que no ha sido para hex run through. Entonces lo que sometemos a la base de datos en realidad no se ejecuta a través de sido a Hex, sino que se ha corrido a través de un hash, así que lo hash. Pero cuando le enviamos un correo electrónico, sí lo ejecutamos. Ha sido al infierno. Entonces básicamente, lo que va al correo electrónico se está enviando a través de sido a hex. Pero lo que está pasando en la base de datos está siendo hash, por lo que el valor que envió a la dirección de correo electrónico y el valor que almacenó en la base de datos son realidad diferentes. De acuerdo, entonces otra vez, eso es importante entender. Entonces no quieres Quieres asegurarte de que tu ah, eres una cosa que yo estaba tentada a hacer fue solo poner sido a Hex aquí dicho token igual a sido a hex bytes aleatorios. Pero eso en realidad no funcionaría por lo que estamos haciendo aquí abajo. Estamos usando token directamente. De acuerdo, así que sólo algo a tener en cuenta que saldrá un poco más tarde aquí. Para que esto esencialmente todo esto. Lo que hace es construir rul con nuestro dominio, un reset dot PHP y luego nuestros parámetros de consulta que necesitamos establecer a selector y nuestro validador. Entonces eso nos da nuestra u r l. Lo siguiente que necesitamos es que necesitamos nuestra caducidad para esto. Entonces hacemos nuevo día, fecha hora. Ahora hacemos un intervalo de días, que le suma una hora, básicamente. Por lo que este token es es estará activo durante una hora. Por supuesto, puedes cambiar eso si quieres, Correcto, Puedes entrar aquí y cambiar la cantidad de horas por las que quieres que esto esté activo, Pero yo no lo pondría para demasiado. Y yo diría que en la mayoría de los casos, si alguien está restableciendo su contraseña, probablemente lo estén haciendo en ese momento y allá. Por lo que probablemente una hora tenga sentido. Está bien, así que una vez que tenemos eso, como que tenemos todo lo que necesitamos. Lo siguiente que vamos a hacer es antes de crear cualquier tokens nuevos iban a dally de cualquiera que pasara a estar ahí ya. Entonces si alguien selecciona restablecer contraseña y entonces sabes que no llegan a ella durante dos horas y luego intentan hacer clic en el enlace. Van a ver un error cuando intenten restablecer sus contraseñas por lo que irán y volverán a restablecerla. Crearán una nueva contraseña de restablecimiento. Y lo que queremos hacer es cuando hagan eso, queremos volver atrás y totalmente los viejos que tengan en la base de datos para asegurarnos de que mantenemos eso limpio. No tenemos todas estas fichas de toking corriendo por ahí, así que borra esas. Y entonces lo que vamos a hacer es que primero vamos a insertar esos datos en nuestra base de datos que eres tabla que creamos. Y así vamos a insertar el correo electrónico. El selector vamos dedo del pie hash el token e insertarlo. Y entonces estamos por las caducas. Apenas estaban insertando la fecha en formato UNIX. Por lo que una marca de tiempo UNIX podrías hacer fecha hora. Pero en este caso particular otra vez, no hay visualización de las fechas. Simplemente siento que es más fácil trabajar con, en mi opinión aquí. Pero sí lo hice con el viejo A con la función de recordar me te mostré cómo hacerlo con hora de fecha regular. Por lo que absolutamente podrías hacer eso también. Pero yo sólo lo hice. Haces la próxima vez sello en este para mostrarte cómo funcionaría eso. Muy bien, Entonces con lo que terminamos entonces cuando hacemos esto es que terminamos con un, ah, un nen tree en nuestra contraseña. Los datos de restablecimiento son tabla de restablecimiento de contraseña que tiene el token y todo para ese usuario en particular por su correo electrónico. Está hashed y como cuando expira. Por lo que tipo de nos configura para poder manejar cuando hacen clic en el enlace y envían nuestros formularios . Lo último entonces, claro, que vamos a hacer es que vamos a enviar el correo electrónico. Entonces vamos a revisar para asegurarnos de que eso fue insertado en la base de datos porque no tiene sentido enviar el correo si realmente no almacenamos en la base de datos porque no podrán usar el enlace en el correo electrónico. Entonces lo primero que vamos a establecer nuestro destinatario que son dos solo establecerá los dos iguales para usar tu correo electrónico el asunto de tu enlace de restablecimiento de contraseña puedes cambiar todo esto si quieres . El mensaje dice que recibimos una contraseña. Restablecer solicitudes vinculadas. Tu contraseña es golpe. Uh, etcétera, etcétera. Aquí tienes tu contraseña Restablecer enlace. Y entonces aquí es donde realmente pasamos en la fuga. Y así lo hacemos. ¡ Ah! Ah, Una etiqueta de borrador. Pasamos la URL aquí, y también estamos solo mostrando el Tú estás todo desnudo aquí. Tal vez podrías cambiar eso aquí. Pero soy fan de mostrar a las chicas crudas sólo porque algunos programas de correo electrónico, el clink podría no ser clicable ellos. Tengo texto basado, y así si muestras el enlace en bruto, solo pueden copiarlo si lo necesitan y pegarlo. Entonces ah, eso es lo que tenemos aquí. Y entonces tenemos esto piensa. Y así todo esto es solo crear este mensaje que se va a enviar en nuestro correo electrónico. Esto se puede editar en consecuencia. Nuestros encabezados tenemos nuestro de esto es donde tenemos admin name y admin email. Tenemos nuestra respuesta para establecer a admin Uh, oops. En realidad tienen un tipo de correo allí. Entonces tenemos ese set en email admin, y luego tenemos nuestro tipo de contenido configurado en HTML básicamente porque estamos usando estas etiquetas de párrafo por lo que lo hará para que aparezca cómo esperábamos aparecer. Y entonces aquí vamos a mandar el email y así vamos a ejecutar bien esa función masculina. Y luego si esa función masculina funciona bien, si se envía, vamos a revisar para ver si se envía. Vamos a destruir la sesión si sucede que tienen una, cualquier sesión en la que estén. Y la razón por la cual es básicamente lo que dice el pelo común. Si están restableciendo su contraseña, eso significa que ahí pat la sesión actual, la contraseña con la que gana su registro está a punto de ser inválida. Entonces vamos a destruir esa sesión y hacer que vuelva a iniciar sesión. Entonces creo que eso es importante porque no quieres tener ningún nous wonky ahí en cuanto que estén ingresados como uno a través de una contraseña. Pero simplemente cambiaron su contraseña que podría ponerse un poco incómodo. Están así que sólo vamos a destruir la sesión y hacerlos volver a iniciar sesión, y luego vamos a devolver un estado de uno o verdadero y nuestro mensaje aquí y luego ya sabes , si alguna de estas cosas falla en el camino, va a fallar a este mensaje de estado de falso con este mensaje aquí. Y no estamos brindando demasiada información aquí porque se trata de un restablecimiento de contraseña. Entonces realmente no queremos proporcionar ah, demasiada información a alguien que podría estar tratando de hackear esto. Por lo que guardamos aquí estos mensajes aéreos un poco vagos. Entonces si volvemos atrás y miramos esto cuando enviamos este formulario para la contraseña de Los Word, se va a tomar la dirección de correo electrónico se va a comprobar si ese usuario existe. Si ese usuario existe, se va a crear un Siri's va a crear una serie de tokens de reset en nuestro dedo de la tabla. Envía eso, y luego se va a enviar un correo electrónico al usuario con el enlace que necesita. Eso tiene los tokens adecuados para que puedan hacer clic y luego ir a la página de restablecimiento y restablecer sus contraseñas. Entonces eso es lo que hace todo esto. Está bien. A continuación, entonces son las contraseñas de reinicio reales. Entonces otra vez, ah , bueno, no tenemos el enlace aquí, pero que esta es la página aquí donde realmente agarramos su selector en el validador del conde. Lo pasamos en campos ocultos y en realidad procesamos el restablecimiento de contraseña. Entonces si miramos eso, estamos obteniendo nuestros datos de post aquí, y estamos de nuevo son campos obligatorios estaban haciendo campos obligatorios. Comprueba para ver si ej hay selector, validador y la contraseña Porque necesitamos los tres. Y si no, estamos pasando en un aire y te darás cuenta aquí que agregué algo que puedes considerar agregar Cuando tienes algo como esto donde realmente sí quieres saber dónde había un aire Si el usuario alguien contacte vía soporte dicho, Hey, no puedo restablecer mi contraseña todos estos aires porque no estamos tratando de proporcionar demasiada información a alguien que podría estar intentando hackear esto. Todos estos aires aire igual que usamos el desarrollador puede querer saber. Bueno, ¿en qué momento falló? Entonces ya ves, yo veracode 123 y cuatro, así que si alguien dice, Hey, no puedo restablecer mi contraseña, se podría decir, Hey, cuál era el código de aire que mostraba cuando tú cuando tuviste un problema. Bueno, fue un WRKO. Dijo código aéreo tres. Y ahora eres desarrollador. No, aquí es donde tuviste algún tipo de problema así que podría ser importante para solucionar problemas. Y se podría hacer eso. A lo mejor sólo para la producción. O podrías dejar eso en vivo para Ah, quiero decir para el desarrollo. O podrías dejarlo en vivo cuando sigas, tu vida ha terminado tu servidor de producción. De acuerdo, entonces si todos los campos se airean ahí y se presentan en el formulario, los vamos a extraer. Entonces nuevamente, extraer convierte las claves de la de esta matriz en variables y establece el valor de esa variable en el valor de esa clave. Entonces básicamente, con lo que terminamos aquí cuando extraemos es que tenemos nuestros datos de post set a selector validador contraseña. Por lo que los selectores establecidos a lo que sea que se valore el selector, los líderes establecen el de un validador es etcétera. Hace que sea un poco más fácil trabajar con nosotros. Pasamos por aquí. De acuerdo, entonces lo siguiente que vamos a hacer una vez que tengamos eso es que vamos a revisar. Vamos a consultar nuestra tabla de restablecimiento de contraseñas y a ver si tenemos eso. Si ese selector que fue pasado existe en nuestra tabla de reinicio, así que puede que no tengamos ninguno aquí, no tenemos ninguno aquí, pero aquí es donde vamos a tener esos datos almacenados. Y así vamos a revisar esto para ver si tenemos uno ahí dentro que coincida con lo que se presentó a través de nuestro formulario, que venía de la página anterior, que venía de ah, que en última instancia vino del correo electrónico. Muy bien, entonces vamos a comprobar y ver si ese selector existe y si no ha caducado. Entonces si el tiempo establecido en el bloque caducar es mayor o igual al tiempo ahora. Por lo que el tiempo devuelve una marca de tiempo UNIX de la hora actual y insertamos en nuestra base de datos una marca de tiempo UNIX de cuándo caduca. Entonces básicamente estamos comparando el tiempo ahora versus el tiempo de caducidad y viendo si ahora, si el tiempo de caducidad sigue siendo mayor que el tiempo de ahora, eso significa que el token sigue siendo válido. Entonces vamos a seleccionar y ver si encontramos uno. Si no lo hacemos. Si los resultados están vacíos. Si no encontramos uno que estamos a cambio un mensaje de estado. Hay un aire procesando tu búsqueda, Eric Ho también, porque esas fichas no son válidas. Ahora no les vamos a decir que esas fichas no son válidas porque no queremos que un hacker sepa que eso eso todo lo que está pasando entre bastidores? Simplemente les vamos a dar este tipo de declaración de manta. Pero sabemos la razón por la que eso habría pasado, porque de su código a todo bien. No obstante, si eso sí existe, entonces vamos a volver a hacerlo. Este get results devuelve Honore con un elemento en él. Por lo que necesitamos agarrar el primer elemento en ese rayo. Ahí es donde realmente existen los datos. Entonces partimos token, igual a resultados, y luego estamos creando nuestro, um básicamente estamos recreando lo que almacenamos en nuestra base de datos. 6. Próximos pasos: Yo soy honesto ya no hay más. Tan online.com, tan poca limpieza para terminar este curso. Si aún no lo has hecho, asegúrate de dirigirte al área de clases. Hay una sección de clase para algunos, algunos pasos por los que caminar para este curso. Así que asegúrate de dirigirte en que está bajo la discusión en la pestaña Proyectos que verás en el curso. Además, si te diriges a mi perfil, asegúrate de darme un seguimiento de mi perfil aquí para que te notifiquen cuando libere nuevos cursos. Y también tengo una especie de curso semanal estilo podcast en curso llamado Let's Talk freelance. Entonces si te gustaría tener algún tipo de acceso a la formación continua en materia de freelancing y negocios en línea y así sucesivamente. Asegúrese de comprobar eso. Hablemos de curso freelance también. Y por último, sí tengo un boletín diario de tips en mi página web en John Morris online.com. Si te diriges por ahí, puedes apuntarte a esa lista de correo. También te pondrán en la mía propia, en mi propia aplicación móvil, o obtendrás acceso a más de 78 horas de contenido gratuito al momento de esta grabación relacionada con freelance y así sucesivamente. Entonces si te interesa eso, BD seguro revisará eso también. De nuevo, ese es John Morris online.com. Está bien. Gracias por tomar la clase. Si lo disfrutaste, te agradezco por Ti. Déjame una reseña y te veremos en el próximo curso.