Sunteți pe pagina 1din 14

PHP

Ir a la navegaci�nIr a la b�squeda
Para otros usos de este t�rmino, v�ase PHP (desambiguaci�n).
PHP
PHP-logo.svg
Desarrollador(es)
PHP Group
https://www.php.net
Informaci�n general
Extensiones comunes .php, .phtml, .php3, .php4, .php5, .php7, .phps, .php-s,
.pht
Paradigma Multiparadigma: imperativo, funcional, orientado a objetos, procedural,
reflexivo
Apareci� en 1995
Dise�ado por Rasmus Lerdorf
�ltima versi�n estable 7.3.81? (1 de agosto de 2019 (15 d�as))
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, acr�nimo recursivo en ingl�s de PHP: Hypertext Preprocessor (preprocesador de
hipertexto), es un lenguaje de programaci�n de prop�sito general de c�digo del lado
del servidor originalmente dise�ado para el preprocesado de texto plano en UTF-8.
Posteriormente se aplic� al desarrollo web de contenido din�mico, dando un paso
evolutivo en el concepto de aplicaci�n en l�nea, por su car�cter de servicio.

Su implementaci�n en los documentos HTML era aparentemente muy sencilla. Hay que
decir, que, PHP no genera HTML, sino que ofrece una salida de texto con
codificaci�n UTF-8 compatible con los documentos HTML. El programador puede dotar a
la salida de los tag's propios del HTML y los exploradores m�s comunes para navegar
por internet, reconocer�n muy r�pidamente el formato UTF-8 y lo adaptar�n
ofreciendo una salida entendible.

Fue uno de los primeros lenguajes de programaci�n del lado del servidor que se
pod�an incorporar directamente en un documento HTML en lugar de llamar a un archivo
externo que procese los datos. El c�digo es interpretado por un servidor web con un
m�dulo de procesador de PHP que genera el texto plano en formato UTF-8, ampliamente
reconocido por el est�ndar HTML, dando como resultado, en los exploradores, una
salida al usuario perfectamente entendible.

PHP ha evolucionado por lo que ahora incluye tambi�n una interfaz de l�nea de
comandos que puede ser usada en aplicaciones gr�ficas independientes. Puede ser
usado en la mayor�a de los servidores web al igual que en muchos sistemas
operativos y plataformas sin ning�n costo.

Fue creado originalmente por Rasmus Lerdorf en el a�o 1995. Actualmente el lenguaje
sigue siendo desarrollado con nuevas funciones por el grupo PHP.2? Este lenguaje
forma parte del software libre publicado bajo la licencia PHPv3_01, una licencia
Open Source validada por Open Source Initiative. La licencia de PHP es del estilo
de licencias BSD, sin la condici�n de copyleft asociada con la Licencia P�blica
General de GNU.

�ndice
1 Etimolog�a
2 Visi�n general
3 Historia
3.1 Historial de lanzamiento
4 Sintaxis
4.1 Servicios UTF-8
4.2 Bases de datos (MySQL)
4.3 Como servicio REST
5 Caracter�sticas de PHP
5.1 Caracter�sticas
5.2 Inconvenientes
5.3 XAMPP, LAMP, WAMP, MAMP, UwAmp
5.4 Principales sitios desarrollados con PHP
6 V�ase tambi�n
7 Referencias
8 Enlaces externos
Etimolog�a
PHP es un acr�nimo recursivo que se llama PHP Hypertext Preprocessor (inicialmente
PHP/FI, o, Personal Home Page Form Interpreter).3? Fue creado originalmente por
Rasmus Lerdorf; sin embargo, la implementaci�n principal de PHP es producida ahora
por The PHP Group y sirve como el est�ndar de facto para PHP, al no haber una
especificaci�n formal. Publicado con la PHP License, la Free Software Foundation
considera esta licencia como software libre.4?

