jueves, 8 de septiembre de 2016

Unidad 2 Curso PHP

SERVIDOR APACHE

ALGUNAS DIRECTIVAS DE CONFIGURACIÓN:


ServerRoot

La directiva ServerRoot es el directorio raíz donde se almacenan los distintos ficheros que utiliza el servidor Apache. Es importante no añadir una barra al final del nombre del último directorio.

Listen

La directiva Listen indica las direcciones IP y los puertos en los que debe escuchar Apache; por defecto, el servidor responde a las peticiones que se reciban en cualquier dirección IP de las interfaces de red. El uso de Listen es ahora obligatorio. Si no está en el fichero de configuración, el servidor no podrá iniciarse. Esto supone un cambio respecto a las versiones anteriores de Apache.

La directiva Listen le especifica al servidor los puertos o las combinaciones de direcciones y puertos cuyas peticiones debe aceptar. Si solamente se especifica un número de puerto, el servidor escuchará en ese puerto, en todas las interfaces de red. Si se especifica una dirección IP y un puerto, el servidor escuchará solamente en esa dirección IP y en ese puerto.

Se pueden usar varias directivas Listen para especificar varias direcciones y puertos de escucha. El servidor responderá a peticiones de cualquiera de esas direcciones y puertos.
Por ejemplo, para hacer que el servidor acepte conexiones en los puertos 80 y 8000, use:

Listen 80
Listen 8000

Para hacer que el servidor acepte conexiones en dos direcciones y puertos diferentes, use:

Listen 192.170.2.1:80
Listen 192.170.2.5:8000

Timeout

Timeout indica el número de segundos antes de que se cancele una conexión por falta de respuesta.
KeepAlive
El comando KeepAlive determina si el servidor permitirá varias conexiones a la vez (p.e., más de una petición por conexión). KeepAlive puede usarse para impedir que un cliente consuma muchos recursos del servidor. El comando KeepAlive aparece ya en on por defecto, lo que significa que se permiten varias conexiones a la vez. Puede ponerse en off para desactivarlas. Consulte la sección de nombre MaxKeepAliveRequests para conocer un método alternativo para limitar las peticiones.
MaxKeepAliveRequests
Esta directiva establece el número máximo de peticiones permitidas por cada conexión que se produzca a la vez. El Grupo Apache recomienda un valor alto, lo que mejoraría el rendimiento. El valor predeterminado del comando MaxKeepAliveRequests es de 100 que debería bastar en la mayoría de los casos.
MaxClients
El comando MaxClients establece un límite al total de los procesos del servidor (es decir, clientes conectados simultáneamente) que se ejecutan a la vez. Debe mantener el comando MaxClients a un valor alto (el valor por defecto es 150), porque no se permitirán nuevas conexiones una vez que se alcance el número máximo de clientes simultáneamente conectados. El valor del comando MaxClients no puede superar el 256 sin que se haya recompilado Apache. La principal razón de tener el parámetro MaxClients es evitar que un servidor errático vuelva inestable al sistema operativo.
Dynamic Shared Object (DSO) Support
LoadModule php6_module C:/AppServ\php6\php6apache2_2.dll
Aquí se realiza la carga de los módulos de apache, al cargar el modulo de php, apache podrá hacer uso del interprete php. Se debe verificar que la librería php6apache2_2.dll se encuentre la ruta indicada, y este relacionada con la versión de apache instalada, ya que de otra forma el servidor no podrá levantar.
ServerAdmin
Especifica la dirección de e-mail que el servidor incluye en cualquier mensaje de error que envía al cliente.
Sería conveniente tener una dirección de email solo para esto, por ejemplo:
ServerAdmin www-admin@foo.example.com
Ya que los usuarios no siempre mencionan que están hablando del servidor
ServerName
Especifica el nombre de host y el puerto que usa el servidor para identificarse. Esto se usa cuando se hace redirección de URLs. Por ejemplo, si el nombre de la maquina del servidor web es simple.example.com, pero el la maquina también tiene el alias DNS www.example.com y quiere que el servidor web se identifique así, debe usar la siguiente directiva:
ServerName www.example.com:80
DocumentRoot
Esta directiva especifica el directorio desde el cuál httpd servirá los ficheros. A menos que especifique alguna otra equivalencia mediante una directiva Alias, el servidor añade la ruta de la URL solicitada a este directorio para construir la ruta del documento a servir. Ejemplo:
DocumentRoot /usr/web
Esto quiere decir que una petición de acceso a http://www.my.host.com/index.html se refiere a /usr/web/index.html en el sistema de ficheros.
El directorio que especifique en DocumentRoot debe escribirlo sin barra al final.
Si se altera DocumentRoot se debe alterar tambien <Directory "C:/AppServ/www">.

