Menú
Es gratis
registro
casa  /  Educación/ Descuido. $ _SERVER - Información del servidor y del tiempo de ejecución Información de usuario irreflexivo php

Irreflexión. $ _SERVER - Información del servidor y del tiempo de ejecución Información de usuario irreflexivo php

Irreflexión: aquí es cuando la pasión se convierte en no a la altura de los pensamientos.

Refranes divertidos

Irreflexión como rasgo de personalidad: la tendencia a no pensar en las consecuencias de sus acciones; comportarse de manera insuficiente deliberadamente, estúpidamente, sin sentido; incapacidad para pensar profunda y completamente, para comprender algo correctamente.

En un duro invierno, la familia se quedó sin leña. El padre salió a las afueras, encontró un árbol muerto y lo cortó. En la primavera, vio que los brotes se abrían camino desde un tocón de árbol que había cortado. - Estaba seguro - dijo el padre - de que este árbol está muerto. Hacía tanto frío entonces que la escarcha hizo que sus ramas se partieran, se partieran y cayeran al suelo, como si no quedara ni una gota de vida en sus raíces. Ahora veo que la vida todavía brillaba en este baúl.

Y, volviéndose hacia su hijo, le dijo: - Recuerda esta lección. Nunca corte un árbol en invierno. Nunca tome decisiones sin pensar, en el momento equivocado o cuando se encuentre en un mal estado de ánimo. Esperar. Ten paciencia, los malos tiempos pasarán. Recuerda que la primavera volverá.

La irreflexión es hija de la estupidez y la estupidez. Es la ausencia de cualquier presencia de cordura. La irreflexión habla de falta de atención y falta de respeto a las personas. A quien amamos y respetamos, eso nos importa, nos preocupamos y nos preocupamos, por eso conjeturamos todos los matices, todas las pequeñas cosas que pueden dañarlo o impedirle vivir. A quien no respetamos y valoramos, también mostramos desconsideración.

La irreflexión es aliada de la idiotez, la estupidez, la estupidez y la insensatez.

El chico, jugando a la curiosidad, le pregunta a la guapa azafata: - Chica, ¿qué significa TU-154-2B? - ¿No puedes pensarlo tú mismo? Bueno, TU significa que el avión fue fabricado por el diseñador Tupolev, 150 es el número de asientos en la cabina y 4 es el número de miembros de la tripulación. - ¿Y 2B? - Bueno, ¡puedes ver la irreflexión de tu pasatiempo! Estos somos Marinka y yo.

La imprudencia es cuando una persona vive sin comprender que tendrá que responder por cada acto. No se le ocurre que las consecuencias de sus acciones, como un bumerang, volverán a él de acuerdo con la ley del karma. Tanto lo bueno como lo malo definitivamente volverán de nuevo.

La irreflexión es una forma comprobada de incomodar a su entorno.

V. Shlakhter dice que muy a menudo percibimos la irreflexión como una estupidez. O incluso por la bestialidad. Por ejemplo, el conductor entró en una intersección muy transitada. Bloqueó el tráfico a todos los que se paran en la calle lateral y esperan un semáforo en verde. Pero por esto lo hizo, muy probablemente, no por enojo, y no porque sea un bruto estúpido y mezquino. Simplemente no se molestó en pensar en las consecuencias de su pobre cabecita. Ahora todo el mundo le toca la bocina (¡más a menudo a ella!), Los llama los epítetos menos halagadores del vocabulario informal.

- Deja mucha agua para el gato, no estaré en tres días, - dice mamá. Y mi hijo le trae al gato un paquete de botellas de plástico de un litro y medio. ¡Bebe, gato! El hecho de que el gato no pueda abrir la botella y beber de ella ni siquiera se le ocurre al hijo. Pidieron más agua, trajo más, ¿cuáles son los problemas? No lo hizo por estupidez. Y no por odio al desafortunado gato. ¡De la irreflexión!

La irreflexión viene a la mente mucho antes que la cordura. Siempre va acompañado de juicios apresurados.