Visi�n general
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, cuando hablamos 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... o no, supone abrir un debate no
carente de falacias y argumentos demag�gicos. Es un hecho constatado que, en el
mundo empresarial, solo se cambian las cosas cuando va a suponer una ventaja
estrat�gica en el mercado. Las empresas carecen de un sentido que les polaricen los
'sentimeintos', emergiendo una pauta de posicionamiento mercantilista a favor o en
contra de algo solo por un sentido despectivo hacia ciertas tecnolog�as, tal como
sucede con el mundo linux, windows y/o mac en el �mbito de los usuarios.

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, 5?manejo de
n�meros enteros, tratamiento de la criptograf�a cuando se usa una Base64,6?7?8? 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 9? 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.10? 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,11? 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).12?

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. �ste 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,13? 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.14?

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.15?

Historia
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.2? 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.2?

En mayo del 2000, PHP 4 se lanz� bajo el poder del motor Zend 1.0. El 13 de julio
del 2007 se anunci� la suspensi�n del soporte y desarrollo de la versi�n 4 de
PHP,16? 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.17? Seg�n esta noticia,18? se le dio
soporte a fallos cr�ticos hasta el 9 de agosto del 2008.

El 13 de julio del 2004, se lanz� PHP 5, utilizando el motor Zend Engine 2.0 (o
Zend Engine 2).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
Historial de lanzamiento
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
Versi�n Fecha de lanzamiento Fin de soporte Notas
1.0 08-06-1995 Llamada oficialmente "Personal Home Page Tools (PHP
Tools)". Es la primera versi�n en usar el nombre "PHP".19?
2.0 01-11-1997 Considerada por sus creadores la "herramienta m�s r�pida y
sencilla" para crear p�ginas web din�micas.19?
3.0 06-06-1998 20-10-2000 Zeev Suraski y Andi Gutmans reescribieron la base
para esta versi�n.19?
4.0 22-05-2000 23-01-2001 Se a�adi� un sistema de parsing de dos fases llamado
motor Zend.20?
4.1 10-12-2001 12-03-2002 Se introducen 'superglobales' ($_GET, $_POST,
$_SESSION, etc.)20?
4.2 22-04-2002 06-09-2002 Se deshabilitan register_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.20?
4.3 27-12-2002 31-03-2005 Se introduce CLI, y CGI.20?21?
4.4 11-07-2005 07-08-2008 Se a�aden p�ginas man para phpize y php-config.20?
5.0 13-07-2004 05-09-2005 Motor Zend II con un nuevo modelo de objetos.22?
5.1 24-11-2005 24-08-2006 Mejoras de rendimiento con la introducci�n de
variables de compilador para el nuevo motor de PHP.22?
5.2 02-11-2006 06-01-2011 Activida extensi�n de filtro por defecto. Soporte
JSON nativo.22?
5.3 30-06-2009 14-08-201423? 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 para Windows, sqlite3, mysqlnd como
reemplazo a libmysql como biblioteca para extensiones que funcionan con MySQL,
fileinfo como reemplzado de mime_magic para mejor soporte MIME, extensi�n de
Internacionalizaci�n, y etiqueta ereg obsoleta.
5.4 01-03-2012 15-09-2015 Soporte para Trait y sintaxis abreviada de array.
Elementos eliminados: register_globals, safe_mode, allow_call_time_pass_reference,
session_register(), session_unregister() y session_is_registered(). Servidor web
incorporado.24? Varias mejoras a caracter�sticas existentes y al rendimiento, y
requerimientos de memoria menores.
5.5 20-06-2013 20-06-2016 Nuevos generadores para bucles, empty() soporta
expresiones. Se pierde el soporte para Windows XP y Windows Server 2003.25?
5.6 20-08-2014 31-12-2018 Constantes con expresiones escalares, listas de
argumentos de longitud variable y exponencial mediante el operador **.26?
6 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.27? 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.28?

7.0 03-11-201529? 03-12-2018 Mejoras de rendimiento ,30? declaraci�n de


