0% encontró este documento útil (0 votos)
9 vistas

Contenidos: Menú Principal

PHP es un lenguaje de programación interpretado del lado del servidor ampliamente utilizado para el desarrollo web. Fue creado en 1994 y es utilizado por más de 20 millones de sitios web, incluyendo Wikipedia. PHP puede ser utilizado para crear aplicaciones web dinámicas así como también aplicaciones de escritorio y línea de comandos. Es de código abierto y multiplataforma, funcionando en la mayoría de sistemas operativos y servidores web.

Cargado por

dwdfwf
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas

Contenidos: Menú Principal

PHP es un lenguaje de programación interpretado del lado del servidor ampliamente utilizado para el desarrollo web. Fue creado en 1994 y es utilizado por más de 20 millones de sitios web, incluyendo Wikipedia. PHP puede ser utilizado para crear aplicaciones web dinámicas así como también aplicaciones de escritorio y línea de comandos. Es de código abierto y multiplataforma, funcionando en la mayoría de sistemas operativos y servidores web.

Cargado por

dwdfwf
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 24

Menú principal









Buscar Ir

• Crear una cuenta


• Acceder
Herramientas personales


Contenidos
ocultar

Inicio


Visión general


Historia
Alternar subsección Historia
o
Historial de lanzamiento


Sintaxis
Alternar subsección Sintaxis
o
Ejemplos de código en PHP Básico

o
Bases de datos (MySQL)

o
Como servicio REST


Características de PHP
Alternar subsección Características de PHP
o
Características

o
Inconvenientes

o
Desafíos

o
XAMPP, LAMP, WAMP, MAMP, UwAmp

o
Principales sitios desarrollados con PHP


Véase también


Notas


Referencias


Enlaces externos

PHP
113 idiomas
• Artículo
• Discusión
• Leer
• Editar
• Ver historial
Herramientas















Para otros usos de este término, véase PHP (desambiguación).

PHP

Desarrollador(es)

PHP Group
https://www.php.net

Información general

Extensiones .php , .phtml , .php3 , .php4 , .php5 , .php7 , .phps , .php-


comunes s , .pht , .phar

Paradigma Multiparadigma: imperativo, funcional, orientado a


objetos, procedural, reflexivo

Apareció en 1995

Diseñado por Rasmus Lerdorf

Última versión 8.2.61 (11 de mayo de 2023 (29 días))


estable

Sistema de tipos Dinámico, débil

Implementaciones Motor Zend, HHVM, Phalanger, Quercus, Project Zero, Parrot

Influido por Perl, C, C++, Java, Tcl


Ha influido a Falcon, Hack

Sistema operativo Unix-like, Windows

Licencia Licencia PHP

[editar datos en Wikidata]

PHP es un lenguaje de programación interpretado2 del lado del servidor y de uso


general que se adapta especialmente al desarrollo web.3 Fue creado inicialmente
por el programador danés-canadiense Rasmus Lerdorf en 1994.4 En la actualidad,
la implementación de referencia de PHP es producida por The PHP Group.5 PHP
originalmente significaba Personal Home Page (Página personal), pero ahora
significa el inicialismon 1 recursivo PHP: Hypertext Preprocessor.7
El código PHP suele ser procesado en un servidor web por un intérprete PHP
implementado como un módulo, un daemon o como un ejecutable de interfaz 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
el HTML generado o datos de imágenes binarias— formaría la totalidad o parte de
una respuesta HTTP. Existen diversos sistemas de plantillas, sistemas de gestión
de contenidos y frameworks 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, como aplicaciones
gráficas autónomas8 y el control de drones.9 También se puede interpretar y
ejecutar un código PHP cualquiera a través de una interfaz de línea de
comandos (CLI).
El intérprete estándar de PHP, impulsado por Motor Zend, es un software
libre publicado bajo Licencia PHP. PHP ha sido ampliamente portado y puede ser
desplegado en la mayoría de los servidores web en casi todos los sistemas
operativos y plataformas, de forma gratuita.
El lenguaje PHP evolucionó sin una especificación formal escrita o un estándar
hasta 2014, con la implementación original actuando como el estándar de
facto que otras implementaciones intentaban seguir. Desde 2014, se ha trabajado
para crear una especificación formal de PHP.10

