Movatterモバイル変換


[0]ホーム

URL:


Ir al contenido
WikipediaLa enciclopedia libre
Buscar

PHP

De Wikipedia, la enciclopedia libre
Para otros usos de este término, véasePHP (desambiguación).
PHP
Desarrollador(es)
PHP Group
https://www.php.net
Información general
Extensiones comunes.php,.phtml,.php3,.php4,.php5,.php7,.phps,.php-s,.pht,.phar
ParadigmaMultiparadigma:imperativo,funcional,orientado a objetos,procedural,reflexivo
Apareció en1995
Diseñado porRasmus Lerdorf
Última versión estable8.5.2[1](15 de enero de 2026 (1 mes y 3 días))
Sistema de tiposDinámico,débil
ImplementacionesMotor Zend,HHVM,Phalanger, Quercus, Project Zero,Parrot
Influido porPerl,C,C++,Java,Tcl
Ha influido aFalcon,Hack
Sistema operativoUnix-like,Windows
LicenciaLicencia PHP

PHP es unlenguaje de programación interpretado[2]​ del lado del servidor y de uso general que se adapta especialmente aldesarrollo web.[3]​ PHP es un lenguaje de scripting del lado del servidor que permite el desarrollo de aplicaciones web dinámicas y es compatible con múltiples sistemas operativos y servidores, facilitando la integración con bases de datos como MySQL y PostgreSQL. Además, PHP es uno de los lenguajes más utilizados en la creación de sitios web modernos comoWordPress, Drupal yJoomla. Fue creado inicialmente por elprogramadordanés-canadienseRasmus Lerdorf en 1994.[4]​ En la actualidad, laimplementación de referencia de PHP es producida por The PHP Group.[5]​ PHP originalmente significabaPersonal Home Page (Página personal), pero ahora significa el inicialismo[n 1]​ recursivoPHP: Hypertext Preprocessor.[7]YouTubefue creado con este lenguaje inicialmente.

El código PHP suele ser procesado en unservidor web por unintérprete PHP desarrollado como unmódulo, undaemon o como unejecutable deinterfaz de entrada común (CGI). En un servidor web, el resultado del código PHP interpretado y ejecutado —que puede ser cualquier tipo de datos, como elHTML generado o datos de imágenes binarias— formaría la totalidad o parte de una respuestaHTTP. Existen diversos sistemas de plantillas,sistemas de gestión de contenidos yframeworks que pueden emplearse para organizar o facilitar la generación de esa respuesta. Por otra parte, PHP puede utilizarse para muchas tareas de programación fuera del contexto de la web, comoaplicaciones gráficas autónomas[8]​ y el control dedrones.[9]​ También se puede interpretar y ejecutar un código PHP cualquiera a través de unainterfaz de línea de comandos (CLI).

El intérprete estándar de PHP, impulsado porMotor Zend, es unsoftware libre publicado bajoLicencia PHP. PHP ha sido ampliamente portado y puede ser desplegado en la mayoría de los servidores web en casi todos lossistemas operativos yplataformas, de forma gratuita.

PHP se utiliza en más del 75% de los sitios web que emplean lenguajes de programación del lado del servidor.[10]

El lenguaje PHP evolucionó sin unaespecificación formal escrita o un estándar hasta 2014, con la implementación original actuando como el estándarde facto que otras implementaciones intentaban seguir. Desde 2014, se ha trabajado para crear una especificación formal de PHP.[11]

Visión general

[editar]

PHP puede ser desplegado en la mayoría de losservidores web y en todos los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en más de 20 millones desitios web y en un millón de servidores. Migrar los servicios basados en PHP hacia las nuevas tecnologías que aparecen, supone un costo a justificar monetariamente (sobre todo, en términos de hardware y rendimiento), por ello, hablar si el número de sitios basados en PHP se ha visto reducido progresivamente en los últimos años, con la aparición de nuevas tecnologías comoNode.js, Golang,ASP.NET, etc.

Poderse hacer una visión general de como PHP está evolucionando a día de hoy, es hablar sobre las nuevas librerías disponibles, el uso de matrices,[12]​ manejo de números enteros, tratamiento de la criptografía cuando se usa unaBase64,[13][14][15]Web scraping, indexación de webs,precocinado de datos,Macrodatos, set de datos,supervisión de datos,set de proposiciones dimensionales. Como parte de la visión general, habría que incluir un último aspecto, y es la capacidad de generar capas de seguridad autodependientes, en un paradigma solo emergente gracias a las librerías de las que dispone PHP (En proceso de desarrollo).

El sitio web deWikipedia está desarrollado en PHP.[16]​ Es también el móduloApache más popular entre las computadoras que utilizanApache como servidor web.

El gran parecido que posee PHP con los lenguajes más comunes deprogramación estructurada, comoC yPerl, permiten a la mayoría de losprogramadores crear aplicaciones complejas con unacurva de aprendizaje muy corta. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones.

Aunque todo en su diseño está orientado a facilitar la creación de sitios webs, es posible crear aplicaciones con unainterfaz gráfica de usuario, utilizando alguna extensión como puede serPHP-Qt,PHP-GTK,[17]​ WxPHP, WinBinder, Roadsend PHP, Phalanger, Phc o HiP Hop VM. También puede ser usado desde lalínea de comandos, de la misma manera comoPerl oPython pueden hacerlo; a esta versión de PHP se la llama PHP-CLI (Command Line Interface).[18]