tipos de retorno en funciones 31?
7.1 01-12-201632?33? 01-12-2019 Tipo de retorno vac�o,34? Clase constante
modificadores de visibilidad,35? Tipos nullable,36? iterable de tipo seudo,37?
Captura m�ltiples tipos de excepciones.38?
7.2 30-11-2017 30-11-2020 Nuevo tipo de retorno "object",39? integraci�n de
Libsodium como una extensi�n del n�cleo40?
7.3 6-12-2018 6-12-2021
Sintaxis
La sintaxis de PHP, se fundamenta en los principios de programaci�n de C. Veamos
los siguientes ejemplos:

Servicios UTF-8
Programa Hola mundo con PHP embebido en c�digo HTML:

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<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 para web:

<?php
//area de cabeceras, constantes, includes y variables
$contentDom=''; //Inicializamos variable

//Logica de la app
$contentDom ='<!DOCTYPE html>';
$contentDom.=' <html lang="es">';
$contentDom.=' <head>';
$contentDom.=' <meta charset="UTF-8" />';
$contentDom.=' <title> Ejemplo b�sico PHP</title>';
$contentDom.=' </head>';
$contentDom.=' <body>';
$contentDom.=' Hola mundo';
$contentDom.=' </body>';
$contentDom.=' </html>';

//muestra resultados
echo $contentDom;
//En todas las apps monol�ticas, seguir este orden.
?>
Programa Hola mundo con PHP en forma de servicio de texto UTF-8:

<?php
//Lado servidor:
//nombre del archivo: hola_mundo.php
//Las cabeceras del lado servidor, quedan a criterio del desarrollador.
//Se aplica el mismo criterio que en una aplicaci�n monol�tica, con la excepci�n de
que se a�ade un concepto m�s:

//area de cabeceras, constantes, includes y variables


$contentDom=''; //Inicializamos variable
$ejecutoLogica=false;

//Seguridad del documento


if(isset($_POST['accion'])){
$ejecutoLogica=true;
}

//Logica de la app
if($ejecutoLogica){
if($_POST['accion']=='saluda'){
$contentDom. = 'Hola mundo<br>';
}else{
$contentDom ='<!DOCTYPE html>';
$contentDom.=' <html lang="es">';
$contentDom.=' <head>';
$contentDom.=' <meta charset="UTF-8" />';
$contentDom.=' <title> Ejemplo b�sico PHP</title>';
$contentDom.=' <script type="text/javascript"
src="/rutaDelArchivo1.js"></script>';
$contentDom.=' </head>';
$contentDom.=" <body onload='doyResultado();'>";
$contentDom.=" <div id='resultado'>";
$contentDom.= ' A10 moon do{}while();<br>';
}

$contentDom.=' </div>';
$contentDom.=' </body>';
$contentDom.=' </html>';
}

//muestra resultados
echo $contentDom;
//En todas las apps as�ncronas, seguir este orden.

?>
Lado cliente:

//archivo: rutaDelArchivo1.js
var cargando=false;
var conexion=[];
window.onload = function (){
if(!cargando){
if(window.XMLHttpRequest){
conexion=new XMLHttpRequest();
}else{
conexion=new ActiveXObject("Microsoft.XMLHTTP");
}
conexion.onreadystatechange=muestraContenido;
cargando=true;
}
}

function muestraContenido(){
if(conexion.readyState==4 && conexion.status==200){

document.getElementById("resultado").insertAdjacentHTML("beforeend",conexion.respon
seText);
}
}