Visión general[editar]
PHP puede ser desplegado en la mayoría de los servidores web y en todos los
sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra
instalado en más de 20 millones de sitios 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 como Node.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, 11 manejo de
números enteros, tratamiento de la criptografía cuando se usa una Base64,121314
Web scraping, indexación de webs, precocinado de datos, Macrodatos, set de
datos, supervisión de datos, set de proposiciones dimensionales. Como vemos,
una visión general de este lenguaje, es mucho más compleja que afirmar que es
un lenguaje para desarrollo web. Dicha realidad, subyace en la aparición de
dominios xyz, cuya finalidad y especialidad es el cacheado de los servicios PHP
para servir contenido con una orientación al desempeño vinculada a servicios para
consumo de otros servicios que necesitan datos, tales como I.A.s. donde PHP
está viendo una acogida con un sentimiento de confianza en los resultados a
obtener (sin pretender servir de lenguaje en sí mismo orientado a la I.A., dado que
no fue su conceptualización origen). Aunque el marketing que está recibiendo este
tipo de dominios, está relacionado con las nuevas generaciones de personas
educadas en las nuevas tecnologías 15 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 de Wikipedia está desarrollado en PHP.16 Es también el
módulo Apache más popular entre las computadoras que utilizan Apache como
servidor web.
El gran parecido que posee PHP con los lenguajes más comunes
de programación estructurada, como C y Perl, permiten a la mayoría de
los programadores crear aplicaciones complejas con una curva 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 una interfaz gráfica de usuario, utilizando alguna
extensión como puede ser PHP-Qt, PHP-GTK,17 WxPHP, WinBinder, Roadsend
PHP, Phalanger, Phc o HiP Hop VM. También puede ser usado desde la línea de
comandos, de la misma manera como Perl o Python 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 una página web,
el servidor ejecuta el intérprete de PHP. Este procesa el script 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 archivos PDF,19 Flash,
así como imágenes en diferentes formatos.
Permite la conexión a diferentes tipos de servidores de bases de datos
tanto SQL como NoSQL tales
como MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL
Server, Firebird, SQLite o MongoDB.20
PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas
operativos, tales como Unix (y de ese tipo, como Linux o Mac OS X) y Microsoft
Windows, y puede interactuar con los servidores de web más populares ya que
existe en versión CGI, módulo para Apache, e ISAPI.
PHP es una alternativa a las tecnologías de Microsoft ASP y ASP.NET (que
utiliza C# y Visual Basic .NET como lenguajes), a ColdFusion de la
empresa Adobe, a JSP/Java, CGI/Perl y a Node.js/Javascript. Aunque su creación
y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe
además un entorno de desarrollo integrado comercial llamado Zend
Studio. CodeGear (la división de lenguajes de programación de Borland) 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 para Eclipse, uno
de los entornos más populares.21

Historia[editar]
Fue originalmente diseñado en Perl, con base en la escritura de un grupo
de CGI binarios escritos en el lenguaje C por el programador danés-
canadiense Rasmus Lerdorf en el año 1994 para mostrar su currí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 propio Form Interpreter para crear PHP/FI.
Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans,
reescribieron el analizador sintáctico (parser, en inglés) en 1997 y crearon la base
del PHP3, y cambiaron el nombre del lenguaje por PHP: 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 como motor Zend. También
fundaron Zend Technologies en Ramat Gan, Israel.
En mayo del 2000, PHP 4 se lanzó bajo el poder del motor 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:

• Mejor soporte para la programación orientada a objetos, que en


versiones anteriores era extremadamente rudimentario.
• Mejoras de rendimiento
• Mejor soporte para MySQL con extensión completamente reescrita
• Mejor soporte a XML (XPath, DOM, etc.)
• Soporte nativo para SQLite
• Soporte integrado para SOAP
• Iteradores de datos
• Manejo de excepciones
• Mejoras con la implementación con Oracle
En abril de 2020, más de la mitad de los sitios en la web que usaban PHP seguían
en la versión descontinuada25 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,
como Debian (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 noviembre del 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,
expresiones match, operador nullsafe, JIT (traducción dinámica) y también
mejoras en el sistema de tipos, manejo de errores y consistencia en general. 29,
esta la cual llegara 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
del Framework CodeIgniter 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.2. y se prevé que hasta noviembre
de 2023 no habrá ningún otro lanzamiento.
Historial de lanzamiento[editar]

Significado

Rojo Versión antigua, sin soporte

Amarillo Con soporte para errores de seguridad

Verde Con soporte para errores generales y de seguridad


Azul Lanzamiento futuro

Rosa Lanzamiento cancelado

Fech
Fin
Ve a de
de
rsi lanz Notas
sop
ón amie
orte
nto

08-
Llamada oficialmente "Personal Home Page Tools (PHP Tools)". Es la primera
1.0 06-
versión en usar el nombre "PHP".33
1995

01-
Considerada por sus creadores la "herramienta más rápida y sencilla" para crear
2.0 11-
páginas web dinámicas.33
1997

20-
06-
10-
3.0 06- Zeev Suraski y Andi Gutmans reescribieron la base para esta versión.33
200
1998
0

23-
22-
01-
4.0 05- Se añadió un sistema de parsing de dos fases llamado motor Zend.34
200
2000
1

12-
10-
03- Se introducen 'superglobales' ( $_GET , $_POST , $_SESSION , etc.)34
4.1 12-
200
2001
2

06- Se deshabilitan register_globals por defecto. Datos recibidos por la red no


22-
09-
4.2 04- son insertados en el espacio de nombres global, cerrando posibles agujeros de
200
2002 seguridad en las aplicaciones.34
2
31-
27-
03-
4.3 12- Se introduce CLI, y CGI.3435
200
2002
5

07-
11-
08- Se añaden páginas man para phpize y php-config .34
4.4 07-
200
2005
8

05-
13-
09-
5.0 07- Motor Zend II con un nuevo modelo de objetos.36
200
2004
5

24-
24-
08- Mejoras de rendimiento con la introducción de variables de compilador para el
5.1 11-
200 nuevo motor de PHP.36
2005
6

06-
02-
01-
5.2 11- Actividad extensión de filtro por defecto. Soporte JSON nativo.36
201
2006
1

Soporte para espacios de nombres, enlace estático en tiempo de ejecución,


etiqueta de salto (GOTO limitada), Clausuras nativas, Soporte nativo para
14-
30- archivos PHP (phar), recolección de basura para referencias circulares, soporte
08-
5.3 06- mejorado para Windows, sqlite3, mysqlnd como reemplazo a libmysql como
201
2009 biblioteca para extensiones que funcionan con MySQL, fileinfo como
437
reemplazado de mime_magic para mejor soporte MIME, extensión de
Internacionalización, y etiqueta ereg obsoleta.

Soporte para Trait y sintaxis abreviada de array. Elementos


15- eliminados: register_globals , safe_mode , allow_call_time_pass
01-
09- _reference , session_register() , session_unregister() y ses
5.4 03-
201
2012 sion_is_registered() . Servidor web incorporado.38 Varias mejoras a
5
características existentes y al rendimiento, y requerimientos de memoria menores.
20-
20- Nuevos generadores para bucles, empty() soporta expresiones. Se pierde el
06-
5.5 06-
201 soporte para Windows XP y Windows Server 2003.39
2013
6

31-
20-
12- Constantes con expresiones escalares, listas de argumentos de longitud variable y
5.6 08-
201 exponencial mediante el operador **.40
2014
8

El 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.41 Las mejoras planeadas
6 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.42

03- 03-
11- 12-
7.0 Mejoras de rendimiento ,44 declaración de tipos de retorno en funciones 45
2015 201
43
8
01-
12-
201
01-
9 //
12- Tipo de retorno vacío,48 Clase constante modificadores de visibilidad,49 Tipos
7.1 no
2016 nullable,50 iterable de tipo seudo,51 Captura múltiples tipos de excepciones.52
4647 es
ente
ndib
le
30-
30-
11- Nuevo tipo de retorno "object",53 integración de Libsodium como una extensión
7.2 11-
202 del núcleo54
2017
0
6-
6-12- 12- Sintaxis flexible para Nowdoc y Heredoc, soporte para referencias y
7.3
2018 202 deconstrucción de arrays con list(), soporte para PCRE2, función hrtime()
1
28-
28-
11-
7.4 11- PHP 7.4 llegó al final de su vida útil el 28 de noviembre de 2022.
202
2019
2
26-
26-
8.0 11- Ingresadas Nuevas características e incremento de rendimiento
11-
2020
202
3
25-
25-
11-
8.1 11- Propiedades "readonly", "Enums", "Fiber" y nuevas sintaxis
202
2021
4
08-
08-
12- Creación de propiedades dinámicas esta desaprobada y es agregado el atributo
8.2 12-
202 AllowDynamicProperties 55
2022
5

Sintaxis[editar]
La sintaxis de PHP, se fundamenta en los principios de programación de C.
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 el HTML.56 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ón header() , 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 dos barras (//) al principio de la línea,
o con una almohadilla (#). 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 con if , los bucles con for y while 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]


Programa Hola mundo con PHP inmerso dentro de código HTML:

<!DOCTYPE html>
<html lang="es" dir="ltr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"
/>
<title>Ejemplo básico PHP</title>
</head>

<body>
<?php
echo 'Hola mundo';
?>
</body>

</html>

Programa Hola 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 necesario
header('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 respuesta
echo $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.

Programa Hola mundo con PHP respondiendo en formato JSON:

<?php

// Archivo respuesta_json.php
// Le comunica al navegador que la respuesta será JSON
header('Content-Type: application/json; charset=UTF-8');

$respuesta = [
'mensaje' => 'Hola mundo!'
];

echo json_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>
<html lang="es">

<head>
<meta charset="UTF-8" />
<meta name="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><code id="respuesta-plana"></code></pre>
</div>
<div>
<h2>Respuesta procesada (campo "mensaje" de la respuesta
JSON)</h2>
<pre><code id="respuesta-procesada"></code></pre>
</div>

<script>
document.addEventListener('DOMContentLoaded', () => {
const contenedorRespuestaPlana =
document.querySelector('#respuesta-plana');
const contenedorRespuestaProcesada =
document.querySelector('#respuesta-procesada');

// Realiza petición asíncrona al archivo de php


fetch('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 con MySQL para trabajar con bases de datos, aunque
también se pueden utilizar otros motores de base de datos como Microsoft 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 = new PDO('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 datos


if (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 usuario


if ($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 Argon2i
if (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

<?php //Archivo BD_access.class.php

class interfazSesion
{
public $conexion;
public $BD_ACCESS;
public $HOST_ACCESS;
public $USER_ACCESS;
public $PWD_ACCESS;
public $error;

public function __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 {
throw new Exception('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 = @new mysqli($this->HOST_ACCESS, $this-
>USER_ACCESS, $this->PWD_ACCESS, $this->BD_ACCESS);
}

try{
if (!$this->conexion){
throw new Exception('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;
}

public function consultaSQL(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 usuario


if ($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 datos
if ($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 ejemplo
error_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 enviar
if (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ías
if(!empty($usuario) && !empty($contrasena)){
$args = array('BD_ACCESS'=>'usuarios',
'HOST_ACCESS'=>'localhost','USER_ACCESS'=>'root','PWD_ACCESS'=>'sin_contr
asenia'){
//Se instancian los objetos asociados a las clases
correspondientes
$misAccesos = new interfazSesion($args);
$estadoConn = JSON.decode($misAccesos->error);
if(isset($estadoConn['Ok'])){
$estadoQuery=$misAccesos->consultaSQL("SELECT * FROM usuarios
WHERE usuario = '$usuario' LIMIT 1");
echo '{"salida":"'.$estadoQuery.'"}';
}else if(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 servicios REST se fundamentan en tres conceptos fundamentales:

Concepto de recurso
Concepto de itinerancia
Concepto de API

Características de PHP[editar]
Características[editar]
• Orientado al desarrollo de aplicaciones web dinámicas con acceso a
información almacenada en una base de datos.
• El modelo de ejecución de PHP es "síncrono a la petición"
(modelo single-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 de php arrays.
• El código fuente escrito en PHP es invisible al navegador 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
con MySQL y PostgreSQL.
• 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.
• Es libre, por lo que se presenta como una alternativa de fácil acceso
para todos.
• Permite aplicar técnicas de programació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 en tiempo de
ejecución.
• Tiene manejo 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 del patrón de diseño Modelo Vista Controlador (MVC), que
permiten separar el tratamiento y acceso a los datos, la lógica de
control y la interfaz 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. La ofuscació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 de caché 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
(modelo single-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.57 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. 58 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]

La LAMP comprende PHP (aquí con Squid).

XAMPP es un servidor independiente de plataforma, software libre, que consiste


principalmente en la base de datos MySQL, el servidor Web Apache 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, y MAMP 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:

• Digg
• Facebook
• Flickr
• Mailchimp
• Tumblr
• Wikipedia
• WordPress
• Yahoo!

Véase también[editar]
• Página web
• Página web dinámica
• MySQL
• ASP
• ASP.NET
• Linux

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.
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 desde el 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. ↑ 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.
11. ↑ ["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.
12. ↑ «NaCl: Networking and Cryptography library» (en
inglés). https://www.php.net/manual/es/book.sodium.php. Consultado el 7 de julio de
2019.
13. ↑ «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.
14. ↑ «Sodium is a modern, easy-to-use software library.». https://www.php.net/docs.php.
Consultado el 7 de julio de 2019.
15. ↑ «nuevas generaciones» (en inglés). www.google.com. Consultado el 8 de febrero de
2018.
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 tanto PHPEclipse como PDT for Eclipse.
Véanse http://www.phpeclipse.com Archivado el 18 de marzo de 2009 en Wayback
Machine. y http://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. ↑ Saltar a:a b «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.
30. ↑ «PHP 8.2 is Now Available on WordPress.com».
31. ↑ «Dev: drop PHP 7.4 support #6921».
32. ↑ «Bye, Bye Php7.4, y ahora que va a pasar?, te lo explico». Consultado el 23 de
febrero de 2023.
33. ↑ Saltar a:a b c «History of PHP and related projects». The PHP Group. Consultado el 25
de febrero de 2008.
34. ↑ Saltar a:a b c d e «PHP: PHP 4 ChangeLog». The PHP Group. 3 de enero de 2008.
Consultado el 22 de febrero de 2008.
35. ↑ «PHP: Using PHP from the command line - Manual:». The PHP Group. Consultado el
11 de septiembre de 2009.
36. ↑ Saltar a:a b c «PHP: PHP 5 ChangeLog». The PHP Group. 8 de noviembre de 2007.
Consultado el 22 de febrero de 2008.
37. ↑ «Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL». PHP. Consultado el 20
de septiembre de 2013.
38. ↑ «Built-in web server». Consultado el 26 de marzo de 2012.
39. ↑ «What has changed in PHP 5.5.x». Archivado desde el original el 5 de abril de 2018.
Consultado el 13 de abril de 2013.
40. ↑ «Migrating from PHP 5.5.x to PHP 5.6.x». Archivado desde el original el 25 de abril de
2015. Consultado el 20 de septiembre de 2014.
41. ↑ «PHP 6: Features, Release Date, Hosting and Download». Consultado el 6 de mayo
de 2011.
42. ↑ «Nombre de la próxima versión de PHP». Consultado el 24 de julio de 2014.
43. ↑ «RFC: PHP 7.0 Timeline». 4 de noviembre de 2015. Consultado el 4 de noviembre de
2015.
44. ↑ «Benchmarking PHPNG!».
45. ↑ «PHP RFC: Return Type Declarations».
46. ↑ «Preparation Tasks». Consultado el 5 de julio de 2016.
47. ↑ «PHP 7.1.0 GA - Externals». externals.io. Consultado el 30 de noviembre de 2016.
48. ↑ «PHP: rfc:void_return_type». php.net. 9 de noviembre de 2015. Consultado el 14 de
noviembre de 2015.
49. ↑ «PHP: rfc:class_constant_visibility». php.net. 27 de octubre de 2015. Consultado el 8
de diciembre de 2015.
50. ↑ «PHP RFC: Nullable Types». php.net. 10 de abril de 2014. Consultado el 14 de junio
de 2016.
51. ↑ «PHP RFC: Iterable». php.net. 10 de junio de 2016. Consultado el 19 de febrero de
2017.
52. ↑ «PHP RFC: Catching Multiple Exception Types». php.net. 6 de marzo de 2016.
Consultado el 19 de febrero de 2017.
53. ↑ «PHP: rfc:object-typehint». wiki.php.net. Consultado el 20 de diciembre de 2017.
54. ↑ «PHP: rfc:libsodium». wiki.php.net. Consultado el 20 de diciembre de 2017.
55. ↑ «PHP: rfc:deprecate_dynamic_properties». wiki.php.net. Consultado el 23 de agosto
de 2021.
56. ↑ «PHP: Sintaxis básica». Consultado el 13 de abril de 2013.
57. ↑ «¡Ayuda! He actualizado PHP y ahora mi sitio web no funciona».
58. ↑ Vega, Joan (3 de abril de 2023). «Compatibilidad De WordPress Con PHP 8 -
Wetopi». Wetopi Alojamiento WordPress Gestionado. Consultado el 22 de abril de
2023.

Enlaces externos[editar]
• Wikilibros alberga un libro o manual sobre Programación en PHP.
• Sitio web oficial
• Manuales y librerías en PHP.
• PHP-by-Example Probar las funciones de PHP en línea (+500).
• Tutorial extensivo de PHP y MySQL Archivado el 3 de diciembre de
2017 en Wayback Machine. (en inglés).

• Proyectos Wikimedia

• Datos: Q59

• Multimedia: PHP / Q59

• Libros y manuales: Programación en PHP

• Recursos didácticos: Curso de PHP

• Identificadores

• BNE: XX548742
trol de
• BNF: 135584386 (data)
ridades
• GND: 4546126-0

• LCCN: sh99002710

• NKC: ph117976

• NLI: 987007530371705171

• Informática

• Arch Linux: php

• Debian: php

• Fedora: php

• Free Software Directory: PHP


• Gentoo: dev-lang/php

• Open Hub: php

Categorías:
• PHP
• Siglas de informática
• Lenguajes de programación por procedimientos
• Lenguajes de programación dinámicamente tipados
• Lenguajes de programación de alto nivel
• Software multiplataforma
• Terminología de Internet
• Software de 1995
• Esta página se editó por última vez el 9 jun 2023 a las 00:00.
• El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 4.0; pueden
aplicarse cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y
nuestra política de privacidad.
Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo de
lucro.
• Política de privacidad

• Acerca de Wikipedia

• Limitación de responsabilidad

• Versión para móviles

• Desarrolladores

• Estadísticas

• Declaración de cookies

Activar o desactivar el límite de anchura del contenido

También podría gustarte