Cuando el cliente hace una petición al servidor para que le envíe unapágina web, el servidor ejecuta elintérprete de PHP. Este procesa elscript solicitado que generará el contenido de manera dinámica (por ejemplo obteniendo información de una base de datos). El resultado es enviado por el intérprete al servidor, quien a su vez se lo envía al cliente.

Mediante extensiones es también posible la generación de archivosPDF,[19]Flash, así como imágenes en diferentes formatos.

Permite la conexión a diferentes tipos de servidores de bases de datos tantoSQL comoNoSQL tales comoMySQL,PostgreSQL,Oracle,ODBC,DB2,Microsoft SQL Server,Firebird,SQLite oMongoDB.[20]

PHP también tiene la capacidad de ser ejecutado en la mayoría de lossistemas operativos, tales comoUnix (y de ese tipo, comoLinux oMac OS X) yMicrosoft Windows, y puede interactuar con losservidores de web más populares ya que existe en versiónCGI, módulo paraApache eISAPI.

PHP es una alternativa a las tecnologías deMicrosoftASP yASP.NET (que utilizaC# yVisual Basic .NET como lenguajes), aColdFusion de la empresaAdobe, aJSP/Java,CGI/Perl y aNode.js/Javascript. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licenciaGNU, existe además un entorno de desarrollo integrado comercial llamadoZend Studio.CodeGear (la división de lenguajes de programación deBorland) ha sacado al mercado un entorno de desarrollo integrado para PHP, denominado 'Delphi for PHP. También existen al menos un par de módulos paraEclipse, uno de los entornos más populares.[21]

Historia

[editar]

Fue originalmente diseñado enPerl, con base en la escritura de un grupo deCGI binarios escritos en ellenguaje C por elprogramador danés-canadienseRasmus Lerdorf en el año 1994 para mostrar sucurrículum vítae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía. El 8 de junio de 1995 fue publicado «Personal Home Page Tools» después de que Lerdorf lo combinara con su propioForm Interpreter para crear PHP/FI.

Dos programadoresisraelíes delTechnion,Zeev Suraski yAndi Gutmans, reescribieron elanalizador sintáctico (parser, eninglés) en 1997 y crearon la base del PHP3, y cambiaron el nombre del lenguaje porPHP: Hypertext Preprocessor. Inmediatamente comenzaron experimentaciones públicas de PHP3, y se publicó oficialmente en junio de 1998. Para 1999, Suraski y Gutmans reescribieron el código de PHP, y produjeron lo que hoy se conoce comomotor Zend. También fundaronZend Technologies enRamat Gan,Israel.

En mayo del 2000, PHP 4 se lanzó bajo el poder delmotor Zend 1.0. El 13 de julio de 2007 se anunció la suspensión del soporte y desarrollo de la versión 4 de PHP,[22]​ y, a pesar de lo anunciado, se ha liberado una nueva versión con mejoras de seguridad, la 4.4.8, publicada el 13 de enero del 2008, y posteriormente la versión 4.4.9, publicada el 7 de agosto del 2008.[23]​ Según esta noticia,[24]​ se le dio soporte a fallos críticos hasta el 9 de agosto del 2008.

El 13 de julio de 2004, se lanzó PHP 5, utilizando el motor Zend Engine 2.0 (o Zend Engine 2). Incluye todas las ventajas que provee el nuevo Zend Engine 2, como:

En abril de 2020, más de la mitad de los sitios en la web que usaban PHP seguían en la versión descontinuada[25]​ 5.6 o anterior.[26]​ y con la versión 7.0 y 7.1 más del 68%, que no están oficialmente soportadas por The PHP Development Team,[27]​ mientras que el soporte de seguridad es proporcionado por terceros, comoDebian (hasta junio de 2020 para PHP 5).[28]​ Adicionalmente, la versión 7.2, la versión con soporte más popular, dejó de recibir actualizaciones de seguridad el 30 de noviembre de 2020.[25]

El 26 de noviembre de 2020 se presenta la actualización del lenguaje PHP a su versión 8.0 que más recursos y optimizaciones incluyendo argumentos nombrados, tipos de uniones, atributos, promoción de propiedades constructivas, expresionesmatch, operadornullsafe,JIT (traducción dinámica) y también mejoras en el sistema de tipos, manejo de errores y consistencia en general,[29]​ esta la cualllegara a su fin en noviembre del 2023, también considerando que a partir de lanzamiento de php 8.2 el 8 de noviembre del año 2022,Wordpress que ha logrado ser compatible al día siguiente el 9 de diciembre del 2022.[30]​ seguido delFrameworkCodeIgniter que actualmente ha expulsado a php7.4 de sus compatibilidades en sus nuevas actualizaciones.[31]

En enero de 2023, según W3Techs «PHP es utilizado por el 77.8 % de todos los sitios web que se ejecutan en el lado del servidor»[1]. También informa de que sólo el 8 % de los usuarios de PHP utilizan las versiones 8.x actualmente soportadas.[32]​ La última versión publicada de PHP es PHP 8.3.

PHP incluye soporte nativo para el paradigma de programación orientada a objetos desde la versión 5.0, lo que permite definir clases, herencia y encapsulación de manera formal.[33]

Historial de lanzamiento

[editar]
Significado
RojoVersión antigua, sin soporte
AmarilloCon soporte para errores de seguridad
VerdeCon soporte para errores generales y de seguridad
AzulLanzamiento futuro
RosaLanzamiento cancelado
VersiónFecha de lanzamientoFin de soporteNotas
1.008-06-1995Llamada oficialmente «Personal Home Page Tools (PHP Tools)». Es la primera versión en usar el nombre «PHP».[34]
2.001-11-1997Considerada por sus creadores la «herramienta más rápida y sencilla» para crear páginas web dinámicas.[34]
3.006-06-199820-10-2000Zeev Suraski y Andi Gutmans reescribieron la base para esta versión.[34]
4.022-05-200023-01-2001Se añadió un sistema de parsing de dos fases llamado motor Zend.[35]
4.110-12-200112-03-2002Se introducen 'superglobales' ($_GET,$_POST,$_SESSION, etc.)[35]
4.222-04-200206-09-2002Se deshabilitanregister_globals por defecto. Datos recibidos por la red no son insertados en el espacio de nombres global, cerrando posibles agujeros de seguridad en las aplicaciones.[35]
4.327-12-200231-03-2005Se introduceCLI, yCGI.[35][36]
4.411-07-200507-08-2008Se añaden páginas man paraphpize yphp-config.[35]
5.013-07-200405-09-2005Motor Zend II con un nuevo modelo de objetos.[37]
5.124-11-200524-08-2006Mejoras de rendimiento con la introducción de variables de compilador para el nuevo motor de PHP.[37]
5.202-11-200606-01-2011Actividad extensión de filtro por defecto. SoporteJSON nativo.[37]
5.330-06-200914-08-2014[38]Soporte para espacios de nombres, enlace estático en tiempo de ejecución, etiqueta de salto (GOTO limitada),Clausuras nativas, Soporte nativo para archivos PHP (phar), recolección de basura para referencias circulares, soporte mejorado paraWindows, sqlite3, mysqlnd como reemplazo a libmysql como biblioteca para extensiones que funcionan conMySQL, fileinfo como reemplazado de mime_magic para mejor soporteMIME, extensión de Internacionalización, y etiqueta ereg obsoleta.
5.401-03-201215-09-2015Soporte paraTrait y sintaxis abreviada de array. Elementos eliminados:register_globals,safe_mode,allow_call_time_pass_reference,session_register(),session_unregister() ysession_is_registered(). Servidor web incorporado.[39]​ Varias mejoras a características existentes y al rendimiento, y requerimientos de memoria menores.
5.520-06-201320-06-2016Nuevos generadores para bucles,empty() soporta expresiones. Se pierde el soporte para Windows XP y Windows Server 2003.[40]
5.620-08-201431-12-2018Constantes con expresiones escalares, listas de argumentos de longitud variable y exponencial mediante el operador **.[41]
6El desarrollo de PHP 6 ha sido retrasado porque los desarrolladores decidieron que el enfoque actual para tratar cadenas Unicode no es correcto, y están considerando formas alternas para la siguiente versión.[42]​ Las mejoras planeadas para PHP 6 fueron añadidas en su lugar en PHP 5.3.0 (Soporte para espacios de nombre, enlace estático en tiempo de ejecución, funciones lambda, clausuras, goto) y 5.4.0 (traits, revinculación de clausura).

Se abandonó la versión 6 de PHP siendo la siguiente versión la 7.[43]

7.003-12-2015[44]03-12-2018Mejoras de rendimiento ,[45]​ declaración de tipos de retorno en funciones[46]
7.101-12-2016[47][48]01-12-2019Tipo de retorno vacío,[49]​ Clase constante modificadores de visibilidad,[50]​ Tipos nullable,[51]​ iterable de tipo seudo,[52]​ Captura múltiples tipos de excepciones.[53]
7.230-11-201730-11-2020Nuevo tipo de retorno «object»,[54]​ integración de Libsodium como una extensión del núcleo[55]
7.36-12-20186-12-2021Sintaxis flexible para Nowdoc y Heredoc, soporte para referencias y deconstrucción de arrays con list(), soporte para PCRE2, función hrtime()
7.428-11-201928-11-2022PHP 7.4 llegó al final de su vida útil el 28 de noviembre de 2022.
8.026-11-202026-11-2023Ingresadas Nuevas características e incremento de rendimiento
8.125-11-202125-11-2024Propiedades «readonly», «enums», «fiber» y nuevas sintaxis
8.208-12-202208-12-2025Creación de propiedades dinámicas esta desaprobada y es agregado el atributo AllowDynamicProperties[56]
8.323-11-202323-11-2026Tipado de constantes, atributo override y nuevos métodos para obtener valores aleatorios.[57]
8.421-11-202431-12-2026Limpieza de código obsoleto, y nuevas características como hooks y visibilidad asimétrica[58]
8.520-11-202531-12-2027Operador pipe|>

Sintaxis

[editar]

Lasintaxis de PHP, se fundamenta en los principios deprogramación deC.

El intérprete de PHP solo ejecuta el código que se encuentra entre sus delimitadores. Los delimitadores más comunes son<?php para abrir una sección PHP y?> para cerrarla. El propósito de estos delimitadores es separar el código PHP del resto de código, como por ejemplo elHTML.[59]​ En los archivos que contienen solo código PHP, el delimitador?> se puede omitir. De hecho, PHP-FIG a través de sus recomendaciones estándar para PHP recomienda omitir el delimitador?>, ya que así no se envía contenido HTML de manera accidental. Por ejemplo, si se envía un carácter «no PHP» (que no es procesado por el intérprete de PHP), no se podrán ejecutar ciertas acciones como enviar encabezados HTTP a través de la funciónheader(), ya que el proceso de respuesta ya ha comenzado.

Las variables se prefijan con el símbolo del dólar ($) y no es necesario indicar su tipo. Las variables, a diferencia de las funciones, distinguen entre mayúsculas y minúsculas. Las cadenas de caracteres pueden ser encapsuladas tanto en dobles comillas como en comillas simples, aunque en el caso de las primeras, se pueden insertar variables en la cadena directamente, sin necesidad de concatenación.

Los comentarios se pueden escribir bien con dosbarras (//) al principio de la línea, o con unaalmohadilla (#). También permite comentarios multi-línea encapsulados en/* */.

En cuanto a las palabras clave, PHP comparte con la mayoría de otros lenguajes con sintaxis C las condiciones conif, los bucles confor ywhile y los retornos de funciones. Habitualmente en este tipo de lenguajes, las sentencias deben acabar con punto y coma (;).

Ejemplos de código en PHP Básico

[editar]

ProgramaHola mundo con PHP inmerso dentro de códigoHTML:

<!DOCTYPE html><htmllang="es"dir="ltr"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>Ejemplo básico PHP</title></head><body><?php    echo 'Hola mundo';  ?></body></html>

ProgramaHola mundo con PHP en forma de app monolítica:

<?php// Area de cabeceras, constantes e includes (inicialización de la aplicación)// Encabezado solo para demostración, no es necesarioheader('Content-Type: text/html; charset=UTF-8');$respuesta='';// Lógica de la aplicación, como obtener usuario de la sesión, contenido, etc.// Este código podría venir de una plantilla externa para una fácil reutilización$respuesta.='<!DOCTYPE html>';$respuesta.='<html lang="es">';$respuesta.='';$respuesta.='<head>';$respuesta.='  <meta charset="UTF-8" />';$respuesta.='  <meta name="viewport" content="width=device-width, initial-scale=1.0" />';$respuesta.='  <title>Ejemplo básico de PHP</title>';$respuesta.='</head>';$respuesta.='';$respuesta.='<body>';$respuesta.='  <h1>Hola mundo!</h1>';$respuesta.='</body>';$respuesta.='';$respuesta.='</html>';// Envía respuestaecho$respuesta;// Notar que no se cierra la "etiqueta" <?php. PHP-FIG recomienda esta práctica en// archivos que contienen solo código PHP para así no enviar contenido HTML de// manera accidental.

ProgramaHola mundo con PHP respondiendo en formato JSON:

<?php// Archivo respuesta_json.php// Le comunica al navegador que la respuesta será JSONheader('Content-Type: application/json; charset=UTF-8');$respuesta=['mensaje'=>'Hola mundo!'];echojson_encode($respuesta);// No se cierra la "etiqueta" <?php ya que el archivo contiene solo código PHP

El lado del cliente que realizará petición al archivo PHP:

<!DOCTYPE html><htmllang="es"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width, initial-scale=1.0"/><title>Ejemplo de respuesta en formato JSON desde PHP</title></head><body><div><h2>Respuesta en texto plano</h2><pre><codeid="respuesta-plana"></code></pre></div><div><h2>Respuesta procesada (campo «mensaje» de la respuesta JSON)</h2><pre><codeid="respuesta-procesada"></code></pre></div><script>document.addEventListener('DOMContentLoaded',()=>{constcontenedorRespuestaPlana=document.querySelector('#respuesta-plana');constcontenedorRespuestaProcesada=document.querySelector('#respuesta-procesada');// Realiza petición asíncrona al archivo de phpfetch('respuesta_json.php').then(respuesta=>respuesta.json())// Transforma la respuesta a un objeto JSON.then(respuestaJson=>{// respuestaJson es un objeto con el formato { mensaje: "Hola mundo!" }contenedorRespuestaPlana.innerHTML=JSON.stringify(respuestaJson);contenedorRespuestaProcesada.innerHTML=respuestaJson.mensaje;});// manejar errores con .catch()});</script></body></html>

Bases de datos (MySQL)

[editar]

PHP puede combinarse conMySQL para trabajar con bases de datos, aunque también se pueden utilizar otros motores de base de datos comoMicrosoft SQL Server,PostgreSQL,MongoDB, entre otros.

El siguiente ejemplo se muestra el inicio de sesión con usuario y contraseña utilizando MySQL y PHP con el estilo orientado a objetos:

<?php// Conexión a la base de datos local 'sitio'. Normalmente esto vendría de un// servicio externo que se reutiliza en todo el sitio.$conexion=newPDO('mysql:host=127.0.0.1;dbname=sitio','root','',[// Lanza excepción si ocurre un error, así el gestor de errores tomará las acciones necesarias// como mostrar un error 500 o terminar la ejecución del sistema. Nótese que no se utiliza// try-catch acá para delegarle la responsabilidad al gestor de errores.PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,// Desactiva emulación de sentencias preparadas (solo las nativas son seguras)PDO::ATTR_EMULATE_PREPARES=>false,]);// Se obtienen los datos enviados por el formulario// Para la simplicidad de la demostración se utiliza el operador coalesce (??)$nombre_usuario=trim($_POST['nombre_usuario']??'');// Se eliminan los espacios al inicio y al final$contrasena=$_POST['contrasena']??'';// La contraseña se deja tal cual, sin trim()// Solo actuar si el formulario ha sido enviado con datosif(isset($_POST['enviar'])&&!empty($nombre_usuario)&&!empty($contrasena)){// Consulta para buscar el usuario en la base de datos// Se utilizan sentencias preparadas para prevenir inyecciones SQL$consulta_usuario=$conexion->prepare('SELECT * FROM usuarios WHERE nombre_usuario = ? LIMIT 1');$consulta_usuario->execute([$nombre_usuario]);// Verifica si se ha encontrado un usuarioif($consulta_usuario->rowCount()>0){// Obtiene los datos del usuario$usuario_encontrado=$consulta_usuario->fetch(PDO::FETCH_ASSOC);// Comprobar si la contraseña enviada es correcta// Utiliza algoritmos seguros como BCrypt o Argon2iif(password_verify($contrasena,$usuario_encontrado['contrasena'])){// Credenciales correctas, iniciar sesión}else{// Credenciales incorrectas, mostrar mensaje de error}}else{// Nombre de usuario no existe, mostrar mensaje de error// Nótese que, por seguridad, aquí y arriba se debe mostrar un error// genérico como "Credenciales incorrectas", así de esta forma un posible// atacante no sabrá si ha ingresado el nombre de usuario correcto}}// No se cierra la "etiqueta" <?php ya que el archivo contiene solo código PHP

El siguiente ejemplo hace lo mismo que el anterior, pero con la seguridad de que sea cual sea el estado medio del servicio, si no hay forma de conectar, se destruirá la clase y se cerrará lo adjunto a sus hilos.

bórrese Bórrese

<?php//Archivo BD_access.class.phpclassinterfazSesion{public$conexion;public$BD_ACCESS;public$HOST_ACCESS;public$USER_ACCESS;public$PWD_ACCESS;public$error;publicfunction__construct(array$args){$salida='';try{if((null!==$args['BD_ACCESS'])&&(null!==$args['HOST_ACCESS'])&&(null!==$args['USER_ACCESS'])&&(null!==$args['PWD_ACCESS'])){//Construimos la clase$this->BD_ACCESS=$args['BD_ACCESS'];$this->HOST_ACCESS=$args['BD_ACCESS'];$this->USER_ACCESS=$args['BD_ACCESS'];$this->PWD_ACCESS=$args['BD_ACCESS'];}else{thrownewException('Error de construccion del interfaz de conexion a datos: No se suministran todos los argumentos',400);}}catch(Exception$e){die('"{error":"'.$e->getMessage.'}"');}finally{// Conectar al servidor MySQL y seleccionar la base de datos con el nombre 'login'$this->conexion=@newmysqli($this->HOST_ACCESS,$this->USER_ACCESS,$this->PWD_ACCESS,$this->BD_ACCESS);}try{if(!$this->conexion){thrownewException('Error de conexión a la base de datos: los argumentos introducidos no son suficientes para crear una conexión',410);}}catch(Exception$e){die('"{error":"'.$e->getMessage.'}"');}finally{$salida='{"Ok":"La conexión se ha realizado"}';}$this->error=$salida;}publicfunctionconsultaSQL(string$queSQLquery):string{$salida='';// Consulta para buscar los usuarios en la base de datos$consulta_usuario=$this->conexion->query($queSQLquery);// Verificar que se ha encontrado un usuarioif($consulta_usuario->num_rows>0){// Obtener los datos del usuario en forma de un array asociativo$usuario_encontrado=$consulta_usuario->fetch_assoc();// Comprobar si la contraseña utilizada es la misma que la que está en la base de datosif($contrasena===$usuario_encontrado['contrasena']){// Texto de exito$salida='{"Ok":"Has iniciado la sesión correctamente"}';}else{// Texto de error$salida='{"error":"La contraseña utilizada no es correcta"}';}}else{// Texto de error$salida='{"error":"El usuario introducido no existe"}';}// Cerrar la conexión$this->conexion->close();return$salida;}}?><?php//Archivo cabecera.h.php// Solo mostrar errores fatales, de parseo y advertencias para el ejemploerror_reporting(E_ERROR|E_PARSE|E_WARNING);//Inclusion de clases para instancias de gestion$seHaIncluido=include_once(BD_access.class.php);if($seHaIncluido){// Comprobar que el formulario fue enviado utilizando el boton enviarif(isset($_POST['enviar'])){//Iniciando variables$usuario='';$contrasena='';// Obtener los datos enviados por método POST y borrar los espacios en blanco del inicio y del final$usuario=trim($_POST['usuario']);$contrasena=sha1(trim($_POST['contrasena']));//Comprobacion de que las variables no están vacíasif(!empty($usuario)&&!empty($contrasena)){$args=array('BD_ACCESS'=>'usuarios','HOST_ACCESS'=>'localhost','USER_ACCESS'=>'root','PWD_ACCESS'=>'sin_contrasenia'){//Se instancian los objetos asociados a las clases correspondientes$misAccesos=newinterfazSesion($args);$estadoConn=JSON.decode($misAccesos->error);if(isset($estadoConn['Ok'])){$estadoQuery=$misAccesos->consultaSQL("SELECT * FROM usuarios WHERE usuario = '$usuario' LIMIT 1");echo'{"salida":"'.$estadoQuery.'"}';}elseif(isset($estadoConn['error'])){echo'{"error":"'.$estadoQuery.'"}';}}else{echo'{"error":"campos del formulario con datos no reconocidos"}';}}else{echo'{"error":"intento de acceso no permitido"}';}}?>

Como servicio REST

[editar]

Los serviciosREST se fundamentan en tres conceptos fundamentales:

  • Concepto de recurso
  • Concepto de itinerancia
  • Concepto deAPI

Características de PHP

[editar]

Características

[editar]
  • Orientado al desarrollo deaplicaciones web dinámicas con acceso a información almacenada en unabase de datos.
  • El modelo de ejecución de PHP es «síncrono a la petición» (modelosingle-request-per-script-execution) : la recepción de una petición activa la ejecución del script PHP y, a continuación, el resultado generado se devuelve a la salida. Como resultado, un sistema con PHP difícilmente puede quedar paralizado por un error, ya que la ejecución del script se reinicia con cada petición. Esto contrasta, por ejemplo, con los lenguajes en los que el programa se compila y ejecuta dentro de un «ejecutable», que dejará de funcionar si se produce un error.
  • Es considerado un lenguaje fácil de aprender, ya que en su desarrollo se simplificaron distintas especificaciones, como es el caso de la definición de las variables primitivas, ejemplo que se hace evidente en el uso dephp arrays.
  • El código fuente escrito en PHP es invisible alnavegador web y al cliente, ya que es el servidor el que se encarga de ejecutar el código y enviar su resultado (habitualmente, un contenido HTML hacia el navegador).
  • Capacidad de conexión con la mayoría de los motores de base de datos que se utilizan en la actualidad, destaca su conectividad conMySQL yPostgreSQL.
  • Capacidad de expandir su potencial utilizando módulos (llamados extensiones).
  • Posee una amplia documentación en su sitio web oficial, entre la cual se destaca que todas las funciones del sistema están explicadas y ejemplificadas en un único archivo de ayuda.
  • Eslibre, por lo que se presenta como una alternativa de fácil acceso para todos.
  • Permite aplicar técnicas deprogramación orientada a objetos.
  • No requiere definición de tipos de variables aunque sus variables se pueden evaluar también por el tipo que estén manejando entiempo de ejecución.
  • Tienemanejo de excepciones (desde PHP5).
  • Si bien PHP no obliga a quien lo usa a seguir una determinada metodología a la hora de programar, aun haciéndolo, el programador puede aplicar en su trabajo cualquier técnica de programación o de desarrollo que le permita escribir código ordenado, estructurado y manejable. Un ejemplo de esto son los desarrollos que en PHP se han hecho delpatrón de diseñoModelo Vista Controlador (MVC), que permiten separar el tratamiento y acceso a los datos, lalógica de control y lainterfaz de usuario en tres componentes independientes.
  • Debido a su flexibilidad, ha tenido una gran acogida como lenguaje base para las aplicaciones WEB de manejo de contenido, y es su uso principal.

Inconvenientes

[editar]
  • Como es un lenguaje que se interpreta en ejecución, para ciertos usos puede resultar un inconveniente que el código fuente no pueda ser ocultado. Laofuscación es una técnica que puede dificultar la lectura del código pero no necesariamente impide que el código sea examinado.
  • Debido a que es un lenguaje interpretado, un script en PHP suele funcionar considerablemente más lento que su equivalente en un lenguaje de bajo nivel, sin embargo este inconveniente se puede minimizar con técnicas decaché tanto en archivos como en memoria.
  • En las versiones previas a la 7, las variables no son tipificadas, lo cual dificulta a los diferentes IDEs ofrecer asistencias para el tipificado del código, aunque esto no es realmente un inconveniente del lenguaje en sí. Esto es solventado por algunos IDEs añadiendo un comentario con el tipo a la declaración de la variable.
  • El hecho de que este lenguaje se ejecute a partir de una petición (modelosingle-request-per-script-execution) hace difícil la realización de tareas asíncronas o permanentes (ex: crawler, cálculos a largo plazo etc.) ;

Desafíos

[editar]

Una de las dificultades que enfrentan las empresas para actualizar a las versiones más altas actuales de los lenguajes de programación es la compatibilidad con el código existente contrastado las mejoras. Muchas veces, el código antiguo utiliza funciones o sintaxis que han sido modificadas o eliminadas en las nuevas versiones, lo que genera errores o incompatibilidades.[60]​ Además, las empresas deben invertir tiempo y recursos en capacitar a sus programadores para que se adapten a los cambios y puedan aprovechar las nuevas características y ventajas de los lenguajes actualizados. El desafío de cambiar las versiones de PHP también puede ser que algunas bibliotecas, complementos y extensiones utilizados en la aplicación también necesiten actualizarse. Si estos no se actualizan, pueden generar conflictos o errores en la aplicación.

XAMPP, LAMP, WAMP, MAMP, UwAmp

[editar]
LaLAMP comprende PHP (aquí conSquid).

XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor webApache y los intérpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl. El programa está liberado bajo la licencia GNU y actúa como un servidor web libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP está disponible para Microsoft Windows, GNU/Linux, Solaris, y MacOS X.

Es un software «liviano» que se puede utilizar en cualquier PC. No necesita muchos recursos.

LAMP presenta una funcionalidad parecida a XAMPP, pero enfocada en Linux,WAMP lo hace enfocado en Windows, yMAMP para MacOS X. UwAmp es muy idéntico a WAMP y se destaca en que se puede ejecutar desde una memoria USB.

Principales sitios desarrollados con PHP

[editar]

Se utiliza PHP en millones de sitios; entre los más destacados se encuentran:

Gestores de paquetes en PHP

[editar]

Losgestores de paquetes en PHP permiten integrar bibliotecas y extensiones en las aplicaciones.Cada sistema ofrece un enfoque distinto sobre la instalación, el alcance de las dependencias y la manera en que se utilizan en el código.Entre los principales gestores de paquetes se encuentranComposer,PEAR,PECL yPIE.[61][62]

Composer

[editar]

Composer es un gestor de dependencias que funciona a nivel de proyecto.Las bibliotecas instaladas quedan disponibles únicamente para la aplicación en la que se integran, lo que permite entornos aislados y reproducibles.[63]​Se utiliza principalmente para incorporar librerías externas en proyectos específicos, con atención al versionamiento de estas dependencias.[64]

Véase también

[editar]

Notas

[editar]
  1. Un término formado por la letra inicial de una o varias palabras o parte de palabras, pero que se pronuncia letra por letra, a diferencia del acrónimo.[6]

Referencias

[editar]
  1. https://www.php.net/ChangeLog-8.php
  2. «En un lenguaje compilado, la máquina de destino traduce directamente el programa.PHP es un lenguaje de scripting del lado del servidor que permite el desarrollo de aplicaciones web dinámicas y es compatible con múltiples sistemas operativos y servidores, facilitando la integración con bases de datos como MySQL y PostgreSQL. En un lenguaje interpretado, el código fuente no es directamente traducido por la máquina de destino. En cambio, un distinto programa, mejor conocido como intérprete, lee el código y lo ejecuta.». Archivado desdeel original el 21 de enero de 2023. Consultado el 21 de enero de 2023. 
  3. «PHP: Hypertext Preprocessor».www.php.net. Consultado el 4 de junio de 2020. 
  4. «PHP: History of PHP - Manual».www.php.net. Consultado el 4 de junio de 2020. 
  5. «PHP: Historia de PHP y Proyectos Relacionados - Manual».www.php.net. Consultado el 4 de junio de 2020. 
  6. «inicialismo». Consultado el 3 de junio de 2020. 
  7. «PHP: Preface - Manual».www.php.net. Consultado el 4 de junio de 2020. 
  8. «PHP: What can PHP do? - Manual».www.php.net. Consultado el 4 de junio de 2020. 
  9. jolicode/php-ar-drone, JoliCode, 21 de mayo de 2020, consultado el 4 de junio de 2020 .
  10. «Usage Statistics and Market Share of PHP for Websites, November 2025».w3techs.com. Consultado el 7 de noviembre de 2025. 
  11. Jackson, Joab (31 de julio de 2014).«PHP gets a formal specification, at last».ITworld(en inglés). Consultado el 4 de junio de 2020. 
  12. ["https://wiki.php.net/rfc/object-typehint" «"PHP 7 introduced scalar types for parameters and also for declaring return types for functions."»](en inglés). "https://wiki.php.net/rfc/object-typehint#introduction". Consultado el 7 de julio de 2019. 
  13. «NaCl: Networking and Cryptography library»(en inglés).https://www.php.net/manual/es/book.sodium.php. Consultado el 7 de julio de 2019. 
  14. «NaCl library for encryption, decryption, signatures, password hashing and more. url=https://download.libsodium.org/doc/»(en inglés).https://download.libsodium.org/doc/#offline-documentation. Falta la|url= (ayuda);|fechaacceso= requiere|url= (ayuda)
  15. «Sodium is a modern, easy-to-use software library.».https://www.php.net/docs.php. Consultado el 7 de julio de 2019. 
  16. «Historical trends in the usage of server-side programming languages for websites»(en inglés). W3Techs. Consultado el 10 de septiembre de 2013. 
  17. «PHP-GTK»(en inglés). PHP Group. Consultado el 10 de septiembre de 2013. 
  18. «PHP: Funcionamiento en línea de comandos». PHP Group. Consultado el 10 de septiembre de 2013. 
  19. «dompdf - HTML to PDF converter (PHP5)»(en inglés). Consultado el 10 de septiembre de 2013. 
  20. «PHP: Extensiones de bases de datos - Manual». PHP Group. Consultado el 10 de septiembre de 2013. 
  21. Existen tantoPHPEclipse comoPDT for Eclipse. Véansehttp://www.phpeclipse.comArchivado el 18 de marzo de 2009 enWayback Machine. yhttp://www.eclipse.org/pdt
  22. PHP: News Archives 2007 (en inglés). Consultado 9 de diciembre de 2007.
  23. PHP: News Archives 2008 (en inglés).
  24. Archivo: 13 de julio de 2007 PHP.net.
  25. ab«PHP: Supported Versions».www.php.net. Consultado el 4 de junio de 2020. «End of life: Una liberación que ya no tiene soporte. Los usuarios de esta versión deben actualizarse lo antes posible, ya que pueden estar expuestos a vulnerabilidades de seguridad sin parches». 
  26. «Usage Statistics and Market Share of PHP for Websites, June 2020».w3techs.com. Consultado el 4 de junio de 2020. 
  27. «PHP: Unsupported Branches».www.php.net. Consultado el 4 de junio de 2020. 
  28. «LTS/Jessie - Debian Wiki».wiki.debian.org. Consultado el 4 de junio de 2020. 
  29. «PHP 8.0 es una actualización importante del lenguaje PHP».php.net. Archivado desdeel original el 21 de diciembre de 2022. Consultado el 30 de enero de 2023. 
  30. «PHP 8.2 is Now Available on WordPress.com». Archivado desdeel original el 15 de diciembre de 2022. Consultado el 30 de enero de 2023. 
  31. «Dev: drop PHP 7.4 support #6921». Archivado desdeel original el 28 de enero de 2023. Consultado el 30 de enero de 2023. 
  32. «Bye, Bye Php7.4, y ahora que va a pasar?, te lo explico». Archivado desdeel original el 15 de enero de 2023. Consultado el 23 de febrero de 2023. 
  33. https://www.php.net/manual/es/language.oop5.php
  34. abc«History of PHP and related projects». The PHP Group. Consultado el 25 de febrero de 2008. 
  35. abcde«PHP: PHP 4 ChangeLog». The PHP Group. 3 de enero de 2008. Consultado el 22 de febrero de 2008. 
  36. «PHP: Using PHP from the command line - Manual:». The PHP Group. Consultado el 11 de septiembre de 2009. 
  37. abc«PHP: PHP 5 ChangeLog». The PHP Group. 8 de noviembre de 2007. Consultado el 22 de febrero de 2008. 
  38. «Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL». PHP. Consultado el 20 de septiembre de 2013. 
  39. «Built-in web server». Consultado el 26 de marzo de 2012. 
  40. «What has changed in PHP 5.5.x». Archivado desdeel original el 5 de abril de 2018. Consultado el 13 de abril de 2013. 
  41. «Migrating from PHP 5.5.x to PHP 5.6.x». Archivado desdeel original el 25 de abril de 2015. Consultado el 20 de septiembre de 2014. 
  42. «PHP 6: Features, Release Date, Hosting and Download». Consultado el 6 de mayo de 2011. 
  43. «Nombre de la próxima versión de PHP». Consultado el 24 de julio de 2014. 
  44. «Downloads archive». 3 de diciembre de 2015. Consultado el 3 de diciembre de 2024. 
  45. «Benchmarking PHPNG!». 
  46. «PHP RFC: Return Type Declarations». 
  47. «Preparation Tasks». Consultado el 5 de julio de 2016. 
  48. «PHP 7.1.0 GA - Externals».externals.io. Consultado el 30 de noviembre de 2016. 
  49. «PHP: rfc:void_return_type».php.net. 9 de noviembre de 2015. Consultado el 14 de noviembre de 2015. 
  50. «PHP: rfc:class_constant_visibility».php.net. 27 de octubre de 2015. Consultado el 8 de diciembre de 2015. 
  51. «PHP RFC: Nullable Types».php.net. 10 de abril de 2014. Consultado el 14 de junio de 2016. 
  52. «PHP RFC: Iterable».php.net. 10 de junio de 2016. Consultado el 19 de febrero de 2017. 
  53. «PHP RFC: Catching Multiple Exception Types».php.net. 6 de marzo de 2016. Consultado el 19 de febrero de 2017. 
  54. «PHP: rfc:object-typehint».wiki.php.net. Consultado el 20 de diciembre de 2017. 
  55. «PHP: rfc:libsodium».wiki.php.net. Consultado el 20 de diciembre de 2017. 
  56. «PHP: rfc:deprecate_dynamic_properties».wiki.php.net. Consultado el 23 de agosto de 2021. 
  57. «PHP: PHP 8.3.0 Release Announcement». Consultado el 20 de marzo de 2024. 
  58. «PHP: rfc:php 8.4».php.net. Consultado el 2 de enero de 2025. 
  59. «PHP: Sintaxis básica». Consultado el 13 de abril de 2013. 
  60. «¡Ayuda! He actualizado PHP y ahora mi sitio web no funciona». 
  61. Daubois, Alexandre.«PIE: The Future of PHP Extension Management»(en inglés). IPC. Consultado el 6 de octubre de 2025. 
  62. «Difference between PEAR,PECL and Composer»(en inglés). Consultado el 6 de octubre de 2025. 
  63. Composer Team (ed.).«Composer»(en inglés). Consultado el 3 de octubre de 2025. 
  64. PHP Manual (ed.).«Instalación de Composer». Consultado el 3 de octubre de 2025. 

Enlaces externos

[editar]
Control de autoridades

Obtenido de «https://es.wikipedia.org/w/index.php?title=PHP&oldid=172090736»
Categorías:
Categorías ocultas:

[8]ページ先頭

©2009-2026 Movatter.jp