IfModule dir_module

<IfModule dir_module>
    DirectoryIndex index.php index.html index.htm
</IfModule>

Aquí se especifica cual será el script inicial que se presentara en el navegador al intentar entrar la ruta publicada por apache, especificada en DocumentRoot.


INTERPRETE PHP

ALGUNAS DIRECTIVAS DE CONFIGURACIÓN:


short_open_tag

Indica a PHP si las etiquetas cortas (<? ?>) de apertura de PHP están activadas. Si por lo contrario está desactivado, debe usar siempre la forma larga de abrir la etiqueta PHP (<?php ?>).

asp_tags

Activa el uso de las etiquetas igual que ASP <% %> además de las normales <?php ?>. Esto incluye la forma corta variable-valor <%= $value %>

precision

El número de dígitos que se muestran después de la coma flotante.

y2k_compliance

Asegura la compatibilidad con el año 2000 (causará problemas con navegadores no compatibles)

register_globals
Registre o no registre las variables EGPS (Entorno, GET, POST, Cookie, Server) son globales.
En » PHP 4.2.0, esta directiva está por defecto off.
Por favor, note que register_globals no puede ser definido en tiempo de ejecucción (ini_set()). Aún así, puede usar .htaccess si el servidor se lo permite, tal como se muestra debajo. Un ejemplo de entrada .htaccess: php_flag register_globals off.

Esta opción ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
Quizás el cambio más controversial en PHP fue cuando el valor predeterminado para la directiva de PHP register_globals pasó de ON a OFF en PHP » 4.2.0. La dependencia sobre esta directiva era bastante común y muchas personas ni siquiera sabía que existía y asumían sólo que ese era el modo como PHP funcionaba. Esta página explicará cómo se puede escribir código inseguro con esta directiva, pero tenga en cuenta que la directiva en si misma no es insegura sino el uso inapropiado de ella.
Cuando está activada, register_globals inyectará los scripts con todo tipo de variables, como las de peticiones provenientes de formularios HTML. Esto, unido al hecho de que PHP no requiere la inicialización de variables, significa que es muy fácil escribir código inseguro. Fue una decisión difícil, pero la comunidad de PHP decidió desactivar esta directiva por defecto. Cuando está activada, las personas usan variables que en realidad no se sabe a ciencia cierta de dónde provienen y solo queda asumir. Las variables internas que son definidas en el script mismo son mezcladas con los datos requeridos enviados por los usuarios y al deshabilitar register_globals se cambia esto.
<?php
// $authorized = true Se define sólo si el usuario está autenticado
if (authenticated_user()) {
    
$authorized true;
}

// Debido a que no se inicializa $authorized como false, esta podría ser
// definida a través de register_globals, como desde GET auth.php?authorized=1
// ¡Por lo tanto, cualquier persona puede verse como autenticada!
if ($authorized) {
    include 
"/highly/sensitive/data.php";
}
?>




register_long_arrays

Dice a PHP cuando o no registrar las obsoletas variables predefinidas del tipo $HTTP_*_VARS Cuando esté activado, variables largas como $HTTP_GET_VARS estarán definidas. Si no las utiliza, se recomienda desactivarlas, por razones de rendimiento. En su lugar, puede usar las Arrays superglobales, como $_GET. Esta directiva empezó a estar disponible en PHP 5.0.0.

Esta opción ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.

post_max_size

Define el tamaño máximo de datos post permitidos. Esta opción también afecta a la subida de ficheros. Para poder subir ficheros grandes, este valor de ser mayor que upload_max_filesize. Si el límite de memoria está activado en su script de configuración, memory_limit también afecta la subida de ficheros. Por norma general, memory_limit debe ser mayor que post_max_size.

