PHP

PHP és un llenguage de programació interpretat[1] del costat del servidor i d'us general que s'adapta especialment al desenrolle web.[2] PHP és un llenguage de scripting del costat del servidor que permet el desenroll d'aplicacions web dinàmiques i és compatible en múltiples sistemes operatius i servidors, facilitant l'integració en bases de senyes com MySQL i PostgreSQL. Ademés, PHP és un dels llenguages més utilisats en la creació de llocs web moderns com WordPress, Drupal i Joomla. Va ser creat inicialment pel programador danés-canadenc Rasmus Lerdorf en 1994.[3] En l'actualitat, la implementació de referència de PHP és produïda per The PHP Group.[4] PHP originalment significava Personal Home Page (Pàgina personal), pero ara significa el inicialismo[n 1] recursivo PHP: Hypertext Preprocessor.[6] YouTube
va ser creat en este llenguage inicialment.
El còdic PHP sol ser processat en un servidor web per un intérpret PHP desenrollat com un mòdul, un daemon o com un eixecutable d'interfaç d'entrada comuna (CGI). En un servidor web, el resultat del còdic PHP interpretat i eixecutat —que pot ser qualsevol tipo de senyes, com el HTML generat o senyes d'imàgens binarias— formaria la totalitat o part d'una resposta HTTP. Existixen diversos sistemes de plantilles, sistemes de gestió de continguts i frameworks que poden amprar-se per a organisar o facilitar la generació d'eixa resposta. Per una atra part, PHP pot utilisar-se per a moltes tasques de programació fòra del context de la web, com aplicacions gràfiques autònomes[7] i el control de dronés.[8] També es pot interpretar i eixecutar un còdic PHP qualsevol a través d'una interfaç de llínea de comandos (CLI).
L'intérpret estàndar de PHP, impulsat per Motor Zend, és un software lliure publicat baix Llicència PHP. PHP ha segut àmpliament portat i pot ser desplegat en la majoria dels servidors web en casi tots els sistemes operatius i plataformes, de forma gratuïta.
PHP s'utilisa en més del 75% dels llocs web que ampren llenguages de programació del costat del servidor.[9]
El llenguage PHP va evolucionar sense una especificació formal escrita o un estàndart fins a 2014, en l'implementació original actuant com l'estàndart de facto que atres implementacions intentaven seguir. Des de 2014, s'ha treballat per a crear una especificació formal de PHP.[10]
Visió general
[editar | editar còdic]PHP pot ser desplegat en la majoria dels servidors web i en tots els sistemes operatius i plataformes sense cost algun. El llenguage PHP es troba instalat en més de 20 millons de llocs web i en un milló de servidors. Migrar els servicis basats en PHP cap a les noves tecnologies que apareixen, supon un cost a justificar monetariamente (sobretot, en térmens d'hardware i rendiment), per això, parlar si el número de llocs basats en PHP s'ha vist reduït progressivament en els últims anys, en l'aparició de noves tecnologies com Node.js, Golang, ASP.NET, etc.
Poder-se fer una visió general de com PHP està evolucionant a dia de hui, és parlar sobre les noves llibreries disponibles, l'us de matrius,[11] maneig d'número entero, tractament de la criptografia quan s'usa una Base64,[12][13][14] Web scraping, indexación d'web, precuinat de senyes, Macrodatos, set de senyes, supervisió de senyes, set de proposicions dimensionals. Com a part de la visió general, caldria incloure un últim aspecte, i és la capacitat de generar capes de seguritat autodependientes, en un paradigma sol emergent gràcies a les llibreries de les que dispon PHP (En procés de desenroll).
El lloc web de Wikipedia està desenrollat en PHP.[15] És també el mòdul Apache més popular entre les computadores que utilisen Apache com a servidor web.
La gran semblança que posseïx PHP en els llenguages més comuns de programació estructurada, com C i Perl, permeten a la majoria dels programadorés crear aplicacions complexes en una curva d'aprenentage molt curta. També els permet involucrar-se en aplicacions de contingut dinàmic sense tindre que deprendre tot un nou grup de funcions.
Encara que tot en el seu disseny està orientat a facilitar la creació de llocs web, és possible crear aplicacions en una interfaç gràfic d'usuari, utilisant alguna extensió com pot ser PHP-Qt, PHP-GTK,[16] WxPHP, WinBinder, Roadsend PHP, Phalanger, Phc o Hip hop VM. També pot ser usat des de la llínea de comandos, de la mateixa manera com Perl o Python poden fer-ho; a esta versió de PHP li la crida PHP-CLI (Command Line Interface).[17]
Quan el client fa una petició al servidor per a que li envie una pàgina web, el servidor eixecuta el intérpret de PHP. Est processa el script solicitat que generarà el contingut de manera dinàmica (per eixemple obtenint informació d'una base de senyes). El resultat és enviat per l'intérpret al servidor, qui a la seua volta li l'envia al client.
Per mig d'extensions és també possible la generació d'archius PDF,[18] Flash, aixina com imàgens en diferents formats.
Permet la conexió a diferents tipos de servidors de bases de senyes tant SQL com NoSQL tals com MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird, SQLite o MongoDB.[19]
PHP també té la capacitat de ser eixecutat en la majoria dels sistemes operatius, tals com Unix (Linux, Mac VOS X, entre uns atres) i Microsoft Windows. Té mòdul per a interactuar en els servidors d'web més populars ya que existix en versió CGI, FastCGI, mòdul per a Apache i ISAPI.
PHP és una alternativa a les tecnologies de Microsoft ASP i ASP.NET (que utilisa C# i Visual Basic .NET com a llenguages), a ColdFusion de l'empresa Atobó, a JSP/Java, CGI/Perl i a Node.js/Javascript. Encara que la seua creació i desenroll es dona en l'àmbit dels sistemes lliures, baixe la llicència GNU, existix un entorn de desenroll integrat comercial cridat Zend Studio. CodeGear (la divisió de llenguages de programació de Borland) ha tret al mercat un entorn de desenroll integrat per a PHP, denominat 'Delphi for PHP'. També existix una personalisació a Eclipse, cita requerida, cridada PDT.[20]
Història
[editar | editar còdic]Va ser originalment dissenyat en Perl, en base en l'escritura d'un grup de CGI binarios escrits en el llenguage C pel programador danés-canadenc Rasmus Lerdorf en l'any 1994 per a mostrar el seu currículum vítae i guardar certes senyes, com la cantitat de tràfic que la seua pàgina web rebia. El 8 de juny de 1995 va ser publicat «Personal Home Page Tools» en acabant de que Lerdorf ho combinara en el seu propi Form Interpreter per a crear PHP/FI.
Dos programadors israelíes del Technion, Zeev Suraski i Andi Gutmans, varen reescriure el analisador sintàctic (parser, en anglés) en 1997 i varen crear la base del PHP3, i varen canviar el nom del llenguage per PHP: Hypertext Preprocessor. Immediatament varen començar #experimentació públiques de PHP3, i es va publicar oficialment en juny de 1998. Per a 1999, Suraski i Gutmans varen reescriure el còdic de PHP, i varen produir lo que hui es coneix com motor Zend. També varen fundar Zend Technologies en Ramat Gan, Israel.
En maig del 2000, PHP 4 es va llançar baix el poder del motor Zend 1.0. El 13 de juliol de 2007 es va anunciar la suspensió del soport i desenroll de la versió 4 de PHP,[21] i, a pesar de lo anunciat, s'ha lliberat una nova versió en millores de seguritat, la 4.4.8, publicada el 13 de giner del 2008, i posteriorment la versió 4.4.9, publicada el 7 d'agost del 2008.[22] Segons esta notícia,[23] se li va donar soport a fallos crítics fins al 9 d'agost del 2008.
El 13 de juliol de 2004, es va llançar PHP 5, utilisant el motor Zend Engine 2.0 (o Zend Engine 2). Inclou totes les ventages que proveïx el nou Zend Engine 2, com:
- Millor soport per a la programació orientada a objectes, que en versions anteriors era extremadament rudimentari.
- Millores de rendiment
- Millor soporte para MySQL en extensió completament reescrita
- Millor soport a XML (XPath, DOM, etc.)
- Soport natiu para SQLite
- Soport integrat para SOAP
- Iteradores de senyes
- Maneig d'excepcions
- Millores en l'implementació en Oracle
En abril de 2020, més de la mitat dels llocs en la web que usaven PHP seguien en la versió descontinuada[24] 5.6 o anterior.[25] i en la versió 7.0 i 7.1 més del 68%, que no estan oficialment soportades per The PHP Development Team,[26] mentres que el soport de seguritat és proporcionat per tercers, com Debian (fins a juny de 2020 per a PHP 5).[27] Adicionalment, la versió 7.2, la versió en soport més popular, va deixar de rebre actualisacions de seguritat el 30 de novembre de 2020.[24]
El 26 de novembre de 2020 es presenta l'actualisació del llenguage PHP a la seua versió 8.0 que més recursos i optimisacions incloent arguments nomenats, tipos d'unions, atributs, promoció de propietats constructives, expressions match, operador nullsafe, JIT (traducció dinàmica) i també millores en el sistema de tipos, maneig d'errors i consistència en general,[28] esta la qual aplegara al seu fi en novembre del 2023, també considerant que a partir de llançament de php 8.2 el 8 de novembre de l'any 2022, Wordpress que ha conseguit ser compatible al sendemà el 9 de decembre del 2022.[29] seguit del Framework CodeIgniter que actualment ha expulsat a php7.4 de les seues #compatibilitat en les seues noves actualisacions.[30]
En giner de 2023, segons W3Techs «PHP és utilisat pel 77.8 % de tots els llocs web que s'eixecuten en el costat del servidor»[2]. També informa de que només el 8 % dels usuaris de PHP utilisen les versions 8.x actualment soportades.[31] L'última versió publicada de PHP és PHP 8.3.
PHP inclou soport natiu per al paradigma de programació orientada a objectes des de la versió 5.0, #lo que permet definir classes, herència i encapsulación de manera formal.[32]
Historial de llançament
[editar | editar còdic]| Significat | |
|---|---|
| Roig | Versió antiga, sense soport |
| Groc | En soport per a errors de seguritat |
| Vert | En soport per a errors generals i de seguritat |
| Blau | Llançament futur |
| Rosa | Llançament cancelat |
| Versió | Data de llançament | Fi de soport | Notes |
|---|---|---|---|
| 1.0 | 08-06-1995 | Cridada oficialment «Personal Home Page Tools (PHP Tools)». És la primera versió en usar el nom «PHP».[33] | |
| 2.0 | 01-11-1997 | Considerada pels seus creadors la «ferramenta més ràpida i senzilla» per a crear pàgines web dinàmiques.[33] | |
| 3.0 | 06-06-1998 | 20-10-2000 | Zeev Suraski i Andi Gutmans varen reescriure la base per a esta versió.[33] |
| 4.0 | 22-05-2000 | 23-01-2001 | Es va afegir un sistema de parsing de dos fases cridat motor Zend.[34] |
| 4.1 | 10-12-2001 | 12-03-2002 | S'introduïxen 'superglobales' ($_GET, $_POST, $_SESSION, etc.)[34]
|
| 4.2 | 22-04-2002 | 06-09-2002 | Es deshabilitan register_globals per defecte. Senyes rebudes per la ret no són insertats en l'espai de noms global, tancant possibles forats de seguritat en les aplicacions.[34]
|
| 4.3 | 27-12-2002 | 31-03-2005 | S'introduïx CLI, i CGI.[34][35] |
| 4.4 | 11-07-2005 | 07-08-2008 | S'afigen pàgines man per a phpize i php-config.[34]
|
| 5.0 | 13-07-2004 | 05-09-2005 | Motor Zend II en un nou model d'objectes.[36] |
| 5.1 | 24-11-2005 | 24-08-2006 | Millores de rendiment en l'introducció de variables de compilador per al nou motor de PHP.[36] |
| 5.2 | 02-11-2006 | 06-01-2011 | Activitat extensió de filtre per defecte. Soport JSON natiu.[36] |
| 5.3 | 30-06-2009 | 14-08-2014[37] | Soport per a espais de noms, enllaç estàtic en temps d'eixecució, etiqueta de bot (GOTO llimitada), #Clausura natives, Soport natiu per a archius PHP (phar), recolecció de fem per a referències circulares, soport millorat para Windows, sqlite3, mysqlnd com a tongada a libmysql com a biblioteca per a extensions que funcionen en MySQL, fileinfo com reemplaçat de mime_magic para millor soport MIME, extensió d'Internacionalisació, i etiqueta ereg obsoleta. |
| 5.4 | 01-03-2012 | 15-09-2015 | Soport per a Trait i sintaxis abreviada de array. Elements eliminats: register_globals, safe_mode, allow_call_clave_pass_reference, session_register(), session_unregister() i session_is_registered(). Servidor web incorporat.[38] Vàries millores a característiques existents i al rendiment, i requeriments de memòria menors.
|
| 5.5 | 20-06-2013 | 20-06-2016 | Nous generadors per a bucles, empty() soporta expressions. Es pert el soport per a Windows XP i Windows Server 2003.[39]
|
| 5.6 | 20-08-2014 | 31-12-2018 | Constants en expressions escalares, llistes d'arguments de llongitut variable i exponencial per mig de l'operador **.[40] |
| 6 | Plantilla:Cela | Plantilla:Cela | El desenroll de PHP 6 ha segut retardat perque els desenrolladors varen decidir que l'enfocament actual per a tractar cadenes Unicode no és correcte, i estan considerant formes alternes per a la següent versió.[41] Les millores planejades per a PHP 6 varen ser afegides en el seu lloc en PHP 5.3.0 (Soport per a espais de nom, enllaç estàtic en temps d'eixecució, funciones lambda, #clausura, goto) i 5.4.0 (traits, revinculación de clausura).
Es va abandonar la versió 6 de PHP sent la següent versió la 7.[42] |
| 7.0 | 03-12-2015[43] | 03-12-2018 | Millores de rendiment ,[44] declaració de tipos de tornada en funcions[45] |
| 7.1 | 01-12-2016[46][47] | 01-12-2019 | Tipo de tornada buida,[48] Classe constant modificadores de visibilitat,[49] Tipos nullable,[50] iterable de tipo seudo,[51] Captura múltiples tipos d'excepcions.[52] |
| 7.2 | 30-11-2017 | 30-11-2020 | Nou tipo de tornada «object»,[53] integració de Libsodium com una extensió del núcleu[54] |
| 7.3 | 6-12-2018 | 6-12-2021 | Sintaxis flexible per a Nowdoc i Heredoc, soport per a referències i deconstrucción de arrays en list(), soport per a PCRE2, funció hrtime() |
| 7.4 | 28-11-2019 | 28-11-2022 | PHP 7.4 va aplegar al final de la seua vida útil el 28 de novembre de 2022. |
| 8.0 | 26-11-2020 | 26-11-2023 | Ingressades Noves característiques i increment de rendiment |
| 8.1 | 25-11-2021 | 25-11-2024 | Propietats «readonly», «enums», «fiber» i noves sintaxis |
| 8.2 | 08-12-2022 | 08-12-2025 | Creació de propietats dinàmiques esta desaprovada i és agregat l'atribut AllowDynamicProperties[55] |
| 8.3 | 23-11-2023 | 23-11-2026 | Tipado de constants, atribut override i nous métodos per a obtindre valors aleatoris.[56] |
| 8.4 | 21-11-2024 | 31-12-2026 | Neteja de còdic obsolet, i noves característiques com hooks i visibilitat asimètrica[57] |
| 8.5 | 20-11-2025 | 31-12-2027 | Operador pipe Plantilla:Code |
Sintaxis
[editar | editar còdic]La sintaxis de PHP, es fonamenta en els principis de programació de C.
L'intérpret de PHP solament eixecuta el còdic que es troba entre els seus delimitadors. Els delimitadors més comuns són <?php per a obrir una secció PHP i ?> per a tancar-la. El propòsit d'estos delimitadors és separar el còdic PHP del restant de còdic, com per eixemple el HTML.[58] En els archius que contenen sol còdic PHP, el delimitador ?> es pot ometre. De fet, PHP-FIG a través de les seues recomanacions estàndar per a PHP recomana ometre el delimitador ?>, ya que aixina no s'envia contingut HTML de manera accidental. Per eixemple, si s'envia un caràcter «no PHP» (que no és processat per l'intérpret de PHP), no es podran eixecutar certes accions com enviar encapçalats HTTP a través de la funció header(), ya que el procés de resposta ya ha començat.
Les variables es prefixen en el símbol del dólar ($) i no és necessari indicar el seu tipo. Les variables, a diferència de les funcions, distinguixen entre mayúscules i minúscules. Les cadenes de caràcters poden ser encapsuladas tant en dobles comillas com en comillas simples, encara que en el cas de les primeres, es poden insertar variables en la cadena directament, sense necessitat de concatenació.
Els comentaris es poden escriure be en dos barras (//) al principi de la llínea, o en una almohadilla (#). També permet comentaris multi-llínea encapsulados en /* */.
Sobre les paraules clau, PHP compartix en la majoria d'atres llenguages en sintaxis C les condicions en if, els bucles en for i while i les tornades de funcions. Habitualment en este tipo de llenguages, les sentències deuen acabar en punt i menge (;).
Eixemples de còdic en PHP Bàsic
[editar | editar còdic]Programa Hola món en PHP immers dins de còdic HTML:
<!DOCTYPE html>
<html lang="és" dir="ltr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Eixemple bàsic PHP</title>
</head>
<body>
<?php
tire 'Hola món';
?>
</body>
</html>Programa Hola món en PHP en forma de app monolítica:
<?php
// Area de capçaleres, constants i includes (inicialización de l'aplicació)
// Encapçalat solament per a demostració, no és necessari
header('Content-Type: text/html; charset=UTF-8');
$resposta = '';
// Llògica de l'aplicació, com obtindre usuari de la sessió, contingut, etc.
// Este còdic podria vindre d'una plantilla externa per a una fàcil reutilisació
$resposta .= '<!DOCTYPE html>';
$resposta .= '<html lang="és">';
$resposta .= '';
$resposta .= '<head>';
$resposta .= ' <meta charset="UTF-8" />';
$resposta .= ' <meta name="viewport" content="width=device-width, initial-scale=1.0" />';
$resposta .= ' <title>Eixemple bàsic de PHP</title>';
$resposta .= '</head>';
$resposta .= '';
$resposta .= '<body>';
$resposta .= ' <h1>Hola món!</h1>';
$resposta .= '</body>';
$resposta .= '';
$resposta .= '</html>';
// Envia resposta
tire $resposta;
// Notar que no es tanca la "etiqueta" <?php. PHP-FIG recomana esta pràctica en
// archius que contenen sol còdic PHP per a aixina no enviar contingut HTML de //
manera accidental.Programa Hola món en PHP responent en format JSON:
<?php
// Archive resposta_json.php
// Li comunica al navegador que la resposta serà JSON
header('Content-Type: application/json; charset=UTF-8');
$resposta = [
'mensage' => 'Hola món!'
];
tire json_encode($resposta);
// No es tanca la "etiqueta" <?php ya que l'archiu conté sol còdic PHPEl costat del client que realisarà petició a l'archiu PHP:
<!DOCTYPE html>
<html lang="és">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Eixemple de resposta en format JSON des de PHP</title>
</head>
<body>
<div>
<h2>Resposta en text pla</h2>
<pre><code aneu="resposta-plana"></code></pre>
</div>
<div>
<h2>Resposta processada (camp «mensage» de la resposta JSON)</h2>
<pre><code aneu="resposta-processada"></code></pre>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
const contenedorRespuestaPlana = document.querySelector('#resposta-plana');
const contenedorRespuestaProcesada = document.querySelector('#resposta-processada');
// Realisa petició asíncrona a l'archiu de php
fetch('resposta_json.php')
.then(resposta => resposta.json()) // Transforma la resposta a un objecte JSON
.then(respuestaJson => {
// respuestaJson és un objecte en el format { mensage: "Hola món!" }
contenedorRespuestaPlana.innerHTML = JSON.stringify(respuestaJson);
contenedorRespuestaProcesada.innerHTML = respuestaJson.mensage;
});
// manejar errors en .catch()
});
</script>
</body>
</html>Bases de senyes (MySQL)
[editar | editar còdic]PHP pot combinar-se en MySQL per a treballar en bases de senyes, encara que també es poden utilisar atres motors de base de senyes com Microsoft SQL Server, PostgreSQL, MongoDB, entre uns atres.
El següent eixemple es mostra l'inici de sessió en usuari i contrasenya utilisant MySQL i PHP en l'estil orientat a objectes:
<?php
// Conexió a la base de senyes local 'lloc'. Normalment açò vindria d'un
// servici extern que es reutilisa en tot el lloc.
$conexion = new PDO('mysql:host=127.0.0.1;dbname=lloc', 'root', '', [
// Llança excepció si ocorre un error, aixina el gestor d'errors prendrà les accions necessàries
// com mostrar un error 500 o terminar l'eixecució del sistema. Note's que no s'utilisa
// try-catch ací per a delegar-li la responsabilitat al gestor d'errors.
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
// Desactiva emulació de sentències preparades (solament les natives són segures)
PDO::ATTR_EMULATE_PREPARES => false,
]);
// S'obtenen les senyes enviades pel formulari
// Per a la simplicitat de la demostració s'utilisa l'operador coalesce (??)
$nomene_usuari = trim($_POST['nomene_usuari'] ?? ''); // S'eliminen els espais a l'inici i al final
$contrasena = $_POST['contrasena'] ?? ''; // La contrasenya es deixa tal com, sense trim()
// Solament actuar si el formulari ha segut enviat en senyes
if (isset($_POST['enviar']) && !empty($nomene_usuari) && !empty($contrasena)) {
// Consulta per a buscar l'usuari en la base de senyes
// S'utilisen sentències preparades per a previndre injeccions SQL
$consulta_usuari = $conexion->prepare('SELECT * FROM usuaris WHERE nomene_usuari = ? LIMIT 1');
$consulta_usuari->execute([$nomene_usuari]);
// Verifica si s'ha trobat un usuari
if ($consulta_usuari->rowCount() > 0) {
// Obté les senyes de l'usuari
$usuari_trobat = $consulta_usuari->fetch(PDO::FETCH_ASSOC);
// Comprovar si la contrasenya enviada és correcta
// Utilisa algoritmes segurs com BCrypt o Argon2i
if (password_verify($contrasena, $usuari_trobat['contrasena'])) {
// Credencials correctes, iniciar sessió
} else {
// Credencials incorrectes, mostrar mensage d'error
}
} else {
// Nom d'usuari no existix, mostrar mensage d'error
// Note's que, per seguritat, ací i dalt es deu mostrar un error
// genèric com "Credencials incorrectes", aixina d'esta forma un possible
// atacant no sabrà si ha ingressat el nom d'usuari correcte
}
}
// No es tanca la "etiqueta" <?php ya que l'archiu conté sol còdic PHPEl següent eixemple fa lo mateix que l'anterior, pero en la seguritat de que siga com siga l'estat mig del servici, si no hi ha forma de conectar, es destruirà la classe i es tancarà lo adjunt als seus fils.
<?php //Archive 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)
{
$eixida='';
try {
if ((null!==$args['BD_ACCESS']) && (null!==$args['HOST_ACCESS']) && (null !== $args['USER_ACCESS']) && (null !== $args['PWD_ACCESS'])){
//Construïm la classe
$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 de l'interfaç de conexion a senyes: No se suministren tots els arguments',400);
}
} catch(Exception $i){
die('"{error":"'.$i->getMessage.'}"');
} finally{
// Conectar al servidor MySQL i seleccionar la base de senyes en el nom '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ó a la base de senyes: els arguments introduïts no són suficients per a crear una conexió',410);
}
} catch (Exception $i){
die('"{error":"'.$i->getMessage.'}"');
} finally{
$eixida='{"Ok":"La conexió s'ha realisat"}';
}
$this->error=$eixida;
}
public function consultaSQL(string $queSQLquery): string
{
$eixida='';
// Consulta per a buscar els usuaris en la base de senyes
$consulta_usuari = $this->conexion->query($queSQLquery);
// Verificar que s'ha trobat un usuari
if ($consulta_usuari->num_rows > 0) {
// Obtindre les senyes de l'usuari en forma d'un array associatiu
$usuari_trobat = $consulta_usuari->fetch_assoc();
// Comprovar si la contrasenya utilisada és la mateixa que la que està en la base de senyes
if ($contrasena === $usuari_trobat['contrasena']) {
// Text de exito
$eixida = '{"Ok":"Has iniciat la sessió correctament"}';
} else {
// Text d'error
$eixida = '{"error":"La contrasenya utilisada no és correcta"}';
}
} else {
// Text d'error
$eixida = '{"error":"L'usuari introduït no existix"}';
}
// Tancar la conexió
$this->conexion->close();
return $eixida;
}
}
?>
<?php //Archive capçalera.h.php
// Solament mostrar errors fatals, de parseo i advertències per a l'eixemple
error_reporting(I_ERROR | I_PARSE | I_WARNING);
//Inclusion de classes per a instàncies de gestion
$seHaIncluido=include_onze(BD_access.class.php);
if($seHaIncluido){
// Comprovar que el formulari va ser enviat utilisant el boton enviar
if (isset($_POST['enviar'])) {
//Iniciant variables
$usuari='';
$contrasena='';
// Obtindre les senyes enviades per método POST i borrar els espais en blanc de l'inici i del final
$usuari = trim($_POST['usuari']);
$contrasena = sha1(trim($_POST['contrasena']));
//Comprobacion de que les variables no estan buides
if(!empty($usuari) && !empty($contrasena)){
$args = array('BD_ACCESS'=>'usuaris', 'HOST_ACCESS'=>'localhost','USER_ACCESS'=>'root','PWD_ACCESS'=>'sense_contrasenia'){
//Es instancian els objectes associats a les classes corresponents
$misAccesos = new interfazSesion($args);
$estadoConn = JSON.decode($misAccesos->error);
if(isset($estadoConn['Ok'])){
$estadoQuery=$misAccesos->consultaSQL("SELECT * FROM usuaris WHERE usuari = '$usuari' LIMIT 1");
tire '{"eixida":"'.$estadoQuery.'"}';
}else if(isset($estadoConn['error'])){
tire '{"error":"'.$estadoQuery.'"}';
}
}else{
tire '{"error":"camps del formulari en senyes no reconegudes"}';
}
}else{
tire '{"error":"intent d'accés no permés"}';
}
}
?>Com a servici REST
[editar | editar còdic]Els servicis REST es fonamenten en tres conceptes fonamentals: Concepte de recurs Concepte d'itinerància Concepte d'API
Característiques de PHP
[editar | editar còdic]Característiques
[editar | editar còdic]- Orientat al desenroll d'aplicacions web dinàmiques en accés a informació almagasenada en una base de senyes.
- El model d'eixecució de PHP és «síncrono a la petició» (model single-request-per-script-execution) : la recepció d'una petició activa l'eixecució del script PHP i, a continuació, el resultat generat es torna a l'eixida. Com a resultat, un sistema en PHP difícilment pot quedar paralisat per un error, ya que l'eixecució del script es reinicia en cada petició. Açò contrasta, per eixemple, en els llenguages en els que el programa es compila i eixecuta dins d'un «eixecutable», que deixarà de funcionar si es produïx un error.
- És considerat un llenguage fàcil de deprendre, ya que en el seu desenroll es varen simplificar distintes especificacions, com és el cas de la definició de les variables primitives, eixemple que es fa evident en l'us de php arrays.
- El còdic font escrit en PHP és invisible al navegador web i al client, ya que és el servidor el que s'encarrega d'eixecutar el còdic i enviar el seu resultat (habitualment, un contingut HTML cap al navegador).
- Capacitat de conexió en la majoria dels motors de base de senyes que s'utilisen en l'actualitat, destaca la seua conectivitat en MySQL i PostgreSQL.
- Capacitat d'expandir el seu potencial utilisant mòduls (cridats extensions).
- Posseïx una àmplia documentació en el seu lloc web oficial, entre la qual es destaca que totes les funcions del sistema estan explicades i ejemplificadas en un únic archiu d'ajuda.
- És lliure, per #lo que es presenta com una alternativa de fàcil accés per a tots.
- Permet aplicar tècniques de programació orientada a objectes.
- No requerix definició de tipos de variables encara que les seues variables es poden evaluar també pel tipo que estiguen manejant en temps d'eixecució.
- Té maneig d'excepcions (des de PHP5).
- Si ben PHP no obliga a qui ho usa a seguir una determinada metodologia a l'hora de programar, encara fent-ho, el programador pot aplicar en el seu treball qualsevol tècnica de programació o de desenroll que li permeta escriure còdic ordenat, estructurat i manejable. Un eixemple d'açò són els desenrolls que en PHP s'han fet del patró de disseny Model Vista Controlador (MVC), que permeten separar el tractament i accés les senyes, la llògica de control i la interfaç d'usuari en tres components independents.
- Per la seua flexibilitat, ha tingut una gran acollida com a llenguage base per a les aplicacions WEB de maneig de contingut, i és el seu us principal.
Inconvenients
[editar | editar còdic]- Com és un llenguage que s'interpreta en eixecució, per a certs usos pot resultar un inconvenient que el còdic font no puga ser ocultat. La ofuscación és una tècnica que pot dificultar la llectura del còdic pero no necessàriament impedix que el còdic siga examinat.
- Degut a que és un llenguage interpretat, un script en PHP sol funcionar considerablement més llent que el seu equivalent en un llenguage de baix nivell, no obstant este inconvenient es pot minimisar en tècniques de caché tant en archius com en memòria.
- En les versions prèvies a la 7, les variables no són tipificades, la qual cosa dificulta als diferents IDEs oferir assistències per al tipificat del còdic, encara que açò no és realment un inconvenient del llenguage en sí. Açò és solucionat per alguns IDEs afegint un comentari en el tipo a la declaració de la variable.
- El fet de que este llenguage s'eixecute a partir d'una petició (model single-request-per-script-execution) fa difícil la realisació de tasques asíncronas o permanents (ex: crawler, càlculs a llarc determini etc.) ;
Desafius
[editar | editar còdic]Una de les dificultats que enfronten les empreses per a actualisar a les versions més altes actuals dels llenguages de programació és la compatibilitat en el còdic existent contrastat les millores. Moltes voltes, el còdic antic utilisa funcions o sintaxis que han segut modificades o eliminades en les noves versions, #lo que genera errors o incompatibilitats.[59] Ademés, les empreses deuen invertir temps i recursos en capacitar als seus programadors per a que s'adapten als canvis i puguen aprofitar les noves característiques i ventages dels llenguages actualisats. El desafiu de canviar les versions de PHP també pot ser que algunes biblioteques, complements i extensions utilisats en l'aplicació també necessiten actualisar-se. Si estos no s'actualisen, poden generar conflictes o errors en l'aplicació.
XAMPP, LAMP, WAMP, MAMP, UwAmp
[editar | editar còdic]XAMPP és un servidor independent de plataforma, software lliure, que consistix principalment en la base de senyes MySQL, el servidor web Apache i els intérprets per a llenguages de script: PHP i Perl. El nom prové de l'acrònim de X (per a qualsevol dels diferents sistemes operatius), Apache, MySQL, PHP, Perl. El programa està lliberat baix la llicència GNU i actua com un servidor web lliure, fàcil d'usar i capaç d'interpretar pàgines dinàmiques. Actualment XAMPP està disponible per a Microsoft Windows, GNU/Linux, Solaris, i MacOS X.
És un software «llauger» que es pot utilisar en qualsevol PC. No necessita molts recursos.
LAMP presenta una funcionalitat pareguda a XAMPP, pero enfocada en Linux, WAMP ho fa enfocat en Windows, i MAMP para MacOS X. UwAmp és molt idèntic a WAMP i es destaca que es pot eixecutar des d'una memòria USB.
Principals llocs desenrollats en PHP
[editar | editar còdic]S'utilisa PHP en millons de llocs; entre els més destacats es troben:
Gestors de paquets en PHP
[editar | editar còdic]Els gestors de paquets en PHP permeten integrar biblioteques i extensions en les aplicacions. Cada sistema oferix un enfocament distint sobre l'instalació, l'alcanç de les dependències i la manera en que s'utilisen en el còdic. Entre els principals gestors de paquets es troben Composer, PEAR, PECL i PEU.[60][61]
Composer
[editar | editar còdic]Composer és un gestor de dependències que funciona a nivell de proyecte. Les biblioteques instalades queden disponibles únicament per a l'aplicació en la que s'integren, #lo que permet entorns aïllats i reproduibles.[62] S'utilisa principalment per a incorporar llibreries externes en proyectes específics, en atenció al versionamiento d'estes dependències.[63]
Vejau també
[editar | editar còdic]Notes
[editar | editar còdic]- ↑ «En un llenguage compilado, la màquina de destí traduïx directament el programa.PHP és un llenguage de scripting del costat del servidor que permet el desenroll d'aplicacions web dinàmiques i és compatible en múltiples sistemes operatius i servidors, facilitant l'integració en bases de senyes com MySQL i PostgreSQL. En un llenguage interpretat, el còdic font no és directament traduït per la màquina de destí. En canvi, un distint programa, millor conegut com a intérpret, llig el còdic i ho eixecuta.». Archivat des d'el original, el 21 de giner de 2023. Consultat el 21 de giner de 2023.
- ↑ «PHP: Hypertext Preprocessor». www.php.net. Consultat el 4 de juny de 2020.
- ↑ «PHP: History of PHP - Manual». www.php.net. Consultat el 4 de juny de 2020.
- ↑ «PHP: Història de PHP i Proyectes Relacionats - Manual». www.php.net. Consultat el 4 de juny de 2020.
- ↑ «inicialismo». Consultat el 3 de juny de 2020.
- ↑ «PHP: Preface - Manual». www.php.net. Consultat el 4 de juny de 2020.
- ↑ «PHP: What ca PHP do? - Manual». www.php.net. Consultat el 4 de juny de 2020.
- ↑ Erro en la seqüencia d'órdens: no existix el mòdul «Citas».
- ↑ «Usage Statistics and Market Share of PHP for Websites, November 2025». w3techs.com. Consultat el 2025-11-07.
- ↑ «PHP gets a formal specification, at last» (en en). ITworld. Consultat el 4 de juny de 2020.
- ↑ «["https://wiki.php.net/rfc/object-typehint" "PHP 7 introduced scalar types for parameters and also for declaring return types for functions."]» (en anglés). "https://wiki.php.net/rfc/object-typehint#introduction". Consultat el 7 de juliol de 2019.
- ↑ «NaCl: Networking and Cryptography library» (en anglés). https://www.php.net/manual/es/book.sodium.php.+Consultat el 7 de juliol de 2019.
- ↑ Tens que especificar títul = i url = al usar {{cita web}}.. https://download.libsodium.org/doc/#offline-documentation.+Consultat el 7 de juliol de 2019.
- ↑ «Sodium is a modern, easy-to-use software library.» (en espanyol). https://www.php.net/docs.php.+Consultat el 7 de juliol de 2019.
- ↑ «Usage statistics of PHP for websites, Popular sites using PHP» (en inglés). Consultat el 2026-04-22.
- ↑ «PHP-GTK» (en anglés). PHP Group. Consultat el 10 de setembre de 2013.
- ↑ «PHP: Funcionament en llínea de comandos». PHP Group. Consultat el 10 de setembre de 2013.
- ↑ «dompdf - HTML to PDF converter (PHP5)» (en anglés). Consultat el 10 de setembre de 2013.
- ↑ «PHP: Extensions de bases de senyes - Manual». PHP Group. Consultat el 10 de setembre de 2013.
- ↑ Existixen tant PHPEclipse com PDT for Eclipse. Vegen-se http://www.phpeclipse.com [1] archivat en Wayback Machine. i http://www.eclipse.org/pdt
- ↑ PHP: News Archives 2007 (en anglés). Consultat 9 de decembre de 2007.
- ↑ PHP: News Archives 2008 (en anglés).
- ↑ Archiu: 13 de juliol de 2007 PHP.net.
- ↑ 24,0 24,1 «PHP: Supported Versions». www.php.net. Consultat el 4 de juny de 2020. «End of life: Una lliberació que ya no té soport. Els usuaris d'esta versió deuen actualisar-se lo abans possible, ya que poden estar exposts a vulnerabilitats de seguritat sense pegats»
- ↑ «Usage Statistics and Market Share of PHP for Websites, June 2020». w3techs.com. Consultat el 4 de juny de 2020.
- ↑ «PHP: Unsupported Branches». www.php.net. Consultat el 4 de juny de 2020.
- ↑ «LTS/Jessie - Debian Wiki». wiki.debian.org. Consultat el 4 de juny de 2020.
- ↑ «PHP 8.0 és una actualisació important del llenguage PHP». Archivat des d'el original, el 21 de decembre de 2022. Consultat el 30 de giner de 2023.
- ↑ «PHP 8.2 is Now Available on WordPress.com». Archivat des d'el original, el 15 de decembre de 2022. Consultat el 30 de giner de 2023.
- ↑ «Dev: drop PHP 7.4 support #6921». Archivat des d'el original, el 28 de giner de 2023. Consultat el 30 de giner de 2023.
- ↑ «Bye, Bye Php7.4, i ara que va a passar?, t'ho explique» (en és-ar). Archivat des d'el original, el 15 de giner de 2023. Consultat el 23 de febrer de 2023.
- ↑ https://www.php.net/manual/es/language.oop5.php
- ↑ 33,0 33,1 33,2 «History of PHP and related projects». The PHP Group. Consultat el 25 de febrer de 2008.
- ↑ 34,0 34,1 34,2 34,3 34,4 «PHP: PHP 4 ChangeLog». The PHP Group. Consultat el 22 de febrer de 2008.
- ↑ «PHP: Using PHP from the command line - Manual:». The PHP Group. Consultat el 11 de setembre de 2009.
- ↑ 36,0 36,1 36,2 «PHP: PHP 5 ChangeLog». The PHP Group. Consultat el 22 de febrer de 2008.
- ↑ «Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL». PHP. Consultat el 20 de setembre de 2013.
- ↑ «Built-in web server». Consultat el 26 de març de 2012.
- ↑ «What has changed in PHP 5.5.x». Archivat des d'el original, el 5 d'abril de 2018. Consultat el 13 d'abril de 2013.
- ↑ «Migrating from PHP 5.5.x to PHP 5.6.x». Archivat des d'el original, el 25 d'abril de 2015. Consultat el 20 de setembre de 2014.
- ↑ «PHP 6: Features, Release Dona't, Hosting and Download». Consultat el 6 de maig de 2011.
- ↑ «Nomene de la pròxima versió de PHP». Consultat el 24 de juliol de 2014.
- ↑ «Downloads archive». Consultat el 3 de decembre de 2024.
- ↑ «Benchmarking PHPNG!».
- ↑ «PHP RFC: Return Type Declarations».
- ↑ «Preparation Tasks». Consultat el 5 de juliol de 2016.
- ↑ «PHP 7.1.0 GA - Externals». externals.io. Consultat el 30 de novembre de 2016.
- ↑ «PHP: rfc:void_return_type». php.net. Consultat el 14 de novembre de 2015.
- ↑ «PHP: rfc:class_constant_visibility». php.net. Consultat el 8 de decembre de 2015.
- ↑ «PHP RFC: Nullable Types». php.net. Consultat el 14 de juny de 2016.
- ↑ «PHP RFC: Iterable». php.net. Consultat el 19 de febrer de 2017.
- ↑ «PHP RFC: Catching Multiple Exception Types». php.net. Consultat el 19 de febrer de 2017.
- ↑ «PHP: rfc:object-typehint». wiki.php.net. Consultat el 20 de decembre de 2017.
- ↑ «PHP: rfc:libsodium». wiki.php.net. Consultat el 20 de decembre de 2017.
- ↑ «PHP: rfc:deprecate_dynamic_properties». wiki.php.net. Consultat el 23 d'Agost de 2021.
- ↑ «PHP: PHP 8.3.0 Release Announcement». Consultat el 20 de març de 2024.
- ↑ «PHP: rfc:php 8.4». php.net. Consultat el 02 de Giner de 2025.
- ↑ «PHP: Sintaxis bàsica». Consultat el 13 d'abril de 2013.
- ↑ «meu-lloc-web-no-funciona ¡Ajuda! He actualisat PHP i ara el meu lloc web no funciona».
- ↑ «PEU: The Future of PHP Extension Management» (en anglés). IPC. Consultat el 6 d'octubre de 2025.
- ↑ «Difference between PEAR,PECL and Composer» (en anglés). Consultat el 6 d'octubre de 2025.
- ↑ Composer Team (ed.): «Composer» (en anglés). Consultat el 3 d'octubre de 2025.
- ↑ PHP Manual (ed.): «Instalació de Composer» (en espanyol). Consultat el 3 d'octubre de 2025.
Referències
[editar | editar còdic]Enllaços externs
[editar | editar còdic]- PHP-by-Example Provar les funcions de PHP en llínea (+500).
- Tutorial extensiu de PHP i MySQL [3] archivat en Wayback Machine. (anglés).
Referències
[editar | editar còdic]- Este artícul conté una traducció derivada de «PHP» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.
Erro en la cita: Existixen etiquetes <ref> per a un grup nomenat "n", pero no es trobà una etiqueta <references group="n"/>
- Pàgines en erros de resaltat de sintaxis
- Pàgines en erros en seqüencies d'órdens
- Artículs en passages que requerixen referències
- PHP
- Sigles d'informàtica
- Llenguages de programació per procediments
- Llenguages de programació dinàmicament tipados
- Llenguages de programació d'alt nivell
- Software multiplataforma
- Terminologia d'Internet
- Software de 1995
- Llenguatges de programació d'alt nivell
- Llenguatges de programació dinàmicament tipats
- Llenguatges de programació per procediments
- Pàgines en erros de referència