1 2003 © Resti MARTINEZ RISQUE 1 Introducción a PHP Resti Martinez Risque Francisco M. SÁNCHEZ [email protected]
2 2003 © Resti MARTINEZ RISQUE Copyright (c) 2003 Resti MARTÍNEZ RISQUE Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the GNU Free Documentation License can be found in: http://www.gnu.org/licenses/licenses.html#FDL 2
3 2003 © Resti MARTINEZ RISQUE PHP Introducción ● Acrónimo de “PHP Hypertext Pre-Processor” ● Concebido principalmente como herramienta para el desarrollo de aplicaciones web ● PHP permite diseñar páginas dinámicas del lado del servidor. ● “Lenguaje interpretado de alto nivel embebido en páginas HTML y ejecutado en el servidor” ● Ampliamente utilizado junto a ASP, JSP, Cold Fusion y Perl. 30.10.2003 3
4 2003 © Resti MARTINEZ RISQUE PHP Caracteristicas ● Caracteristicas: – Software libre – Multiplataforma: U*x, Win32, Mac OS, etc... – Soporte para multiples servidores: Apache, Microsoft IIS, etc... – Sigue la filosofia del Software Libre – Complemento ideal para el tandem LAMP (Linux-Apache-MySQL-PHP) – Sencillez de uso para programadores principiantes – Potente para programación avanzada: BD, sockets, gráficos, etc 30.10.2003 4
5 2003 © Resti MARTINEZ RISQUE PHP ASP vs PHP 30.10.2003 5 * - Existen soluciones como Sun ONE ASP que permiten su utilizacion sobre Linux/Unix pero conlleva un coste elevado. * * - ASPEncrypt (componente encriptacion), - ServerObject's Qmail (componente para correo electronico), - Artisans SAFileUp (componente para descargas de ficheros)
6 2003 © Resti MARTINEZ RISQUE PHP Estáticas vs Dinámicas 30.10.2003 6 ● Ejemplo1 Estático : Listar Números del 1 al 10 ● http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/01ej.html
7 2003 © Resti MARTINEZ RISQUE PHP Estáticas vs Dinámicas 30.10.2003 7 ● Ejemplo1 Dinámico: Listar Números del 1 al 10. http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/01ej.phps
8 2003 © Resti MARTINEZ RISQUE PHP Estáticas vs Dinámicas 30.10.2003 8 Respuesta HMTL Petición HMTL Páginas Estáticas Cliente Servidor Páginas Dinámicas Respuesta HMTL Petición PHP Motor PHP Go! HTML Cliente Servidor
9 2003 © Resti MARTINEZ RISQUE 30.10.2003 9 Estructura de Datos y Control de Flujo
10 2003 © Resti MARTINEZ RISQUE PHP Script en PHP 30.10.2003 10 Para escribir código PHP dentro de una página html, tenemos varias alternativas: * Incluir el código entre * Incluir el código entre bloques y El resultado de la salida estándar de ese código será escrito en esa misma posición de la página html.
11 2003 © Resti MARTINEZ RISQUE PHP Comentarios en PHP 30.10.2003 11 Los comentarios en PHP se escriben: * Con // o # para comentarios de una sóla línea. * Entre /* y */ para comentarios de una o más líneas. Ejemplo:
12 2003 © Resti MARTINEZ RISQUE PHP Variables - Declaracion 30.10.2003 12 Todas las variables en PHP empiezan con el caracter dólar "$" Las variables se declaran simplemente inicializándolas:
13 2003 © Resti MARTINEZ RISQUE PHP Variables - Tipos 30.10.2003 13 Los tipos básicos de PHP son : Integer, Double, String, Array y Object. Las variables booleanas no existen Cualquier valor numérico distinto de 0 es TRUE Cualquier cadena no vacía se considera TRUE Las variables PHP no tienen un tipo fijo, dependen de la última asignación realizada. La función gettype($nombrevar) permite obtener el tipo de esa variable en forma de cadena:
14 2003 © Resti MARTINEZ RISQUE PHP Variables - Tipos 30.10.2003 14 Ejemplo: Is_Double($varname), Is_Array($varname), Is_String($varname) y Is_Object($varname) también nos permiten saber el tipo de una variable.
15 2003 © Resti MARTINEZ RISQUE PHP Variables - Cadenas 30.10.2003 2003© Resti MARTINE 15 Las cadenas en PHP se especifican rodeadas por comillas simples o por comillas dobles:
16 2003 © Resti MARTINEZ RISQUE PHP Variables - Cadenas 30.10.2003 16 Existe un pequeño matiz entre una y otra: http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/02ej.phps
17 2003 © Resti MARTINEZ RISQUE PHP Variables - Cadenas 30.10.2003 17 El operador para concatenar cadenas es el punto ".": http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/03ej.phps
18 2003 © Resti MARTINEZ RISQUE PHP Variables - Cadenas 30.10.2003 18 Las comillas pueden abarcar más de una línea sin ningún problema: http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/04ej.phps Para escapar las comillas se utiliza la combinación \'.
19 2003 © Resti MARTINEZ RISQUE PHP Variables - Arrays 30.10.2003 19 Los arrays en PHP son bastante potentes y flexibles: http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/05ej.phps
20 2003 © Resti MARTINEZ RISQUE PHP Variables - Arrays 30.10.2003 20 Si no ponemos subíndices, el valor asignado se asigna a las siguiente posición libre del array. Al comenzar en la posición 0 el codigo anterior quedaria:
21 2003 © Resti MARTINEZ RISQUE PHP Variables - Arrays 30.10.2003 21 Otra forma de crear arrays es mediante la construcción Array():
22 2003 © Resti MARTINEZ RISQUE PHP Variables - Arrays 30.10.2003 22 Arrays Asociativos. En vez de accederse por índice, se accede por clave o key http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/06ej.phps
23 2003 © Resti MARTINEZ RISQUE PHP Variables - Arrays 30.10.2003 23 Arrays Asociativos. La construcción Array() también puede usarse con arrays asociativos: http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/07ej.phps http://www.htmlcodetutorial.com/_XMP.html
24 2003 © Resti MARTINEZ RISQUE PHP Variables - Arrays 30.10.2003 24 La construcción List() nos permite asignar los valores de un array a una serie de variables de una sola vez: http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/08ej.phps
25 2003 © Resti MARTINEZ RISQUE PHP Variables - Conversiones 30.10.2003 25 Para convertir una variable de un tipo a otro se emplea el casting mediante paréntesis: También podemos emplear la función SetType($varname, "vartype") para forzar que la variable $varname sea del tipo vartype.
26 2003 © Resti MARTINEZ RISQUE PHP Variables - Conversiones 30.10.2003 26 PHP es bastante consecuente en cuanto a los tipos, de manera que si sumamos un número a una cadena, esa cadena se convierte en un número: http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/09ej.phps
27 2003 © Resti MARTINEZ RISQUE PHP Constantes 30.10.2003 27 Las constantes en PHP son literales que no comienzan por "$" y que se inicializan con la construcción define(nomconst): http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/10ej.phps
28 2003 © Resti MARTINEZ RISQUE PHP Sentencias de Control - IF 30.10.2003 28 Las estructuras de control de PHP son iguales a las de C Condicional IF http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/11ej.phps
29 2003 © Resti MARTINEZ RISQUE PHP Sentencias de Control - SWITCH 30.10.2003 29 Condicional SWITCH
30 2003 © Resti MARTINEZ RISQUE PHP Sentencias de Control - Bucles 30.10.2003 30 Bucle FOR Bucle WHILEBucle DO...WHILE
31 2003 © Resti MARTINEZ RISQUE PHP Funciones - Esqueleto 30.10.2003 31 Un esqueleto tipico para las funciones es el siguiente: http://gayuba2.datsi.fi.upm.es/~rmartinez/tutorial_php/ej12.php
32 2003 © Resti MARTINEZ RISQUE PHP Funciones - Parametros 30.10.2003 32 Parametros por Defecto. Siempre que una función tenga “n” parámetros por defecto, éstos deberán ser los “n” últimos parámetros declarados. http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/13ej.phps
33 2003 © Resti MARTINEZ RISQUE PHP Funciones - Parametros 30.10.2003 33 Parametros por Referencia. En PHP por defecto los parámetros se pasan por valor. Si queremos que los valores se modifiquen en la funcion tendremos que pasarlo por refencia. http://laurel.datsi.fi.upm.es/~fsanchez/php/intro/14ej.phps
34 2003 © Resti MARTINEZ RISQUE PHP Formularios 30.10.2003 34 Los formularios sirven para enviar informacion del Cliente al Servidor Existen varias formas de creación de páginas PHP para procesar la información que llega de los clientes. ● 1 archivo HTML para Enviar y 1 archivo PHP para recibir ● 1 archivo PHP para Enviar y 1 archivo distinto PHP para recibir ● 1 archivo PHP para Enviar y el mismo archivo para recibir.
35 2003 © Resti MARTINEZ RISQUE PHP Formularios 30.10.2003 35 Ejemplo 15; de un formulario con una sola pagina Web.
36 2003 © Resti MARTINEZ RISQUE PHP Formularios 30.10.2003 36 Mismo ejemplo utilizando el metodo GET (ejemplo 16).
37 2003 © Resti MARTINEZ RISQUE PHP Formularios 30.10.2003 37 Hay que destacar la importancia de validar en Servidor todos los datos que recibimos por parte del Cliente. Un dato que no validemos supondra un agujero de seguridad bastante fácil de atacar. Típicos ataques por no validar: ● Ataque de “Inyeccion SQL” ● Ataque de “Cross-Site-Scripting”