upload_max_filesize

El tamaño máximo a subir un fichero.

memory_limit

Establece el máximo de memoria en bytes que un script puede consumir. Ayuda a prevenir que scripts mal programados consuman toda la memoria disponible en el servidor. Nota para no tener límite de memoria, establezca esta directiva a -1.


max_execution_time

Este valor establece el tiempo máximo en segundos que se permite ejecutar antes de que el analizador termine. Esto ayuda a prevenir que scripts mal escritos bloqueen el servidor. El valor por defecto es 30.

max_input_time

Establece el tiempo máximo en segundos que se permite a un script analizar datos de entrada, como POST, GET. Se mide desde el momento de recepción de todos los datos en el servidor hasta el inicio de la ejecución del script.

upload_tmp_dir
Directorio temporal usado para guardar los ficheros durante el proceso de subida. Debe tener permisos de escritura para el usuario que está ejecutando PHP. Si no está especificado PHP usará el predeterminado del sistema.
Si el directorio especificado no tiene permisos de escritura PHP volverá al directorio temporal del sistema por defecto. Si la directiva open_basedir está habilitada, entonces el directorio del sistema por defecto debe permitir la subida de ficheros para que funcione.
error_reporting
Establece el nivel de notificación de errores. El parámetro es un valor de tipo integer que representa un campo de bits, o constantes nominadas. Los niveles de error_reporting y constantes están descritos en Constantes Predefinidas, y en php.ini. Para establecerlo en tiempo de ejecución, use la función error_reporting(). Vea también la directiva display_errors.
display_errors
Determina si los errores deberían ser impresos en pantalla como parte de la salida o si deberían ocultarse al usuario.


INTERPRETE PHP

SALIENDO DE HTML / INSTRUCCIÓN SEPARADOR / COMENTARIO / VARIABLES / TIPOS DE DATOS / CONSTANTES
Saliendo de HTML
Cuando PHP interpreta un fichero, buscar por las etiquetas de apertura y fin de bloque, que dicen a PHP donde empezar y finalizar la interpretación del código. Este mecanismo permite a PHP ser incrustado en todo tipo de documentos, todo lo que esté fuera de las etiquetas de PHP será ignorado por el interpretador. La mayoría de veces se encontrará con PHP incrustado en documentos HTML, como se muestra en este ejemplo.
<p>Este texto va a ser ignorado.</p>
<?php echo 'Mientras que esto va a ser interpretado.'?>
<p>Esto también será ignorado.</p>
También se pueden usar estructuras más avanzadas:

<?php
if ($expression) {
    
?>
    <strong>Esto es verdadero.</strong>
    
<?php
} else {
    
?>
    <strong>Esto es falso.</strong>
    
<?php
}
?>

Instrucción separador
Como en C o Perl, PHP requiere que las instruciones terminen en punto y coma al final de cada declaración. La etiqueta de fin de bloque de PHP automáticamente implica un punto y coma. No se tiene que usar punto y comoa para cerrar la última línea de código de PHP. La etiqueta de fin de bloque incluirá de inmediato salto de línea si no está presente.
<?php
    echo 'Esto es una prueba';
?>

<?php echo 'Esto es una prueba' ?>

<?php echo 'Hemos omitido la última etiqueta de cerrado';
Comentario
PHP Soporta comentarios 'C', 'C++' y Unix estilo de consola (estilo Perl). Por ejemplo:
<?php
    
echo 'Esto es una prueba'// Esto es un comentario estilo c++ de una sola línea
    /* Esto es un comentario multi-línea
       si! otra lína de comentarios */
    
echo 'Esto es otro test';
    echo 
'Un test final'# Esto es un comentario estilo consola de una sola línea
?>

Los comentarios de estilo "una sola línea" solo comentan hasta el final de la línea o del bloque actual de código PHP, lo primero que suceda. Esto implica que el código HTML después de // ... ?> o # ... ?> Imprimirá ?> para salir del modo PHP y volver a HTML, y // or # no influyen. Si la directiva de configuración asp_tags está activada, actúa igual que // %> y # %>. Sin embargo, la etiqueta </script> no rompe el modo PHP en un comentario de una sola línea.

