Contenidos
- Clasificación
- Integración con los lenguajes de marcas
- Sintaxis
- Herramientas de edición de código
- Elementos del lenguaje
- Comentarios
- Funciones integradas y de usuario
- Gestión de errores
- Mecanismos de introducción de información: formularios
- Autenticación de usuarios
- Control de accesos
- Sesiones
- Configuración del intérprete
Clasificación
Los primeros servidores web permitían trabajar con información estática, es decir, la información permanecía invariable hasta que volvíamos hacer una petición al servidor. La primera solución técnica que se realizó fue utilizar aplicaciones que estaban instaladas en el propio servidor, esta tecnología, conocida como Common Gateway Interface (CGI) permitía lanzar programas escritos en C o Perl para refrescar la información y que fuera un poco más dinámica.
El siguiente paso fue la creación de lenguajes en el lado del servidor como PHP (PHP Hypertext Pre-processor) de Software libre, ASP (Active Server Pages) de Microsoft, JSP (JavaServer Pages) de JAVA, estos lenguajes se utilizan para generar páginas dinámicas, facilitando el acceso a las bases de datos. Para poder ejecutar programas en PHP, ASP o JSP es necesario descargarse aplicaciones que permiten ejecutar las extensiones de dichos lenguajes.
Si nuestro servidor soporta ejecución en PHP bastará con escribir el código en un editor de textos, guardarlo con la extensión .php en la carpeta del servidor donde podemos ejecutar PHP y accedemos al fichero escribiendo la dirección de la página en el explorador.
Integración con los lenguajes de marcas
Los lenguajes de marcas sirven para codificar documentos, la codificación se realiza incorporando etiquetas o marcas que tienen información adicional acerca de la estructura del texto.
El lenguaje de marcas más popular es el HTML, siglas de HyperText Markup Language (Lenguaje para el Formato de Documentos de Hipertexto), es el lenguaje usado por la World Wide Web. Otros ejemplos de lenguajes de marcas son XHTML (Extensible Hypertext Markup Language), RSS 2.0 (Really Simple Syndication), RTF (Rich Text Format), etc.
HTML es el lenguaje utilizado para construir páginas web, mediante una estructura se crear contenido en forma de texto, también se pueden incorporar otro tipo de elementos a ese contenido como imágenes, sonidos.
Los lenguajes de script de servidor como PHP generan HTML que puede ser utilizado junto con las hojas de estilo CSS.
Vamos a continuar explicando características del lenguaje PHP.
Sintaxis
Cuando PHP analiza un fichero, busca las etiquetas de apertura y cierre, que son , y que indican a PHP dónde empezar y finalizar la interpretación del código. Este mecanismo permite embeber a PHP en todo tipo de documentos, ya que todo lo que esté fuera de las etiquetas de apertura y cierre de PHP será ignorado por el analizador.
Herramientas de edición de código
Hay múltiples editores de código disponibles para programar en PHP.
Elementos del lenguaje
- Tipos de datos básicos
- Operadores
- Estructuras de control
- Vectores y tablas
- Funciones
- Formularios y controles
- Clases
- Excepciones
Comentarios
En cualquier código de script de PHP se pueden poner comentarios (líneas de código que no se ejecutan). En PHP hay dos formas de escribir comentarios: En una sola línea y en múltiples líneas.
Funciones integradas y de usuario
Una función es una serie de instrucciones que tienen un determinado propósito y que se invocan mediante un nombre.
Librerías de funciones
En el caso de que la función sea de gran interés, sería conveniente definirlas en un archivo, por ejemplo, libreria.php, e incluirlo en cada script con la instrucción include_once o require_once, que ya conocemos.
Funciones recursivas
Una función se dice que es recursiva si dentro del código de dicha función se invoca a la misma función una o más veces.
Funciones para el manejo de variables
- Comprobación si una variable está vacía
- empty — Determina si una variable está vacía
- Conversión a tipos básicos
- doubleval — Alias de floatval
- floatval — Obtener el valor flotante de una variable
- intval — Obtiene el valor entero de una variable
- strval — Obtiene el valor de cadena de una variable
- Conversión a tipos
- settype — Establece el tipo de una variable
- gettype — Obtener el tipo de una variable
- Comprobación de tipos
- is_array — Comprueba si una variable es un array
- is_bool — Comprueba si una variable es de tipo booleano
- is_callable — Verificar que los contenidos de una variable puedan ser llamados como una función
- is_double — Alias de is_float
- is_float — Comprueba si el tipo de una variable es float
- is_int — Comprueba si el tipo de una variable es integer
- is_integer — Alias de is_int
- is_long — Alias de is_int
- is_null — Comprueba si una variable es NULL
- is_numeric — Comprueba si una variable es un número o una cadena numérica
- is_object — Comprueba si una variable es un objeto
- is_real — Alias de is_float
- is_resource — Comprueba si una variable es un recurso
- is_scalar — Comprueba si una variable es escalar
- is_string — Comprueba si una variable es de tipo string
- Existencia y eliminación de variables
- isset — Determina si una variable está definida y no es NULL
- unset — Destruye una variable especificada
- Mostrar tipo y contenidos de una variable
- print_r — Imprime información legible para humanos sobre una variable
- var_dump — Vuelca información sobre una variable
- var_export — Imprime o devuelve una representación string de una variable analizable
- Variables definidas globales
- get_defined_vars — Devuelve una matriz con todas las variables definidas
- get_resource_type — Devuelve el tipo de recurso
- import_request_variables — Importar variables GET/POST/Cookie en el ámbito global
Funciones numéricas
- Absoluto, potencia y raíz cuadrada
- abs — Valor absoluto
- pow — Expresión exponencial
- sqrt — Raíz cuadrada
- Redondear
- ceil — Redondear fracciones hacia arriba
- floor — Redondear fracciones hacia abajo
- round — Redondea un float
- Cambio de base
- base_convert — Convertir un número entre bases arbitrarias
- Máximo y mínimo
- max — Encontrar el valor más alto
- min — Encontrar el valor más bajo
- Números aleatorios
- mt_getrandmax — Mostrar el mayor valor aleatorio posible
- mt_rand — Genera un mejor número entero aleatorio
- Comprobación de infinito y número no definido
- is_finite — Encuentra si un valor es un número finito legal
- is_infinite — Encuentra si un valor es infinito
- is_nan — Encuentra si un valor no es un número
- Residuo y número pi
- fmod — Devuelve el residuo de punto flotante (módulo) de la división de los argumentos
- pi — Obtener valor de pi
- Formato numérico
- number_format — Formatear un número con los miles agrupados
Funciones con caracteres
- Codificación de caracteres latin1 y unicode
- utf8_decode – Convierte una cadena con los caracteres codificados ISO-8859-1 con UTF-8 a un sencillo byte ISO-8859-1
- utf8_encode – Codifica una cadena ISO-8859-1 a UTF-8
- Unir y dividir
- str_split — Convierte un string en un array
- join — Alias de implode
- explode — Divide una cadena en varias cadenas
- implode — Une elementos de un array en una cadena
- Contar caracteres y palabras
- count_chars — Devuelve información sobre los caracteres usados en una cadena
- str_word_count — Devuelve información sobre las palabras utilizadas en un string
Funciones con cadenas
- Contar subcadenas y caracteres
- strlen — Obtiene la longitud de una cadena
- substr_count — Cuenta el número de apariciones del substring
- Repetir
- str_repeat — Repite un string
- Conversión ASCII-carácter
- chr — Devuelve un caracter específico
- ord — devuelve el valor ASCII de una caracter
- Comparaciones
- strcasecmp — Comparación de string segura a nivel binario e insensible a mayúsculas y minúsculas
- strcmp — Comparación de string segura a nivel binario
- strnatcasecmp — Comparación de strings, insensible a mayúsculas y minúsculas, utilizando un algoritmo de «orden natural»
- strnatcmp — Comparación de strings utilizando un algoritmo de «orden natural»
- strncasecmp — Comparación de los primeros n caracteres de cadenas, segura con material binario e insensible a mayúsculas y minúsculas
- strncmp — Comparación segura a nivel binario de los primeros n caracteres entre strings
- substr_compare — Comparación segura a nivel binario de dos o más strings desde un desplazamiento, hasta una longitud de caractere
- Eliminación de caracteres iniciales-finales
- trim — Elimina espacio en blanco (u otro tipo de caracteres) del inicio y el final de la cadena
- ltrim — Retira espacios en blanco (u otros caracteres) del inicio de un string
- rtrim — Retira los espacios en blanco (u otros caracteres) del final de un string
- Rellenar derecha-izquierda
- str_pad — Rellena un string hasta una longitud determinada con otro string
- Invertir
- strrev — Invierte una string
- Reemplazamiento
- str_ireplace — Versión insensible a mayúsculas y minúsculas de str_replace
- str_replace — Reemplaza todas las apariciones del string buscado con el string de reemplazo
- substr_replace — Reemplaza el texto dentro de una porción de un string
- Subcadenas
- stristr — strstr insensible a mayúsculas y minúsculas
- strstr — Encuentra la primera aparición de un string
- substr — Devuelve parte de una cadena
- strpbrk — Buscar una cadena por cualquiera de los elementos de un conjunto de caracteres
- strrchr — Encuentra la última aparición de un caracter en un string
- strchr — Alias de strstr
- Buscar
- strpos — Encuentra la posición de la primera ocurrencia de un substring en un string
- strcspn — Encuentra la longitud del segmento inicial que no coincida con la máscara
- stripos — Encuentra la posición de la última aparición de un substring insensible a mayúsculas y minúsculas en un string
- strrpos — Encuentra la posición de la última aparición de un substring en un string
- strspn — Encuentra la longitud del segmento inicial de un string que consista únicamente en caracteres contenidos dentro de una máscara dada.
- Aleatorio
- str_shuffle — Reordena aleatoriamente una cadena
- Ajustar
- wordwrap — Ajusta un string hasta un número dado de caracteres
- Conversión binaria-hexadecimal de caracteres
- bin2hex — Convierte datos binarios en su representación hexadecimal
- hex2bin — Conviertir hexadecimal a binario
- Comparar
- strcoll — Comparación de cadenas basada en la localidad
- Mayúsculas y minúsculas
- lcfirst — Pasa a minúscula el primer caracter de un string
- strtolower — Convierte una cadena a minúsculas
- strtoupper — Convierte un string a mayúsculas
- ucfirst — Convierte el primer caracter de una cadena a mayúsculas
- ucwords — Convierte a mayúsculas el primer caracter de cada palabra en una cadena
Funciones sobre fechas
- Intervalos de tiempo
- date_interval_create_from_date_string — Establece un objeto DateInterval desde las partes relativas de una cadena
- date_interval_format — Formatea el intervalo
- Crear una fecha y hora
- date_create — Devuelve un nuevo objeto DateTime
- date_date_set — Establece la fecha
- date_time_set — Establece la hora
- date_create_from_format — Devuelve un nuevo objeto DateTime formateado según el formato especificado
- Dar formato a una fecha y hora
- date_format — Devuelve la fecha formateada según el formato dado
- Modificar una fecha
- date_add — Añade una cantidad de días, meses, años, horas, minutos y segundos al objeto DateTime
- date_sub — Sustrae una cantidad de días, meses, años, horas, minutos y segundos de un objeto DateTime
- Restar dos fechas
- date_diff — Devuelve la diferencia entres objetos DateTime.
- Operadores de fecha
- date1 == date2 Devuelve TRUE si ambas fechas son la misma, y FALSE en otro caso
- date1 < date2 Devuelve TRUE si date1 es una fecha anterior a date2, y FALSE en otro caso
- date1 > date2 Devuelve TRUE si date1 es una fecha posterior a date2, y FALSE en otro caso
- date1 != date2 Devuelve TRUE si date1 es una fecha distinta a date2, y FALSE en otro caso
- date1 <= date2 Devuelve TRUE si date1 es una fecha anterior o igual a date2, y FALSE en otro caso
- date1 >= date2 Devuelve TRUE si date1 es una fecha posterior o igual a date2, y FALSE en otro caso
Funciones HTML
- Codificar caracteres en html
- htmlspecialchars — Convierte caracteres especiales en entidades HTML
- htmlentities — Convierte todos los caracteres aplicables a entidades HTML
- Decodificar caracteres en html
- html_entity_decode — Convierte todas las entidades HTML a sus caracteres correspondientes
- htmlspecialchars_decode — Convierte entidades HTML especiales de nuevo en caracteres
Gestión de errores
Estas funciones se ocupan del manejo y registro de errores. Le permiten definir sus propias reglas de manejo de errores, así como modificar la manera en que los errores pueden ser registrados. Esto le permite cambiar y mejorar la notificación de errores para acomodarla a sus necesidades.
Con las funciones de registro se pueden enviar mensajes directamente a otras máquinas, a un e-mail (¡o un e-mail a un busca!), al registro del sistema, etc., por lo que puede registrar y monitorizar selectivamente las partes más importantes de sus aplicaciones y sitios web.
Las funciones de notificación de errores le permiten personalizar qué niveles y tipos de errores se dan, abarcando desde simples avisos hasta funciones personalizadas devueltas al originarse un error.
- debug_backtrace — Genera un rastreo
- debug_print_backtrace — Muestra un rastreo
- error_clear_last — Limpiar el error más reciente
- error_get_last — Obtener el último error que ocurrió
- error_log — Enviar un mensaje de error a las rutinas de manejo de errores definidas
- error_reporting — Establece cuáles errores de PHP son notificados
- restore_error_handler — Recupera la función de gestión de errores previa
- restore_exception_handler — Restaura la función de gestión de excepciones previamente definida
- set_error_handler — Establecer una función de gestión de errores definida por el usuario
- set_exception_handler — Establece una función de gestión de excepciones definida por el usuario
- trigger_error — Generar un mensaje de error/advertencia/aviso de nivel de usuario
- user_error — Alias de trigger_error
Mecanismos de introducción de información: formularios
Todo formulario en XHTML está compuesto por una serie de controles definidos dentro de una etiqueta