PHP
Personal Home Page
Página 1 PHP
Introducción (1)
• ¿ Qué es PHP ?
– Acrónimo de
PHP: Hypertext Preprocessor
.
– Lenguaje interpretado de alto nivel que permite
desarrollar fácilmente páginas dinámicas.
• Similar a los lenguajes C y Perl.
– El código va embebido en HTML mediante
etiquetas especiales de comienzo y final.
Página 2 PHP
Introducción (2)
– El código PHP se ejecuta en el servidor. El cliente
nunca verá el código del programa PHP, sólo
llegarán las páginas HTML que genere el programa.
Introducción (3)
• Esquema de funcionamiento
PHP
solicitud Ejecución de código PHPServidor Web
respuesta procesadoIntroducción (4)
• ¿ Qué permite ?
– Uso primario
• Escribir scriptsde servidor
– Procesar la información de formularios, generar páginas con contenidos dinámicos, o mandar y recibircookies.
• Otros
–
Scripts
de línea de comandos
– Aplicaciones clientes gráficas
Página 5 PHP
Introducción (5)
• Ventajas del PHP
– Fácil de aprender
– Permite hacer cualquier cosa
• Acceso a bases de datos
• Creación de documentos PDF, imágenes y películas Flash • Soporta comunicación con otros servicios (FTP, …)
– Está ampliamente probado como herramienta y se
puede utilizar en cualquier plataforma.
– Existen
numerosos
recursos
para
facilitar
el
desarrollo de aplicaciones (bibliotecas de clases).
Página 6 PHP
Sintaxis básica
• Saliendo de HTML
– PHP sólo interpreta el texto entre códigos especiales
•<?phpCódigo PHP?>
• <script language=“php”>Código PHP</script>
– Separación de instrucciones: ;
– Comentarios
• Tipo C/C++ Página 7 PHPTipos
array entero string
punto flotante objeto
Página 8 PHP
• Soporte de tipos de PHP
• La ligadura del tipo es dinámica, aunque se
puede forzar la conversión a un tipo.
Variables (1)
• Uso de variables
– Las variables se representan como un signo de dólar
seguido por el nombre de la variable.
• El nombre de la variable es sensible a minúsculas y mayúsculas
• Asignación por valor: $i = 10; $nombre = “pepe”; • Asignación por referencia: $ref = &$nombre; • Variables array
$a = array (“uno”=>1, “dos”=>2, “tres”=>3); Página 9 PHP
Variables (2)
• Ámbito de las variables
– Contexto en el que la variable está definida (abarca
ficheros incluidos y requeridos). Habitualmente el
documento.
– En las funciones definidas por el usuario el ámbito,
por defecto, es local a la función.
• Se pueden definir variables globales en una función con la palabra reservada global.
• También se puede utilizar el array $GLOBALS.
Página 10 PHP
Variables (3)
• Las variables estáticas son variables locales a la función pero que conservan el valor en llamadas sucesivas. Se definen constatic.
• Variables variables
– Son nombres de variables que se pueden establecer y
usar dinámicamente.
$a = "hola"; echo "$a ${$a}"; $$a = "mundo"; echo "$a $hola";
• Constantes
define(PI, 3.1415926) hola mundoOperadores
• Tipos de operadores
– Operadores aritméticos – Operadores de asignación– Operadores de manipulación de bits – Operadores de comparación
– Operadores de incremento y decremento – Operador de ejecución (` `)
– Operadores lógicos – Operadores de cadenas (.)
Estructuras de control
• Condicionales:
if
,
else
y
elseif
• Iterativas:
while
,
do..while
,
for
y
foreach
• Alternativa múltiple:
switch
Página 13 PHP
$a = array ("uno" => 1, "dos" => 2, "tres" => 3);
foreach( $a as$key => $value ) echo "Índice: $key; Valor:
$value<br>\n"; $a = 10.5; $b = $a;
if($a > $b)
print "$a es mayor que $b";
elseif($a == $b) print "$a es igual que $b";
else
print "$a es menor que $b";
Funciones (1)
• Definidas por el usuario
– Sintaxis
function nombre ($arg1, $arg2, …, $argN) { código de la función;
return $valor_retornado; }
• Los parámetros se pueden pasar por valor o por referencia.
• En el código de la función puede aperecer cualquier instrucción válida de PHP, incluso en otras funciones o definiciones de clase.
Página 14 PHP
Funciones (2)
– La sobrecarga de funciones y la ocultación o
redefinición de funciones no está permitida.
– Ejemplo:
functionfact ($n=0) {
$result = 1;
for($i=1; $i <= $n; $i++) $result *= $i; return$result; } Página 15 PHP
Funciones (3)
– Las funciones soportan parámetros por defecto y
parámetros múltiples
• Funciones
– func_num_args(), func_get_arg() – func_get_args()
• Funciones variable
– Si una variable tiene unos paréntesis añadidos al
final, PHP buscará una función con el mismo
nombre que la evaluación de la variable, e intentará
ejecutarla (
callbacks
, tablas de funciones).
Página 16 PHP
Datos de formularios (1)
• Método GET
– Los valores suministrados se almacenan en la variable predefinida superglobal $_GET de tipoarray.
<form method="get"
action="<? echo $_SERVER["PHP_SELF"]; ?>"> <fieldset>
Nombre: <input type="text" name="nombre"> <br /><br />
<input type="submit" value=" Enviar "> <input type="reset" value="Restablecer"> </fieldset> </form> Página 17 PHP
Datos de formularios (2)
• Método POST
– Los valores suministrados se almacenan en la variable predefinida superglobal $_POST de tipoarray.
<form method="post"
action="<? echo $_SERVER["PHP_SELF"]; ?>"> <fieldset>
Nombre: <input type="text" name="nombre"> <br /><br />
<input type="submit" value=" Enviar "> <input type="reset" value="Restablecer"> </fieldset>
</form>
Página 18 PHP
Paso de información
• Mediante datos de tipo oculto
– Permiten transferir datos leídos de formularios o
generados por la aplicación.
<input type=“hidden” name=“nombre” value=“valor”>
• Mediante enlaces
– <a href=“pr.php?nombre=valor”>enlace</a>
– <a href=“pr.php?n1=v1&n2=v2”>
enlace</a>
Sesiones (1)
• Gestión de sesiones
– Facilita el seguimiento de las acciones que realiza el
cliente.
• A cada visitante del sitio se le asigna un identificador único, session_id. Éste se almacena en una cookie o se propaga en la URL.
– Una vez creada la sesión se pueden registrar las
variables de sesión mediante la variable superglobal
$_SESSION de tipo
array
.
Sesiones (2)
– Funciones
•bool session_start(void): crea una sesión (o la continúa basándose en el session_id pasado por GET o mediante unacookie).
•bool session_destroy(void): destruye todos los datos asociados con la sesión actual. No destruye ninguna de las variables globales asociadas a la sesión ni lacookie. •bool session_regenerate_id(void): reemplazará laidde
sesión actual con una nueva, y conservará la información de sesión actual. Página 21 PHP
Sesiones (3)
– Ejemplo <? session_start();if(! isset($_SESSION[“inicial”])) { // nueva sesión
session_regenerate_id(); $_SESSION[“inicial”] = session_id(); echo “Nueva sesión: “ . $_SESSION[“inicial”] . “<br />\n”; }
else{
echo “Continuación de la sesión: “ . $_SESSION[“inicial”]. “<br />\n”;
echo “Destruyendo la sesión ... “; $_SESSION = array();
if(session_destroy()) echo “sesión destruida.<br />\n”;
elseecho “se ha producido un error.<br />\n”; } ?>
Página 22 PHP
Sesiones (4)
•string session_name([string]): obtiene o modifica el nombre de la sesión actual. Debe utilizarse antes de session_start para dar nombre a una sesión.
•string session_id([string id]): obtiene o modifica el identificador para la sesión actual. También se puede utilizar la constante SID.
•string session_save_path([string path]): obtiene o modifica la ruta al directorio utilizado actualmente para guardar los datos de la sesión.
•string session_encode(void): retorna una cadena con el contenido de la sesión actual.
•bool session_decode(string datos).
Página 23 PHP
ADOdb (1)
• Conexión a base de datos
set_include_path(get_include_path() .':/usr/share/php/adodb/'); include('adodb.inc.php');
$dsn = “$dbdriver://$user:$password@$server/$database” $conn = NewADOConnection($dsn);
$conn = &ADONewConnection($dbdriver); // “mssqlpo” $conn->Connect($server, $user, $password, $database);
Página 24 PHP
ADOdb (2)
–
$conn
es un objeto de la clase
ADOConnection
de
conexión a base de datos.
– Algunas propiedades del objeto:
•databaseType: Nombre del sistema de base de datos al que nos conectamos.
•debug: Con el valor true provoca que se muestren los mensajes de depuración.
•true: el valor usado para representar verdadero. •false: el valor usado para represertar falso.
Página 25 PHP
ADOdb(3)
•fmtDate: el formato usado por la funciónDBDatepara enviar fechas a la base de datos.
•sysDate: cadena que contiene el nombre de la función de base de datos que genera la fecha actual.
Página 26 PHP
ADOdb (4)
– Algunos métodos del objeto:
•Connect($host,[$user],[$password],[$database]): conexión no persistente al DSN o servidor $host. Si la conexión falla retorna falso.
•Execute($sql,$inputarr=false): ejecuta el enunciado SQL en$sqly retorna un objeto de la claseADORecordSet
si es correcto.
•ErrorMsg(): retorna el último mensaje de error.
•SetFetchMode($mode): asigna el modo para obtener los resultados de la conexión (ADODB_FETCH_ASSOC o
ADODB_FETCH_NUM).
ADOdb (5)
• Objeto
ADORecordSet
– Este objeto se obtiene al ejecutar de forma
satisfactoria un enunciado SQL con el método
ADOConnection->Execute($sql)
.
– Este objeto contiene un cursor virtual para podernos
mover fila a fila por los resultados obtenidos.
– Algunas propiedades del objeto:
•fields:arrayque contiene la fila actual. No es asociativo, sino indexado de 0 al número de columnas menos uno.
ADOdb (6)
•sql: contiene el enunciado SQL utilizado para generar las filas de datos.
•EOF: verdadero si se ha movido cursor después de la última fila de datos.
– Algunos métodos:
•UserDate($str, [$fmt]): convierte la cadena de caracteres con una fecha$stra otro formato fecha.
•SQLDate($dateFormat, $basedate=false): Retorna una cadena que contiene la funcion SQL nativa para formatear una fecha o el campo fecha$basedate.
Página 29 PHP
ADOdb (7)
•MoveNext(): mueve el cursor a la siguiente fila. •Move($to): mueve el cursor a la fila$to.
•FetchRow(): retorna unarrayque contiene la fila actual y mueve el cursor a la fila siguiente.
•FieldCount(): número de columnas en elrecordSet. •FetchObject($toupper=true): retorna la fila actual como
un objeto.
•FetchObject($toupper=true): retorna la fila actual como un objeto y mueve el cursor a la fila siguiente.
•CurrentRow(): retorna el número de fila actual.
Página 30 PHP