El maestro siempre advirtió a sus alumnos contra la irreflexión, es decir, contra los juicios apresurados sobre las personas y más aún contra los consejos irreflexivos. Él dijo esto: - Hasta que sienta en su corazón y mente que ha penetrado la esencia misma del problema y la más mínima duda de que está haciendo lo correcto no lo abandonará, deje que su mejor acción sea la inacción, y la más segura. palabra - silencio ... De lo contrario, su consejo obligará a la gente a repetir el destino de un campesino que sufre de irreflexión.

¿Lo que le sucedió? - preguntaron los estudiantes. - Su casa, de pie sobre un estrado, fue arrastrada por fuertes vientos de todos lados. El campesino, por desconsideración, creyó ingenuamente que el viento aparece porque los altos árboles que rodean la casa se balancean de un lado a otro. Un día se enojó y cortó todos los árboles. Como resultado, la casa, habiendo perdido su última protección, se volvió aún más fría y con más viento.

La irreflexión es el flagelo de las personas que solo piensan en sus propios intereses.

El alférez le pregunta al soldado: - ¿Qué se debe hacer ante el estallido de una explosión nuclear? - Acuéstate con los pies sobre el flash y cúbrete con las manos - responde. - No adecuadamente. Debes estirar los brazos hacia adelante con una ametralladora para que el metal fundido no gotee sobre las botas oficiales.

La irreflexión empuja a una persona a un entorno de incertidumbre. Cuando una persona no puede conjeturar lo que sucederá en unos minutos, significa que vive en un estado de completa incertidumbre.

El esposo regresó de un viaje de negocios. No hay nadie en casa. Decidí esconderme para sorprender a mi esposa. De repente ve a su esposa entrando en el apartamento con un hombre. Entran en el dormitorio. La puerta se cierra, el marido se dirige al ojo de la cerradura. Y ve a su esposa besando a este hombre, él le quita toda la ropa, ambos se apresuran a la cama, él se quita la ropa y arroja sus bragas hacia la puerta de entrada, donde se esconde el esposo, y ellos, colgados de la cama. manejar, cerrar bien la llave para el marido y todo el panorama. Y entonces el marido piensa con fastidio: - Bueno, perdí un día, ¡de nuevo total incertidumbre!

Petr Kovalev

Contenido

$ user_info

Estas son todas las claves definidas para $ user_info en loadUserSettings (). Algunos se explican por sí mismos, seguro.

grupos

formación. Todos los posibles grupos de miembros adjuntos también a un usuario. Las claves no importan. Los valores son los grupos, desinfectados como int, por si acaso. Esto incluye:

  • Grupo primario
  • Grupo de recuento de publicaciones
  • Grupos adicionales. Estos se almacenan en la base de datos como una cadena delimitada por comas.

posiblemente_robot

bool. Es cierto si el agente coincide con una araña conocida si la función está habilitada y, si está deshabilitada, hace una suposición fundamentada.

identificación

