Sesión fuente PHP
Para entender este significado, considere las siguientes situaciones:
Usted visita un sitio web y luego el sitio web necesita iniciar sesión como miembro. Entonces, después de ingresar su nombre de usuario y contraseña e iniciar sesión correctamente, ¿cómo permite esta información que las páginas siguientes lo sepan?
Sabemos que las páginas web no tienen estado, es decir: si visitas una página web y luego visitas la página web b, esencialmente, las dos páginas web son completamente diferentes sin medios especiales (el. La única conexión puede ser que ambos archivos estén almacenados en el mismo servidor).
La sesión en php es una matriz súper global (php 5 y superior). Desde esta perspectiva, puede pensar en la sesión como un bloque de datos almacenados en la memoria al que pueden acceder todos los scripts PHP.
Consulte los siguientes materiales relacionados:
Acerca de las sesiones
Sabemos que cuando los usuarios visitan un sitio web, a menudo necesitan navegar por muchas páginas web. Para un sitio web creado en PHP, los usuarios deben ejecutar muchos scripts PHP durante la visita. Sin embargo, debido a las características del protocolo HTTP, los usuarios necesitan restablecer la conexión con el servidor web cada vez que ejecutan un script PHP.
Debido a la memoria sin estado, esta conexión no puede obtener el estado de la conexión anterior. De esta forma, el usuario asigna un valor a una variable en un script PHP, pero no puede obtener el valor de esta variable en otro script PHP. Por ejemplo, el usuario ha configurado $user="wind" en el script PHP responsable del inicio de sesión, pero no puede obtener el valor de "wind" llamando a $user en otro script PHP. En otras palabras, las variables globales no se pueden configurar en PHP. Las variables definidas en cada script PHP son variables locales que sólo son válidas dentro de este script.
La solución de sesión es proporcionar una manera de definir una variable global en un script PHP para que esta variable global sea válida para todos los scripts PHP en la misma sesión. Como se mencionó anteriormente, la sesión no es un simple concepto de tiempo, la sesión también incluye usuarios y servidores específicos. Entonces, con más detalle, el alcance de las variables globales definidas en una sesión se refiere a todo PHP al que accede el usuario correspondiente a esta sesión.
Por ejemplo, el usuario A define una variable global $user = "wind" a través de la sesión, y el usuario B define una variable global $user = "Jane" a través de la sesión. Luego, en el script PHP al que accede el usuario A, el valor de $usuario es viento.
Sesión y cookies en PHP
En el desarrollo de PHP, en comparación con las cookies, la sesión es una sesión almacenada en el lado del servidor, que es relativamente segura y no tiene un límite de longitud de almacenamiento como galletas. Este artículo presenta brevemente el uso de sesiones.
Debido a que la sesión se almacena en el servidor en forma de archivo de texto, no hay temor de que el cliente modifique el contenido de la sesión. De hecho, en el archivo de sesión en el lado del servidor, PHP modifica automáticamente los permisos del archivo de sesión, conservando solo los permisos de lectura y escritura del sistema y no se puede modificar a través de ftp, por lo que es mucho más seguro.
Para las cookies, si queremos verificar que el usuario ha iniciado sesión, tenemos que guardar el nombre de usuario y la contraseña (probablemente una cadena cifrada md5) en la cookie y verificarlo cada vez que se solicita la página. Si el nombre de usuario y la contraseña se almacenan en la base de datos, se realizará una consulta a la base de datos cada vez, lo que provocará una carga innecesaria en la base de datos. Porque no podemos hacerlo sólo una vez. ¿Por qué? Porque la información de la cookie del cliente puede verse modificada. Si la variable $admin se almacena para indicar si el usuario ha iniciado sesión, cuando $admin es verdadero, significa que ha iniciado sesión y cuando es falso, significa que no ha iniciado sesión. Después de la primera autenticación, almacene $admin igual a verdadero en la cookie, para que no sea necesaria la autenticación la próxima vez, ¿verdad? equivocado. Si alguien falsificara una variable $admin con un valor verdadero, ¿no obtendría inmediatamente derechos administrativos? Muy inseguro.
La sesión se almacena en el servidor y los usuarios remotos no pueden modificar el contenido del archivo de sesión, por lo que simplemente podemos almacenar una variable $admin para determinar si iniciar sesión y establecer el valor $admin después. la primera verificación es verdadera y luego determina si el valor es verdadero. De lo contrario, cambiar a la interfaz de inicio de sesión puede reducir muchas operaciones de la base de datos. Y puede reducir la inseguridad de pasar la contraseña cada vez que se verifica la cookie (la verificación de la sesión solo necesita pasar una vez, si no se utiliza el protocolo de seguridad SSL). Incluso si la contraseña está cifrada con md5, puede interceptarse fácilmente.
Por supuesto, el uso de la sesión tiene muchas ventajas, como un control sencillo y un almacenamiento definido por el usuario (almacenado en la base de datos). No hay mucho que decir aquí.