<h1>Esto es un <?php # echo 'simple';?> ejemplo</h1>
<p>El encabezado anterior dirá 'Esto es un  ejemplo'.</p>


Los comentarios del estilo 'C' finalizan al primer */ que se encuentre. Asegúrese que no utiliza muchos comentarios del estilo 'C'. Es muy fácil cometer errores cuando trata de comentar un gran bloque de código.

<?php
 
/*
    echo 'Esto es una prueba'; /* Este comentario puede causar un problema*/
 
*/
?>


Variables
En PHP las variables se representan con un signo de dólar seguido por el nombre de la variable. El nombre de la variable es sensible a minúsculas y mayúsculas.
Los nombres de variables siguen las mismas reglas que otras etiquetas en PHP. Un nombre de variable válido tiene que empezar con una letra o un carácter de subrayado (underscore), seguido de cualquier número de letras, números y caracteres de subrayado.
<?php
$var 
'Roberto';
$Var 'Juan';
echo 
"$var$Var";      // imprime "Roberto, Juan"

$4site 'aun no';      // inválido; comienza con un número
$_4site 'aun no';     // válido; comienza con un carácter de subrayado
$täyte 'mansikka';    // válido; 'ä' es ASCII (Extendido) 228
?>

PHP también ofrece otra forma de asignar valores a las variables: asignar por referencia. Esto significa que la nueva variable simplemente referencia (en otras palabras, "se convierte en un alias de" ó "apunta a") la variable original. Los cambios a la nueva variable afectan a la original, y viceversa.

Para asignar por referencia, simplemente se antepone un signo ampersand (&) al comienzo de la variable cuyo valor se está asignando (la variable fuente). Por ejemplo, el siguiente segmento de código produce la salida 'Mi nombre es Bob' dos veces:

<?php
$foo 
'Bob';                // Asigna el valor 'Bob' a $foo
$bar = &$foo;                // Referenciar $foo vía $bar.
$bar "Mi nombre es $bar";  // Modifica $bar...
echo $bar;
echo 
$foo;                   // $foo también se modifica.
?>

Variables variables

A veces es conveniente tener nombres de variables variables. Dicho de otro modo, son nombres de variables que se pueden definir y usar dinámicamente. Una variable normal se establece con una sentencia como:
<?php
$a 
'hola';
?>
Una variable variable toma el valor de una variable y lo trata como el nombre de una variable. En el ejemplo anterior, hola, se puede usar como el nombre de una variable utilizando dos signos de dólar. Es decir:
<?php
$$a 'mundo';
?>
En este momento se han definido y almacenado dos variables en el árbol de símbolos de PHP: $a, que contiene "hola", y $hola, que contiene "mundo". Es más, esta sentencia:
<?php
echo "$a ${$a}";
?>
produce el mismo resultado que:
<?php
echo "$a $hola";
?>
esto quiere decir que ambas producen el resultado: hola mundo.
Tipos de Datos

Booleanos

Este es el tipo más simple. Un boolean expresa un valor de verdad. Puede ser TRUE or FALSE.

Para especificar un literal boolean, use alguna de las palabras clave TRUE o FALSE. Ambas son insensibles a mayúsculas y minúsculas.

Enteros

Un entero o integer es un número del conjunto = {..., -2, -1, 0, 1, 2, ...}.

Los integers pueden ser especificados mediante notación decimal (base 10), hexadecimal (base 16), u octal (base 8), opcionalmente precedidos por un signo (- o +).

<?php
$a 
1234// número decimal
$a = -123// un número negativo
$a 0123// número octal (equivalente a 83 decimal)
$a 0x1A// número hexadecimal (equivalente a 26 decimal)
?>

Números de punto flotante

Los números de punto flotante (también conocidos como "flotantes", "dobles" o "números reales") pueden ser especificados usando cualquiera de las siguientes sintaxis:

<?php
$a 
1.234
$b 1.2e3
$c 7E-10;
?>

Cadenas

Un string es una serie de caracteres, y por lo tanto, un carácter es lo mismo que un byte. Es decir, hay exactamente 256 diferentes caracteres posibles. Esto implica también que PHP no tiene soporte nativo para Unicode.

No hay comentarios:

Publicar un comentario