PHP
Lenguajes de Internet
sQué es PHP?
PHP = HyperText Preprocesor • Lenguaje de scripts para el servidor Web
(server-side processing) • Open Source • Puede ir en el mismo documento que el
código HTML • Simple • Soportado en gran número de sistemas operativos: UNIX
(Linux, Solaris, OpenBSD), Microsoft Windows, Mac OS X • Soporta la mayoría de
servidores web: Apache, Microsoft IIS, Personal Web Server, iPlanet, etc •
Permite no solo generar HTML sino también imágenes, PDFs, Flash, XML • Soporta
un gran número de bases de datos: Oracle, mSQL, MySQL, ODBC, Sybase, SQL
Server, etc • Soporta un gran número de servicios y protocolos: LDAP, IMAP,
SNMP, NNTP, POP3, HTTP, etc
IPN ESIME Enero 2007 Juan Carlos Torres 2
PHP
sDónde va PHP?
•Dentro del documento HTML podemos emplear tags especiales que indican que lo
que va entre ellos es código PHP. Ejemplo
Script de ejemplo Pagina simple Aqui el codigo HTML Has visto el parrafo
anterior?
Código PHP
ejemplo.php
• En
el servidor se establece que archivos pueden contener código PHP.
Generalmente por la extensión del mismo archivo
•El servidor busca en el documento los tags que marcan el código PHP. Lo
ejecuta y si el script escribe texto (print()) ese texto aparece donde estaba
el código PHP al enviarse el documento (no se cambia el archivo)
IPN ESIME Enero 2007 Juan Carlos Torres 3
Flujo de Proceso de PHP
Módulo de procesado de PHP HTML
Procesarmipag.php
Documento al cliente
misArchs/mipag.php
Solicitud del cliente: https://www.miservidor.com/misArchs/mipag.php
Sintaxis de PHP
Como incluir código PHP en un documento HTML
• • • • • El módulo de PHP busca uno de los tags que emplea para reconocer el
comienzo de código PHP Ejecuta el código hasta encontrar una marca de final de
código Continúa por el documento hasta encontrar otra marca de comienzo Todo lo
que esté fuera de esas marcas queda inalterado Las formas más adecuadas
(siempre disponibles) de marcar el comienzo y final de código PHP son:
• • •
Las sentencias terminan en ; aunque la última no lo necesita Comentarios estilo
C++ (/* */ o //) o estilo Shell (#) Se puede “salir de modo PHP” dentro de
condiciones, por ejemplo:
This is true. This is false.
Variables
Como se declaran • No hay que declarar las variables • PHP decide en tiempo de
ejecución el tipo que deben tener según el contexto en que se empleen • Antes
del nombre de la variable hay que poner siempre $ • Su nombre distingue
mayúsculas de minúsculas • Nombre: '[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*'
Tipos
•
boolean
Dos valores posibles: true y false (case-insensitive) Muchos operadores
devuelven un valor boolean que se puede emplear en una estructura de control
•
integer
Se pueden representar en base 8, 10 ó 16 de igual forma que en C El tamaño en
bits depende de laplataforma Si se desborda se convierte en un float No existe
operador de división entera
• float
Se pueden introducir en formato decimal o mantisa-exponente Su tamaño en bits
depende de la plataforma
Tipos
• string
Es una serie de caracteres (bytes) No hay límite para su tamaño Cadenas
literales se pueden expresar mediante: • Apóstrofes o comas simples (’)
– El apóstrofe se imprime como carácter de control (’) – En su interior no se
interpretan variables u otras secuencias de escape o control (por ejemplo
ignora n)
• Dobles comillas (”)
– Dentro de las comillas sí se interpretan variables y caracteres de control
(n, t, etc) – El texto funciona como texto entre dobles comillas
Se puede acceder a un carácter en concreto con $cadena donde el índice
es un entero que empieza en 0 (también es válido $cadena[indice])
Tipos
•
string
(cont)
Se pueden concatenar con el operador .
• Ejemplo:
$string3 = $string1.$string2;
Otro tipo se convierte a cadena automáticamente cuando el contexto lo requiere
(por ejemplo en un print() ) Una cadena se convierte automáticamente en el
número que contiene en el comienzo de su texto cuando el contexto lo requiere
Tipos
•
array
En realidad contienen un mapeo entre claves y valores (array asociativo) El
mismo array se puede emplear como array asociativo o como array indexado Los
elementos pueden ser de cualquier tipo(incluso otros arrays) y ser de tipos
diferentes Se crean con array()
array( clave => valor, ) ejemplo: $unarray = array(“dia” => 15, 1
=> “uno”); ejemplo: $otro = array(“unarray” => array(0=>14, 4=>15),
“nombre” => “Una tabla”);
La clave puede ser un entero o un string En una asignación al array, si no se
especifica la clave/índice: • Se emplea como índice el máximo índice entero +1
• Si no hay ningún índice entero se emplea 0
IPN ESIME Enero 2007 Juan Carlos Torres 10
Tipos
•
array
(cont)
En las asignaciones se emplean corchetes para indicar la clave/índice
$miarray[‘nombre’]=“Fran”; Si el array no existe se crea Para eliminar un
elemento del array hay que emplear unset($miarray[‘nombre’]); unset($miarray);
unset()
Tipos
a— object
Tiene que existir una clase para el objeto Las clases se definen con class •
ejemplo:
class Carro }
Las clases soportan herencia (no múltiple) empleando extends. • ejemplo: class
OtroCarro extends Carro Los objetos se crean con new • ejemplo: $micarro=new
Carro; Se accede a variables o métodos con -> • ejemplo:
$micarro->add_uno(“Libro de Stevens”); Se puede convertir el objeto en una
cadena con serialize() y de nuevo en un objeto con unserialize() (útil para
guardar en archivo)
IPN ESIME Enero 2007 Juan Carlos Torres 12
Tipos
•
resource
Contiene una referencia a algún recurso externo (por ejemplo la conexión a una
base de datos) Son creados por funcionesespeciales a— Funciones útiles:
var_dump(): Muestra información sobre una variable (tipo, contenido),
incluyendo la estructura y contenido de arrays print_r(): Muy similar pero
muestra también propiedades protegidas o privadas
Operadores
• Aritméticos: + - * / % • Asignación:
= += -= *= /= %= .= == === != !== < > = ?:
(equivalente a system(), exec(), etc)
• Operaciones sobre bits: & | ^ ~ > • Comparación: • Ejecución: ` `
ejemplo:
• Control de errores: @
$listado=`ls -l`; -- (prefijos y postfijos) and or xor ! && ||
• Incremento/Decremento: ++ • Lógicos: • Cadenas .=
• Arrays: + (une dos arrays, si hay claves duplicadas se mantienen los
valores del array de la izquierda)
Estructuras de Control •
if (expresion) else if else
IPN ESIME Enero 2007
$a = 1; $a = 1; if($a == 1) if($a == 1) }
else if($a == 2) else if($a == 2) } else
else }
Juan Carlos Torres 15
Estructuras de Control
•
while (expresion)
Ejemplo:
$i = 0; while($i < 5)
•
do while (expresion);
IPN ESIME Enero 2007 Juan Carlos Torres 16
Estructuras de Control
1 2 4
• for (expr1; expr2; expr3)
Ejemplo:
for($i=0; $i “one”, “dos” => “two”, “tres” => “three”); foreach ($arr as
$valor) Ejemplo: $arr = array(“uno” => “one”,
“dos” => “two”, “tres” => “three”); foreach ($arr as $clave => $valor)
IPN ESIME Enero 2007 Juan Carlos Torres 18
Estructuras de Control
• break; • continue;
Estructuras de Control
• switch (expresion)
Ejemplo:
switch($a)
IPN ESIME Enero 2007 Juan Carlos Torres 20
Estructuras de Control
• include()
Permite “incluir” otro script php en ese lugar (similar a #include en C) Al
interpretar ese otro archivo inicia en modo HTML así que si el contenido es PHP
tendremos que marcarlo () Si no se encuentra el archivo a incluir, se muestra
un mensaje: warning Se puede poner dentro de una condición (entonces es
obligatorio poner ). Ejemplo: if ($condicion)
• require()
Semejante a include() pero en caso de no encontrar el archivo a incluir envía
un mensaje de : fatal error
• include_once
realiza un include de un archivo y sólo una vez
Funciones
• Ejemplo:
function mifuncion($arg1, $arg2) • Dentro de la función puede incluir otras
funciones, clases, etc. • En el nombre de la función no distingue mayúsculas •
Se pueden definir dentro de un bloque de condición y entonces no existen hasta
que la ejecución pase por él • Losargumentos pueden tener valores por defecto
(como en
C++ no debe haber argumentos a su derecha sin valor por defecto)
Ejemplo:
function mifunc2($arg1, $arg2=“no me han pasado nada”)
Alcance de las Variables
• Variables definidas en el script (globales) alcanzan al contenido de archivos
incluidos (include, require) • Dentro de las funciones no se ven las variables
externas sino solo las que se declaren ahí • Para que una variable externa se
pueda emplear dentro de una función hay que declararla en ella como global
Ejemplo: $a=“Hola”; function mifunc()
• Existen unas variables llamadas Superglobales que existen en cualquier punto
del script (incluso dentro de funciones sin
declararlas como globales)
Sesiones en PHP
• • • Sucede lo mismo con los scripts PHP que con CGIs: no se guarda estado PHP
nos permite guardar el contenido de unas variables asociándolas a una sesión En
realidad lo que hará será guardar esas variables localmente y mandar al usuario
un identificador de sesión asociado a ese conjunto de variables en forma de una
cookie Cuando el cliente solicita otro script PHP envía su cookie con el
identificador de sesión Se accede al archivo correspondiente recuperando esas
variables de forma que parece conservar el contenido asignado por el anterior
script
• •
Un script guarda la información obtenida del usuario en la pagina anterior en
variables de sesión. Al mandar la pagina siguiente manda unacookie con el ID de
la sesión
Al llamar a un nuevo script se le pasa el ID de la sesión con lo que este puede
recuperar las variables guardadas
Variables y Algunas Funciones
• $_SESSION
– Variable superglobal – Array con las variables que se guardan en la sesión
(la clave es el nombre de la variable)
•
bool session_start(void)
– Crea una nueva sesión o recupera las variables de una anterior – En sesiones
implementadas con cookies hay que llamar a esta función antes de que se envíe
algo al navegador (para que se pueda poner la cookie en la cabecera HTTP)
•
bool session_destroy(void)
– Destruye los datos asociados a esta sesión (archivo donde guarda el servidor
las variables de la sesión) – No invalida (unset) las variables ni la sesión
• •
string session_encode(void)
– Devuelve una cadena con el contenido de la sesión codificado
session_decode(string data)
– Decodifica la cadena que se le pasa creando las variables que indica
Otras Opciones Interesantes
• Enviar cabecera HTTP para que el usuario tenga que autentificarse (como con
un require user del Apache) • Que el usuario suba archivos (se hace mediante el
POST de HTTP) • Funciones de red como gethostbyname() o
gethostbyaddr()
• Gestion de archivos: fopen(), fread(), fwrite(), unlink() • Funciones
matemáticas fclose(),
PHP
sPreguntas ?