¿Cómo funciona este código PHP para verificar las contraseñas?

Asumiré que este código realmente funciona. Esa suposición se basa en la ignorancia de lo que está relacionado con el código de enlace y el procesamiento del mismo a través de “eval”. Como no puedo ver dónde se define “$ db_type”, tengo mis dudas.

SIN EMBARGO

Las variables locales $ form_username y $ form_password se definen a partir de los datos del formulario enviado en las líneas 3 y 4. El nombre de usuario se inserta en una “consulta” de la base de datos con todo el código entre la definición de las variables mencionadas y la línea 22. En la línea 22, entonces definimos los $ user_id, $ group_id, $ db_password_hash asociados y $ salt para el nombre de usuario enviado.

Las líneas 22 a 50 actualizarán la base de datos si $ form_password no produce un $ db_password_hash válido, pero se compara un hash creado con un algoritmo “md5” anterior. En ese caso, se inserta un nuevo valor para $ db_password_hash en la base de datos junto con un $ salt asociado. Más importante aún, la variable $ autorizado se define como verdadera si $ form_password produce y aceptable $ db_password_hash.

Si $ autorizado es falso, se registra un mensaje de error en $ errores y no sucede nada más. Pero si $ autorizado es verdadero, entonces el código entre las líneas 59 y 97 actualizará la base de datos adecuadamente y el control de transferencia se realizará a una nueva “solicitud”.

Al observar el código, lo que observé fue que la función “gethook” se usa mucho en el código dado. Entonces, creo que esa es la función responsable de verificar la contraseña y la entrada del usuario. En segundo lugar, ¿cambia algo en la base de datos? Sí, cambia el hash o salt para el usuario que inicia sesión cada vez. Tercero, ¿qué código es responsable de hacer todo esto? Yo diría que eche un vistazo a la función “gethook”.

Espero haber respondido a su pregunta y darle alguna dirección.

More Interesting

¿Por qué debería aprender Ruby on Rails? ¿Qué tan difícil es para un programador de Java aprender Ruby? ¿Cuáles son las ventajas frente a otros marcos de desarrollo web?

¿Aprender HTML / CSS y JavaScript significará que olvidaré C #?

¿Cómo utilizar los sistemas de cuadrícula en diseño web? ¿Y qué es lo mejor ahora para empezar?

¿Qué significa 'Objeto pasado por referencia' en JS?

¿Cuál es la mejor manera de dividir las responsabilidades entre los equipos front-end y back-end para el desarrollo web?

¿Todos los desarrolladores son realmente buenos en lo que hacen?

¿Cuál es el mejor libro ASP web API 2.0?

¿Qué sistema de administración y autenticación de usuarios debo usar para construir mi sitio web?

¿Cuáles son las características de los sitios web receptivos?

¿Deberíamos agregar la URL de la página principal del blog o la URL del artículo para crear vínculos de retroceso?

¿Es cierto que los desarrolladores de backend tienen mejores habilidades técnicas que los desarrolladores web o móviles frontend?

¿Cuáles son las razones específicas para usar la nueva versión de Hojas de cálculo de Google en lugar de usar la versión anterior de Hojas de cálculo de Google?

¿El uso de FreeCodeCamp solo puede convertirme en un programador de pila completa?

Cómo obtener proyectos en React.js

¿Cuál es mi mejor camino para construir un buen sitio web para mi empresa cuando parece que si lo elimino, termino haciendo la mayor parte del trabajo de todos modos?