function doyResultado(){
//invocamos al archivo php
conexion.open("POST", "hola_mundo.php", true);
//Definimos la cabecera del documento: muy importante establecer las
cabeceras tanto en el cliente como en el servidor
//si no queremos que nuestra ip sea notificada por el explorador como
una ip spameadora.
//Los robots maliciosos, se valen de estas vulnerabilidades para abusar
de sitios mal programados.
conexion.setRequestHeader("Content-type", "application/x-www-form-
urlencoded");
//Establecemos la matriz post y su valor
conexion.send("accion=saluda");
}
Archivo html generado en el lado cliente como resultado de un servicio UTF-8:

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title> Ejemplo b�sico PHP</title>
<script type="text/javascript" src="/rutaDelArchivo1.js"></script>
</head>
<body onload='doyResultado();'>
<div id='resultado'>

</div>
</body>
</html>
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.41?

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. Como es habitual en este tipo de lenguajes, las sentencias deben acabar
con punto y coma (;).

Bases de datos (MySQL)


PHP puede combinarse con MySQL para trabajar con bases de datos. En la actualidad
esta �ltima se utiliza much�simo. En este ejemplo se muestra un simple inicio de
sesi�n con usuario y contrase�a utilizando MySQL y PHP con el estilo orientado a
objetos:

<?php
// Solo mostrar errores fatales, de parseo y advertencias para el ejemplo
error_reporting(E_ERROR | E_PARSE | E_WARNING);

// 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']));

// Comprobar que el formulario fue enviado utilizando el boton enviar y que las
variables no est�n vac�as
if (isset($_POST['enviar']) && !empty($usuario) && !empty($contrasena)) {

// Conectar al servidor MySQL y seleccionar la base de datos con el nombre


'login'
$conexion = new mysqli('localhost', 'root', '', 'login');

// Consulta para buscar los usuarios en la base de datos


$consulta_usuario = $conexion->query("SELECT * FROM usuarios WHERE usuario =
'$usuario' LIMIT 1");

// 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
echo "Has iniciado la sesi�n correctamente";

} else {

// Texto de error
echo "La contrase�a utilizada no es correcta";

} else {

// Texto de error
echo "El usuario introducido no existe";

// Cerrar la conexi�n
$conexion->close();
//Esta forma de conexi�n es ineficiente. Hay riesgo de dejar hilos abiertos en el
servidor. Ej: problemas de nivel medio en los controladores y/o librer�as.
}
?>
El siguiente ejemplo hace lo mismo que el anterior, pero con la seguridad de, sea
cual sea el estado medio del servicio, si no hay forma de conectar, destruida la
clase se cierran los hilos.

<?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($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($queSQLquery){


$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_contrasenia'){
//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
Commons-emblem-Under construction-green.svg
Uno o varios wikipedistas est�n trabajando actualmente en este art�culo o secci�n.
Es posible que a causa de ello haya lagunas de contenido o deficiencias de formato.
Si quieres, puedes ayudar y editar, pero antes de realizar correcciones mayores
cont�ctalos en sus p�ginas de discusi�n o en la p�gina de discusi�n del art�culo
para poder coordinar la redacci�n.
Los servicios REST se fundamentan en tres conceptos fundamentales:

Concepto de recurso
Concepto de itinerancia
Concepto de API
Caracter�sticas de PHP
Caracter�sticas
Orientado al desarrollo de aplicaciones web din�micas con acceso a informaci�n
almacenada en una base de datos.
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 HTML
al 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
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.
XAMPP, LAMP, WAMP, MAMP, UwAmp

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


Se utiliza PHP en millones de sitios; entre los m�s destacados se encuentran
Wikipedia.org y Wordpress.com.

V�ase tambi�n
P�gina web
MySQL
ASP
ASP.NET
Linux
Referencias
https://www.php.net/archive/2019.php#2019-08-01-1
�Historia de PHP y Proyectos Relacionados�. Archivado desde el original el 30 de
octubre de 2007. Consultado el 17 de octubre de 2012.
FAQ General PHP.net.
�Proyecto GNU - Licencias de software libre incompatibles con la GPL�. Consultado
el 17 de octubre de 2012.
["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.
�NaCl: Networking and Cryptography library� (en ingl�s).
https://www.php.net/manual/es/book.sodium.php. Consultado el 7 de julio de 2019.
�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.
�Sodium is a modern, easy-to-use software library.�. https://www.php.net/docs.php.
Consultado el 7 de julio de 2019.
�nuevas generaciones� (en ingl�s). www.google.com. Consultado el 8 de febrero de
2018.
�Historical trends in the usage of server-side programming languages for websites�
(en ingl�s). W3Techs. Consultado el 10 de septiembre de 2013.
�PHP-GTK� (en ingl�s). PHP Group. Consultado el 10 de septiembre de 2013.
�PHP: Funcionamiento en l�nea de comandos�. PHP Group. Consultado el 10 de
septiembre de 2013.
�dompdf - HTML to PDF converter (PHP5)� (en ingl�s). Consultado el 10 de
septiembre de 2013.
�PHP: Extensiones de bases de datos - Manual�. PHP Group. Consultado el 10 de
septiembre de 2013.
Existen tanto PHPEclipse como PDT for Eclipse. V�anse http://www.phpeclipse.com
Archivado el 18 de marzo de 2009 en la Wayback Machine. y
http://www.eclipse.org/pdt
PHP: News Archives 2007 (en ingl�s). Consultado 9 de diciembre de 2007.
PHP: News Archives 2008 (en ingl�s).
Archivo: 13 de julio de 2007 PHP.net.
�History of PHP and related projects�. The PHP Group. Consultado el 25 de febrero
de 2008.
�PHP: PHP 4 ChangeLog�. The PHP Group. 3 de enero de 2008. Consultado el 22 de
febrero de 2008.
�PHP: Using PHP from the command line - Manual:�. The PHP Group. Consultado el 11
de septiembre de 2009.
�PHP: PHP 5 ChangeLog�. The PHP Group. 8 de noviembre de 2007. Consultado el 22 de
febrero de 2008.
�Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL�. PHP. Consultado el 20
de septiembre de 2013.
�Built-in web server�. Consultado el 26 de marzo de 2012.
�What has changed in PHP 5.5.x�. Consultado el 13 de abril de 2013.
�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.
�PHP 6: Features, Release Date, Hosting and Download�. Consultado el 6 de mayo de
2011.
�Nombre de la pr�xima versi�n de PHP�. Consultado el 24 de julio de 2014.
�RFC: PHP 7.0 Timeline�. 4 de noviembre de 2015. Consultado el 4 de noviembre de
2015.
�Benchmarking PHPNG!�.
�PHP RFC: Return Type Declarations�.
�Preparation Tasks�. Consultado el 5 de julio de 2016.
�PHP 7.1.0 GA - Externals�. externals.io. Consultado el 30 de noviembre de 2016.
�PHP: rfc:void_return_type�. php.net. 9 de noviembre de 2015. Consultado el 14 de
noviembre de 2015.
�PHP: rfc:class_constant_visibility�. php.net. 27 de octubre de 2015. Consultado
el 8 de diciembre de 2015.
�PHP RFC: Nullable Types�. php.net. 10 de abril de 2014. Consultado el 14 de junio
de 2016.
�PHP RFC: Iterable�. php.net. 10 de junio de 2016. Consultado el 19 de febrero de
2017.
�PHP RFC: Catching Multiple Exception Types�. php.net. 6 de marzo de 2016.
Consultado el 19 de febrero de 2017.
�PHP: rfc:object-typehint�. wiki.php.net. Consultado el 20 de diciembre de 2017.
�PHP: rfc:libsodium�. wiki.php.net. Consultado el 20 de diciembre de 2017.
�PHP: Sintaxis b�sica�. Consultado el 13 de abril de 2013.
Enlaces externos
Wikilibros alberga un libro o manual sobre Programaci�n en PHP.
P�gina web oficial (en ingl�s).
Manuales y librerias en PHP.
PHP-by-Example Probar las funciones de PHP en l�nea (+500).
Tutorial extensivo de PHP y MySQL (en ingl�s).
Tutorial de PHP y Mysql.
Manual oficial en espa�ol.
Manuales diversos de PHP.
Insertar registros en PHP y MySQL.

S-ar putea să vă placă și