int Corresponde al "valor de la base de datos" del miembro (! LANG: id_member".!}

nombre de usuario

nombre

cuerda. Su nombre mostrado.

Email

passwd

idioma

is_guest

is_admin

tema

último acceso

En t. Marca de tiempo de Unix.

ip

$ _SERVER ["REMOTE_ADDR"]

ip2

$ _SERVER ["BAN_CHECK_IP"]

publicaciones

En t. Recuento de entradas.

formato de tiempo

cuerda. Formato personalizado para strtftime ().

desplazamiento de tiempo

En t. Diferencia horaria del usuario con respecto a la hora del foro.

avatar

  • url: cadena
  • nombre de archivo: cadena
  • dir_personalizado: bool
  • id_attach: int

smiley_set

mensajes

En t. Número de PM que tienen.

unread_messages

En t. Número de MP no leídos que tienen.

total_time_logged_in

amigos

Cuerda. La lista de sus amigos delimitada por comas.

ignorar tableros

Cuerda. La lista de tableros que han ignorado delimitada por comas.

ignorantes

Cuerda. La lista de usuarios que han optado por ignorar está delimitada por comas.

  • En SMF 1.1.x solo se ignoran los MP.
  • En SMF 2.0.xy en adelante, esta función se ha mejorado para ocultar también las publicaciones del usuario ignorado.

advertencia

En t. Sus puntos de advertencia.

permisos

query_see_board

La lista de todos los tableros que pueden ver como parte de una declaración SQL preparada.

query_wanna_see_board

La lista de tableros que QUIEREN ver como parte de una declaración SQL preparada.

mod_cache

is_mod

Booleano. Es falso excepto en foros donde el miembro es moderador. Siempre está configurado.

En la segunda lección escribiremos dos clases más y terminaremos la parte interna del guión por completo.

Plan

El objetivo de esta serie de tutoriales es crear una aplicación sencilla que permita a los usuarios registrarse, iniciar sesión, cerrar sesión y cambiar la configuración. La clase que contendrá toda la información sobre el usuario se llamará Usuario y estará definida en el archivo User.class.php. La clase que será responsable de entrar / salir se llamará UserTools (UserTools.class.php).

Un poco sobre los nombres de las clases.

Es una buena práctica nombrar los archivos con las definiciones de clase con el mismo nombre que la clase misma. Esto facilita la determinación del propósito de cada archivo en la carpeta de la clase.

También es común agregar .class o .inc al final del nombre del archivo de clase. Por lo tanto, definimos claramente el propósito del archivo y podemos usar .htaccess para restringir el acceso a estos archivos.

Clase de usuario (User.class.php)

Esta clase definirá a cada usuario. Con crecimiento de esta aplicación la definición de "Usuario" puede cambiar significativamente. Afortunadamente, la programación OOP facilita la adición de atributos de usuario adicionales.

Constructor

En esta clase, usaremos un constructor: esta es una función que se llama automáticamente cuando se crea otra copia de la clase. Esto nos permite publicar automáticamente algunos de los atributos después de crear el proyecto. En esta clase, el constructor tomará un solo argumento: matriz asociativa que contiene una fila de la tabla de usuarios de nuestra base de datos.

require_once "DB.class.php"; class User (public $ id; public $ username; public $ hashedPassword; public $ email;
public $ joinDate;
//Se llama al constructor cuando se crea un nuevo objeto// Toma una matriz asociativa con la fila DB como argumento. function __construct ($ data) ($ this-> id = (isset ($ data ["id"]))? $ data ["id"]: ""; $ this-> username = (isset ($ data [" username "]))? $ data [" username "]:" "; $ this-> hashedPassword = (isset ($ data [" contraseña "]))? $ data [" contraseña "]:" "; $ this- > email = (isset ($ data ["email"]))? $ data ["email"]: ""; $ this-> joinDate = (isset ($ data ["join_date"]))? $ data [" Fecha de Ingreso "]:" ";)
función pública save ($ isNewUser = false) (// crea un nuevo objeto de base de datos. $ db = new DB (); // si el usuario ya está registrado y estamos // actualizando su información. if (! $ isNewUser ) (// establece la matriz de datos $ data = array ("username" => "" $ this-> username "", "contraseña" => "" $ this-> hashedPassword "",
"email" => "" $ this-> email "");
// actualiza la fila en la base de datos $ db-> update ($ data, "users", "id =". $ this-> id); ) else (// si el usuario se registra por primera vez. $ data = array ("username" => "" $ this-> username "", "password" => "" $ this-> hashedPassword "" , "email" => "" $ this-> email "", "join_date" => "" ".date (" Ymd H: i: s ", time ())." ""); $ this-> id = $ db-> insert ($ datos, "usuarios"); $ this-> joinDate = time ();) return true; ))?>

Explicación

La primera parte del código, fuera de la zona de la clase, proporciona la conexión de la clase a la base de datos (ya que hay una función en la clase Usuario que requiere esta clase).

En lugar de las variables de clase "protegidas" (utilizadas en la lección 1), las definimos como "públicas". Esto significa que cualquier código fuera de la clase tiene acceso a estas variables cuando se trabaja con el objeto Usuario.

El constructor toma una matriz donde las columnas de la tabla son claves. Configuramos la variable de clase usando $ this-> variablename. En el ejemplo de esta clase, primero verificamos si existe el valor de una clave específica. Si es así, establecemos la variable de clase en ese valor. De lo contrario, es una cadena vacía. El código utiliza una forma abreviada de notación para la rotación if:

$ valor = (3 == 4)? "A": "B";

En este ejemplo, verificamos si 3 es igual a cuatro. Si es así, entonces $ valor = "A", no - $ valor = "B". En nuestro ejemplo, el resultado es $ valor = "B".

Guardamos información sobre los usuarios en la base de datos

La función de guardar se utiliza para realizar cambios en la tabla de la base de datos con los valores actuales en el objeto Usuario. Esta función usa la clase DB que creamos en el primer tutorial. Usando variables de clase, se establece la matriz $ data. Si los datos del usuario se guardan por primera vez, $ isNewUser se pasa como $ true (el valor predeterminado es falso). Si $ isNewUser = $ true, se llama a la función insert () de la clase DB. De lo contrario, se llama a la función update (). En ambos casos, la información del objeto de usuario se guardará en la base de datos.

Clase UserTools.class.php

Esta clase contendrá funciones que son relevantes para los usuarios: login (), logout (), checkUsernameExists () y get (). Pero con la expansión de esta aplicación, puedes agregar muchas más.

//UserTools.class.php require_once "User.class.php"; require_once "DB.class.php";
clase UserTools (
// Inicie la sesión del usuario. Primero comprueba si // el nombre de usuario y la contraseña coinciden con una fila de la base de datos. // Si tiene éxito, establezca las variables de sesión // y almacene el objeto de usuario dentro.
inicio de sesión de función pública ($ nombre de usuario, $ contraseña)
{
$ hashedPassword = md5 ($ contraseña); $ resultado = mysql_query ("SELECCIONAR * DE usuarios DONDE nombre de usuario =" $ nombre de usuario "Y contraseña =" $ hashedPassword ""); if (mysql_num_rows ($ resultado) == 1) ($ _SESSION ["usuario"] = serializar (nuevo usuario (mysql_fetch_assoc ($ resultado))); $ _SESSION ["login_time"] = tiempo (); $ _SESSION ["log_in "] = 1; devuelve verdadero;) else (devuelve falso;))
// Cerrar la sesión del usuario. Destruye las variables de sesión. función pública logout () (unset ($ _ SESSION ["usuario"]); unset ($ _ SESSION ["login_time"]); unset ($ _ SESSION ["log_in"]); session_destroy ();) // Verificar para ver si existe un nombre de usuario. // Esto se llama durante el registro para asegurarse de que todos los nombres de usuario sean únicos. función pública checkUsernameExists ($ username) ($ result = mysql_query ("seleccionar id de usuarios donde username =" $ username ""); if (mysql_num_rows ($ result) == 0) (return false;) else (return true;)
}
// obtener un usuario // devuelve un objeto Usuario. Toma la identificación de los usuarios como una función pública de entrada get ($ id) ($ db = new DB (); $ result = $ db-> select ("users", "id = $ id"); return new User ($ result );))
?>

Función de inicio de sesión ()

La función login () se explica por sí misma. Toma los argumentos $ username y $ password del usuario y comprueba si coinciden. Si todo coincide, crea un objeto Usuario con toda la información y lo almacena en la sesión. Tenga en cuenta que solo estamos usando la función serialize () de PHP. Crea una versión guardada del objeto que puede deshacer fácilmente usando unserialize (). Además, se guardará la hora de inicio de sesión. Esto se puede utilizar en el futuro para proporcionar a los usuarios información sobre la duración de su estancia en el sitio.

También puede notar que estamos configurando $ _SESSION ["log_in"] en 1. Esto nos permite verificar fácilmente si el usuario ha iniciado sesión en cada página. Basta con marcar solo esta variable.

Función Logout ()

También una función simple. La función unset () de PHP borra las variables en la memoria, mientras que session_destroy () borrará la sesión.

Función CheckUsernameExists ()

Cualquiera que sepa inglés comprenderá fácilmente la función. Simplemente pregunta a la base de datos si se utiliza un inicio de sesión similar o no.

Función get ()

Esta función toma una identificación de usuario única y realiza una consulta a la base de datos usando la clase DB, es decir, la función select (). Tomará una matriz asociativa con una cantidad de información de usuario y creará un nuevo objeto Usuario, pasando la matriz al constructor.

¿Dónde puedes usarlo? Por ejemplo, si crea una página que debe mostrar perfiles de usuario específicos, deberá obtener esta información de forma dinámica. Así es como puede hacerlo: (digamos url http://www.website.com/profile.php?userID=3)

// nota: primero deberá abrir una conexión a la base de datos. // Consulte la Parte 1 para obtener más información sobre cómo hacerlo. // También tendrá que asegurarse de haber incluido los archivos de clase.
$ herramientas = new UserTools (); $ usuario = $ herramientas-> obtener ($ _ REQUEST ["ID de usuario"]); echo "Nombre de usuario:". $ usuario-> nombre de usuario. ""; echo "Se unió el:". $ usuario-> joinDate. "";

¡Fácil! ¿Verdad?

Toque final del lado del servidor: global.inc.php

Se requiere global.inc.php para todas las páginas del sitio. ¿Por qué? De esta forma colocaremos todas las operaciones habituales que necesitemos en la página. Por ejemplo, comenzaremos session_start (). La conexión DB también se abrirá.

require_once "classes / UserTools.class.php";
require_once "classes / DB.class.php";
// conectarse a la base de datos $ db = new DB (); $ db-> conectar ();
// inicializar el objeto UserTools $ userTools = new UserTools (); // iniciar la sesión
session_start ();
// actualiza las variables de sesión si está conectado if (isset ($ _ SESSION ["log_in"])) ($ user = unserialize ($ _ SESSION ["user"]); $ _SESSION ["user"] = serialize ($ userTools -> obtener ($ usuario-> id));)?>

¿Qué está haciendo?

Aquí están sucediendo varias cosas. En primer lugar, abrimos una conexión a la base.

Después de conectar, iniciamos la función session_start (). La función crea una sesión o continúa la actual si el usuario ya inició sesión. Dado que nuestra aplicación está diseñada para que los usuarios inicien o cierren sesión, esta función es necesaria en todas las páginas.

A continuación, comprobamos si el usuario está conectado. Si es así, actualizaremos $ _SESSION ["usuario"] para mostrar la información de usuario más reciente. Por ejemplo, si un usuario cambia su correo electrónico, el antiguo se almacenará en la sesión. Pero esto no sucederá con la actualización automática.

¡Con esto concluye la segunda parte! Espere una lección final sobre este tema mañana.

¡Todo lo mejor!

$ HTTP_SERVER_VARS [eliminado]

(PHP 4> = 4.1.0, PHP 5, PHP 7)

$ _SERVER - $ HTTP_SERVER_VARS [eliminado]Información del servidor y del tiempo de ejecución

Descripción

La variable $ _SERVER es una matriz que contiene información como encabezados, rutas y ubicaciones de scripts. Las entradas de esta matriz son generadas por el servidor web. No hay garantía de que todos los servidores web proporcionen alguno de estos; el servidor puede omitir algunos o proporcionar otros que no se enumeran aquí. Sin embargo, muchas de estas variables están presentes en la especificación »CGI / 1.1, por lo que puede esperar que se implementen en un servidor web en particular.

La variable $ HTTP_SERVER_VARS contiene la misma información inicial, pero no es superglobal. (Tenga en cuenta que $ HTTP_SERVER_VARS y $ _SERVER son variables diferentes, por lo que PHP las maneja en consecuencia). También tenga en cuenta que las "matrices largas" se eliminaron en PHP 5.4.0, por lo que $ HTTP_SERVER_VARS ya no existe.

Índices

Puede o no encontrar cualquiera de los siguientes elementos en la matriz $ _SERVER. Tenga en cuenta que pocos elementos, si es que hay alguno, estarán disponibles (o serán realmente significativos) cuando PHP se ejecute en la línea de comandos.

"PHP_SELF" El nombre del archivo de secuencia de comandos que se está ejecutando actualmente, en relación con la raíz del documento. Por ejemplo, $ _SERVER ["PHP_SELF"] en el script en http://example.com/foo/bar.php será /foo/bar.php. La constante __FILE__ contiene la ruta completa y el nombre de archivo del archivo actual (es decir, conectado). Si PHP se está ejecutando en la línea de comandos, esta variable contiene el nombre del script desde PHP 4.3.0. Anteriormente no estaba disponible."argv" Una matriz de argumentos pasados ​​al script. Cuando el script se ejecuta en la línea de comando, le da acceso similar a C a los parámetros de la línea de comando. Cuando se llama a través del método GET, esta matriz contendrá la cadena de consulta."argc" Contiene el número de parámetros pasados ​​al script (si se lanza en la línea de comando)."GATEWAY_INTERFACE" Contiene la versión de la especificación CGI utilizada por el servidor; p.ej" CGI / 1.1". "SERVER_ADDR" La dirección IP del servidor en el que se ejecuta el script actual."NOMBRE DEL SERVIDOR" El nombre de host en el que se ejecuta la secuencia de comandos actual. Si el script se ejecuta en un host virtual, este contendrá el nombre definido para ese host virtual."SERVER_SOFTWARE" La cadena de identificación del servidor especificada en los encabezados cuando se responde la solicitud."SERVER_PROTOCOL" El nombre y versión del protocolo de información a través del cual se solicitó la página; p.ej " HTTP / 1.0"; "REQUEST_METHOD" Qué método se utilizó para solicitar la página; p.ej " OBTENER", "CABEZA", "CORREO", "PONER".

Comentario:

El script PHP finaliza después de enviar encabezados (es decir, después de realizar cualquier salida sin almacenar en búfer la salida), si la solicitud fue realizada por el método CABEZA.

"TIEMPO REQUERIDO" Marca de tiempo del inicio de la solicitud. Disponible desde PHP 5.1.0."REQUEST_TIME_FLOAT" Marca de tiempo del inicio de la solicitud, con precisión de microsegundos. Disponible desde PHP 5.4.0."QUERY_STRING" La cadena de consulta, si la hay, con la que se recuperó la página."RAIZ DEL DOCUMENTO" El directorio raíz del documento en el que se ejecuta el script actual es exactamente el especificado en el archivo de configuración del servidor."HTTP_ACCEPT" Contenido del encabezado Aceptar: de la solicitud actual, si corresponde."HTTP_ACCEPT_CHARSET" Contenido del encabezado Aceptar-Juego de caracteres: de la solicitud actual, si corresponde. Por ejemplo: " iso-8859-1, *, utf-8". "HTTP_ACCEPT_ENCODING" Contenido del encabezado Aceptar codificación: gzip". "HTTP_ACCEPT_LANGUAGE" Contenido del encabezado Aceptar-Idioma: de la solicitud actual, si corresponde. Por ejemplo: " ru". "HTTP_CONNECTION" Contenido del encabezado Conexión: de la solicitud actual, si corresponde. Por ejemplo: " Mantener viva". "HTTP_HOST" Contenido del encabezado Anfitrión: de la solicitud actual, si corresponde."HTTP_REFERER" La dirección de la página (si la hubiera) que llevó al navegador del usuario a esta página. Este encabezado lo establece el navegador web del usuario. No todos los navegadores lo instalan y algunos le permiten modificar el contenido del encabezado HTTP_REFERER como una opción. En resumen, realmente no se puede confiar en él."HTTP_USER_AGENT" Contenido del encabezado Agente de usuario: de la solicitud actual, si corresponde. Esta cadena contiene la designación del navegador con el que el usuario solicitó esta página. Un ejemplo típico es la línea: Mozilla / 4.5 (X11; U; Linux 2.2.9 i586)... Entre otras cosas, puede utilizar este valor con la función get_browser () para adaptar la salida de su página a las capacidades del navegador del usuario"HTTPS" No está vacío si la solicitud se realizó a través del protocolo HTTPS.

Comentario: Tenga en cuenta que al usar ISAPI con IIS, el valor será apagado si la solicitud no se realizó a través del protocolo HTTPS.

"REMOTE_ADDR" La dirección IP desde la que el usuario está viendo la página actual."SERVIDOR REMOTO" El host remoto desde el que el usuario está viendo la página actual. Una búsqueda de DNS inversa se basa en el valor de la variable REMOTE_ADDR.

Comentario: Su servidor web debe estar configurado para crear esta variable. Por ejemplo, en Apache necesitas la directiva Nombre de hostBuscas activadas en el archivo httpd.conf para crear esta variable. ver también gethostbyaddr ().

"PUERTO REMOTO" El puerto de la máquina remota que se utiliza para comunicarse con el servidor web."REMOTE_USER" Usuario autenticado."REDIRECT_REMOTE_USER" Usuario autenticado si la solicitud se redirigió desde dentro."SCRIPT_FILENAME"

La ruta absoluta al script que se está ejecutando actualmente.

Comentario:

Si el script se ejecuta en la línea de comando (CLI) usando una ruta relativa como file.php o ../ file.php, la variable $ _SERVER ["SCRIPT_FILENAME"] contendrá la ruta relativa especificada por el usuario.

"SERVER_ADMIN" Esta variable obtiene su valor (para Apache) de la directiva en el archivo de configuración del servidor. Si el script se ejecuta en un host virtual, este será el valor definido para ese host virtual."PUERTO DE SERVICIO" El puerto de la computadora servidor que utiliza el servidor web para conectarse. Para la configuración predeterminada, el valor será " 80 "; utilizando SLL, por ejemplo, este valor será el que esté configurado para conexiones HTTP seguras.

Comentario: Para obtener el puerto físico (real) en Apache 2, debe instalar UseCanonicalName = Activado y UseCanonicalPhysicalPort = Activado de lo contrario, este valor puede anularse y no devolver el valor del puerto físico real. No es seguro confiar en este valor en el contexto de aplicaciones que requieren una seguridad reforzada.

"SERVER_SIGNATURE" Una cadena que contiene la versión del servidor y el nombre del host virtual para agregar a las páginas generadas por el servidor, si está habilitado."PATH_TRANSLATED" Ruta basada en el sistema de archivos (no en la raíz del documento) al script actual, después de que el servidor haya realizado cualquier asignación de virtual a real.

Comentario: A partir de PHP 4.3.2, la variable PATH_TRANSLATED ya no se establece implícitamente en Apache 2 SAPI, en comparación con Apache versión 1, donde se establece en el mismo valor que la variable SCRIPT_FILENAME cuando no está en uso por Apache. Este cambio se realizó para cumplir con la especificación CGI, donde la variable PATH_TRANSLATED solo debería existir cuando se define PATH_INFO. Los usuarios de Apache 2 pueden usar la directiva AcceptPathInfo = Activado en el archivo de configuración httpd.conf para establecer la variable PATH_INFO.

"SCRIPT_NAME" Contiene la ruta al script ejecutable actual. Esto es útil para las páginas que necesitan apuntar a sí mismas. La constante __FILE__ contiene la ruta completa y el nombre del archivo actual (es decir, incluido)."REQUEST_URI" El URI que se pasó para acceder a esta página. Por ejemplo, " /index.html". "PHP_AUTH_DIGEST" Al realizar la autenticación HTTP Digest, a esta variable se le asigna el encabezado "Autorización", que es enviado por el cliente (luego debe usarse para la validación adecuada)."PHP_AUTH_USER" Cuando se realiza la autenticación HTTP, esta variable se establece en el nombre de usuario proporcionado por el usuario."PHP_AUTH_PW" Cuando se realiza la autenticación HTTP, esta variable se establece en la contraseña proporcionada por el usuario."TIPO DE AUTENTICACIÓN" Cuando se realiza la autenticación HTTP, esta variable se establece en el tipo de autenticación que se utiliza."PATH_INFO" Contiene cualquier ruta proporcionada por el usuario después del nombre del script, pero antes de la cadena de consulta, si está disponible. Por ejemplo, si la secuencia de comandos actual se solicita desde la URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, la variable $ _SERVER ["PATH_INFO"] contendrá / algunas cosas?>

Este ejemplo resultará en algo como esto.

Aquellos que estudiaron más o menos seriamente PHP saber que hay una matriz global muy útil en PHP Lo que es llamado $ _SERVER... Por eso, en este artículo me gustaría analizar las claves más populares y sus valores en esta matriz, ya que su conocimiento es simplemente necesario incluso para un principiante. Programador PHP.

Antes de proceder a matriz global $ _SERVER en PHP, Inmediatamente haré una pequeña pista. Hay una gran característica incorporada en PHP, Lo que es llamado phpinfo ()... Demos inmediatamente un ejemplo de su uso:

phpinfo ();
?>

Como resultado de ejecutar este sencillo script, verá una tabla enorme con varios Configuración del intérprete de PHP, incluso, hacia el final habrá una tabla de valores matriz global $ _SERVER... Todas las claves y todos los valores correspondientes se enumerarán allí. ¿Cómo puede ayudarte esto? Y el hecho de que si necesita este o aquel valor, y olvida el nombre de la clave, entonces use la función phpinfo () Siempre puedes recordar su nombre. En general, ejecutas este script y me entenderás de inmediato.

Ahora pasemos a los más populares. claves de la matriz $ _SERVER:

  • HTTP_USER_AGENT- esta clave le permite conocer las características del cliente. En la mayoría de los casos, este es definitivamente un navegador, pero no siempre. Y nuevamente, si el navegador, entonces cuál, puede averiguarlo en esta variable.
  • HTTP_REFERER- contiene la ruta absoluta a ese archivo ( Secuencia de comandos PHP, Página HTML) desde el que cambiamos a este script. A grandes rasgos, de dónde vino el cliente.
  • SERVER_ADDR - dirección IP servidor.
  • REMOTE_ADDR - dirección IP cliente.
  • RAIZ DEL DOCUMENTO- ruta física al directorio raíz del sitio. Esta opción se establece mediante archivo de configuración Servidor apache.
  • SCRIPT_FILENAME- la ruta física al script llamado.
  • QUERY_STRING- un valor muy útil que le permite obtener una cadena con una solicitud, y luego puede analizar esta cadena.
  • REQUEST_URI- un valor aún más útil que contiene no solo la solicitud en sí, sino también la ruta relativa al script llamado desde la raíz. Esto se usa muy a menudo para eliminar la duplicación de index.php, es decir, cuando tenemos tal URL: "http://mysite.ru/index.php" y " http://mysite.ru/"dirigen a una página, y URLs diferente, por lo tanto, la duplicación, que tendrá un efecto negativo en optimización de motores de búsqueda... Y ahora con la ayuda REQUEST_URI podemos definir: con index.php o no se llamó al guión. Y podemos hacer una redirección con index.php(si estuvo presente en REQUEST_URI) sin que index.php... Como resultado, al transmitir tal solicitud: " http://mysite.ru/index.php?id=5", tendremos un redireccionamiento a URL: "http://mysite.ru/?id=5". Es decir, eliminamos la duplicación de URL esta index.php.
  • SCRIPT_NAME- ruta relativa al script llamado.

Quizás estos son todos elementos matriz global $ _SERVER en PHP que se utilizan con regularidad. Necesita conocerlos y poder utilizarlos cuando sea necesario.