Tutorial Principal de PHP8+
Fundamentos
Introducción al lenguaje PHP
Empezando a trabajar
Ejecución de código PHP
Problema con las codificaciones
Salida de errores de PHP
Código completo para ejecutar PHP
Código mejorado para ejecución
Resumen de los comandos iniciales de PHP
Comentarios en PHP
Comentarios en el libro de texto
Volcado de variables
Funciones en PHP
Variables
Uso de variables
Cambio de valores de variables
Operaciones matemáticas con números
Operaciones matemáticas con variables
Prioridad de las operaciones matemáticas
Prioridad igual
Paréntesis de agrupación
Matices de agrupación
Fracciones
Números negativos
Resto de la división
Potenciación
Prioridad de la potenciación
Cadenas
Concatenación de cadenas
Espacios en la concatenación de cadenas
Longitud de la cadena
Problema con el cirílico
Etiquetas
Atributos de las etiquetas
Valores booleanos
Valor null
Conversión automática de tipos
Conversión automática a cadena
Matices de la conversión a cadena
Conversión a número
Conversión a fracción
Conversión de fracción a entero
Conversión de número a cadena
Caracteres de la cadena
Dígitos en la cadena
Acceso a los dígitos de un número
Matices del trabajo con la operación de asignación
Operaciones abreviadas
Incrementación
Tipo prefijo y postfijo
Práctica en la búsqueda de errores
Práctica en operaciones
Práctica en fórmulas
Matrices (Arrays)
Introducción a las matrices
Ver el contenido de la matriz
Elemento individual de la matriz
Matrices asociativas
Truco con las claves
Orden de los elementos
Longitud de la matriz
Modificación de elementos
Reescritura de elementos de la matriz
Incremento de elementos
Rellenar matrices
Asignación explícita de claves
Claves a partir de variables
Práctica en la búsqueda de errores
Condiciones
Construcción if-else
Operadores mayor y menor
Comprobación de igualdad
Comprobación de desigualdad
Comparación de variables
Tipos de datos y construcción if-else
Números entre comillas
Igualdad por valor y tipo
Desigualdad por valor y tipo
Matices al comparar tipos de datos
Condiciones complejas en if-else
AND lógico
OR lógico
Prioridad de las operaciones de comparación
Agrupación de condiciones
Inversión de enunciados
Construcción if-else y valores booleanos
Comparación no estricta de valores lógicos
If abreviado
Matiz de las operaciones abreviadas
Comando isset
Supresión de advertencias
Comprobación de elementos de array
Comando empty
Opcionalidad del comando else
Opcionalidad de las llaves
Problema de la opcionalidad de las llaves
Combinaciones if-else
Construcción elseif
If anidados
Construcción switch
Opcionalidad de default
Construcción match
Opcionalidad de break
Operador ternario
Operador de fusión de null
Cadenas de operadores de fusión de null
Operaciones lógicas
Determinación de la parte de la hora
Comprobación de longitud de cadenas y arrays
Comprobación de carácter de cadena
Comprobación del resto de la división
Práctica en búsqueda de errores
Práctica if else
Bucles
Introducción
Bucle foreach
Bucle foreach con claves
Bucle while
Bucle for
Condiciones en bucles
Acumulación de suma de números
Acumulación de suma de elementos
Formación de cadenas en bucle
Opcionalidad de llaves
Problema de la opcionalidad de llaves
Instrucción break
Instrucción continue
Trabajo con banderas
Bucles anidados
Bucle for para arrays
Relleno de arrays en bucle
Modificación de arrays en bucle
Consejos para escribir código
Práctica de búsqueda de errores
Práctica de bucles
Multidimensionalidad
Introducción
Arreglo tridimensional
Arreglos asociativos
Arreglos arbitrarios
Iteración de arreglos multidimensionales
Iteración de un arreglo tridimensional
Trabajo con claves
Relleno de arreglos multidimensionales
Relleno con números en orden
Arreglo de arreglos asociativos
Conversión de arreglos multidimensionales
Funciones Matemáticas
Funciones de Cadena
Longitud de cadena
Mayúsculas y minúsculas
Recorte de cadenas
Comprobación de cadenas
Búsqueda en cadenas
División de cadenas
Limpieza de extremos de cadena
Impresión de cadena con inserción
Formateo de representación de números
Inversión de cadena
Relleno de cadena
Trabajo con etiquetas
Códigos de caracteres
Conteo de subcadenas
Partes de cadenas
Funciones de arrays
Búsqueda en arrays
Elementos extremos
Segmentación de arrays
Empalme de arrays
Rango en array
Relleno de arrays
Combinación de arrays
Claves-valores
Inversión
Reemplazo
Eliminación de duplicados
Conteo de elementos
División en subarrays
Ordenación
Operaciones de conjuntos
Aleatorio
Tiempo
Trabajar con timestamp
Formateo
Análisis de fechas en formato libre
Comprobación de corrección
Zona horaria
Modificación
Comparación de cadenas
Comparación de fecha sin año
Inclusión de fecha en un intervalo
Comparación de timestamp
Funciones definidas por el usuario
Introducción
Parámetros de función
Múltiples parámetros
Parámetros variables
Parámetros opcionales
Sentencia return
Llamada secuencial de funciones
Detalle sutil de return
Ciclo y return
Aplicación de return en ciclos
Técnica de trabajo con return
Banderas en funciones
Operadores lógicos en funciones
Consejos sobre funciones
Práctica de búsqueda de errores
Práctica de funciones
Ámbito
Referencias primitivas
Referencias de arrays
Referencias en foreach
Variables internas
Variables externas
Variables homónimas
Variables globales
Modificación de parámetros
Parámetros por referencia
Recursividad
Recursividad
Ejemplo con parámetro
Suma de elementos del array
Recursividad y arrays multidimensionales
Suma de array multidimensional
Manipulaciones con elementos
Expresiones Regulares
Introducción
Operadores de repetición
Paréntesis de agrupación
Escapado de caracteres especiales
Lista de caracteres especiales
Llaves
Limitación de la codicia
Grupos de caracteres
Conjuntos de caracteres
Inversión de conjuntos de caracteres
Características del cirílico
Caracteres especiales dentro de conjuntos
Grupos de caracteres dentro de conjuntos
Caracteres especiales de exclusión dentro de conjuntos
Símbolo de acento circunflejo dentro de conjuntos
Características del guión dentro de conjuntos
Inicio y fin de línea
Fin o inicio de palabra
Comando 'o'
Delimitadores
Escapado de delimitadores
Barra invertida
Comprobación de cadenas
Prueba automática de expresiones regulares
Comprobación de toda la cadena
Capturas en la búsqueda
Búsqueda de todas las coincidencias
Todas las coincidencias en capturas
Cambio del comportamiento de búsqueda
Paréntesis no capturadores
Capturas en el reemplazo
Capturas en la expresión
Capturas con nombre
Capturas con nombre dentro de la expresión
Número común de capturas
Búsqueda anticipada
Búsqueda retrasada
Reemplazo con callback
Modificadores
Ignorar mayúsculas y minúsculas en expresiones regulares
Comentarios en expresiones regulares
Trabajo con Unicode en expresiones regulares
Cambio de la codicia en expresiones regulares
Escapado de caracteres regulares en expresiones regulares
Múltiples modificadores de expresiones regulares
Escapado automático de caracteres especiales
Filtrado de arrays
División de cadenas en arrays
Formación de Cadenas
Inserción de Variables
Inserción de Elementos de Array
Inserción de Elementos de Arrays Asociativos
Bucle e Inserción de Variables
Inserción de Elementos de Arrays en Bucle
Inserción de Elementos de Arrays Multidimensionales en Bucle
Generación de Etiquetas
Generación de Etiquetas con Atributos
Bucle y Generación de Etiquetas
Bucle y Generación de Etiquetas desde Arrays
Bucle y Generación de Etiquetas y Atributos
Bucle y Generación de Tablas HTML
Generación de Tabla HTML con un Solo Bucle
Generación de Tabla HTML con Dos Bucles Anidados
Inserción de Código PHP en HTML
Comando Corto echo
Salida de Variable en HTML
Salida de Elementos de Array en HTML
Condiciones y Ruptura de Código PHP
Bloque else en la Ruptura de Código PHP
Bloque elseif en la Ruptura de Código PHP
Bucles y Ruptura de Código PHP
Array en Bucle en la Ruptura de Código PHP
Formularios
Introducción a los formularios
Método de envío de formularios
Obtención de datos de formularios
Obtención de datos de formularios método GET
Obtención de datos de formularios método POST
Manejo de formularios en un archivo
Ocultar el formulario después del envío
Conservar los valores del formulario
Conservar el valor por defecto del formulario
Código abreviado para conservar valores por defecto
Elemento textarea
Conservar el valor de textarea después del envío
Casilla de verificación
Matices del uso de casillas de verificación
Conservar el valor en la casilla de verificación
Botones de radio
Conservar el valor en los botones de radio
Listas desplegables (select)
Atributo value en las listas desplegables
Conservar el valor en las listas desplegables
Consultas GET
Consultas GET mediante enlaces
Práctica
Sesiones
Introducción a las sesiones
Posibles problemas
Uso de sesiones en una sola página
Eliminación de sesiones
Destrucción de toda la sesión
Sesiones y formularios
Escritura de arrays en sesiones
Cookies
Introducción a las cookies
Problema de configuración de cookies
Configuración instantánea de cookies
Contador de recarga de página
Tiempo de vida de la cookie
Eliminación de cookies
Eliminación instantánea de cookies
Sistema de archivos
Lectura de archivos
Escritura de archivos
Combinación de operaciones
Rutas relativas
Rutas absolutas
Ventajas de la ruta absoluta
Rutas absolutas al script
Renombrado de archivos
Movimiento de archivos
Copia de archivos
Eliminación de archivos
Determinación del tamaño de archivos
Comprobación de la existencia de archivos
Creación de carpetas
Eliminación de carpetas
Renombrado de carpetas
Movimiento de carpetas
Lectura del contenido de una carpeta
Distinguir carpeta de archivo
Analizar el contenido de una carpeta
Inserción de archivos
División de maquetación en elementos
Escritura de la inserción en una variable
Inclusión de archivos
Inclusión única de archivos
Escritura de la inclusión en una variable
Bases de datos
Introducción a las bases de datos
PhpMyAdmin
Tabla de prueba users
Manipulaciones preparatorias
Envío de consultas a la base de datos
Búsqueda de errores en la base de datos
Prueba de funcionalidad
Problemas de codificación
Código de prueba completo
Obtención del resultado
Obtención del resultado en forma de array
Formación del array en bucle
Selección de registros
Operaciones lógicas
Campos de selección
Inserción de registros
Inserción de registros con columnas faltantes
Actualización de registros
Eliminación de registros
Ordenación de registros
Limitación de cantidad
Conteo de cantidad
Obtención del conteo
Consultas avanzadas
Organización de Bases de Datos
Vinculación de tablas
Obtención de datos de tablas vinculadas
Cadena de tablas vinculadas
Vinculación a través de tabla de enlace
Relaciones familiares
Múltiples descendientes
Doble relación
Práctica
Práctica con Bases de Datos
Tabla de prueba users
Formato de salida
Eliminación de datos
Visualización de datos
Adición de datos
Edición de datos
Trabajo con HTTP
Tutorial de HTTP
Método de solicitud HTTP
Encabezados de solicitud HTTP
Array de encabezados de solicitud HTTP
Encabezados de respuesta HTTP
Problema con los encabezados de respuesta HTTP
Problema con include
Entrega de la línea de inicio de la respuesta HTTP
Entrega del estado de la respuesta HTTP
Redirecciones
Introducción a las redirecciones
Redirección instantánea
Solicitudes GET y redirección
Autoredirección con adición de parámetros
Mensajes flash
Array de mensajes flash
Guardado de formularios
Mensajes de envío exitoso
Redirección con validación de formulario
Autenticación
Introducción
Autorización
Sesiones
Cierre de sesión
Registro
Autorización inmediata tras el registro
Añadir id a la sesión
Ocultar contraseña
Comprobar disponibilidad del login
Validación
Hash
Añadir sal al registro
Añadir sal a la autenticación
Función password_hash
Perfil
Cuenta
Cambio de contraseña
Confirmación de contraseña
Eliminar cuenta
Derechos
Registro con división de derechos
Derechos y normalización de la base de datos
Motor del Sitio
Introducción
Uso de htaccess
Motor basado en archivos
Título en el motor basado en archivos
Títulos en array
Títulos en el contenido
Página 404 en el motor basado en archivos
Motor basado en base de datos
URLs legibles en el motor
Enrutamiento simple
Enrutamiento con parámetros nombrados
Múltiples parámetros en la ruta
Práctica