La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INTRODUCCIÓN A PHP Curso de PHP Por Vicente Aguilar Imparte: José Alberto Rodríguez Castañeda.

Presentaciones similares


Presentación del tema: "INTRODUCCIÓN A PHP Curso de PHP Por Vicente Aguilar Imparte: José Alberto Rodríguez Castañeda."— Transcripción de la presentación:

1 INTRODUCCIÓN A PHP Curso de PHP Por Vicente Aguilar aguilar@linuxfreak.com Imparte: José Alberto Rodríguez Castañeda

2 Dinámicas VS Estáticas Una página Web estática es aquélla que no cambia cuando un usuario la solicita: el servidor Web envía la página al navegador Web solicitante sin modificarla. El servidor modifica las páginas Web dinámicas antes de enviarlas al navegador solicitante.

3 Estáticas

4 Dinámicas

5 Acceso a base de datos Un servidor de aplicaciones le permite trabajar con recursos del lado del servidor, como una base de datos. Por ejemplo, una página dinámica puede indicar al servidor de aplicaciones que extraiga datos de una base de datos y los inserte en el código HTML.

6 Aplicación Web Una aplicación Web es un conjunto de páginas Web que interactúan entre sí, con el usuario y con diversos recursos en un servidor Web, incluidas las bases de datos. El contenido final de una página se determina sólo cuando el usuario solicita una página del servidor Web.

7 Base de datos El servidor de aplicaciones sólo se puede comunicar con la base de datos a través de un controlador que actúe de intermediario con la base de datos: el software actúa entonces como un intérprete entre el servidor de aplicaciones y la base de datos.

8

9 Tecnológias de servidor

10 1. INTRODUCCIÓN: Diferencias entre ASP y PHP Software propietario Free Software Plataformas Microsoft Varios lenguajes (VBScript, JavaScript) Multiplataforma Un solo lenguaje: PHP ASPPHP

11 Características de PHP Más rápido que ASP Lenguaje más fácil y potente Integración perfecta con 8 servidores HTTP Acceso a 20 tipos de Bases de Datos Diseño modular de fácil ampliación Licencia abierta

12 Historia y Desarrolladores Fechas Inicio del desarrollo en otoño de 1994 PHP Versión 1 en primavera 1995 PHP Versión 2 1995-1997 PHP Versión 3 1997-2000 PHP Versión 4 en el segundo trimestre de 2000 Equipo de Desarrollo (195 personas con acceso al CVS) Zeev Suraski y Andi Gutmans (Israel) Shane Caraveo (Florida) Stig Bakken (Norway) Andrei Zmievski (Lincoln, Nebraska) Sascha Schumann (Dortmund, Germany) Thies C. Arntzen (Hamburg, Germany) Jim Winstead (Los Angeles) Sam Ruby (Raleigh, NC) Rasmus Lerdorf (San Francisco)

13 Estadísticas de uso Fuente: etcraft Agosto 2000etcraft 3,314,634 Dominios, 637,746 Direcciones IP 19,823,296 Dominios analizados PHP instalado en el 16.7% de todos los dominios Fuente: ecuritySpacecom Septiembre 2000 Informe sobre Módulos ApacheecuritySpacecom 1,322,329 Servidores Apache analizados 429,589 (32.49%) PHP 247,642 (18.73%) Frontpage 133,414 (10.09%) mod_perl 111,576 (8.44%) mod_ssl 78,030 (5.90%) OpenSSL 46,404 (3.51%) ApacheJServ

14 Plataformas soportadas Plataformas (actualidad): UNIX (todas las variantes) Win32 (NT/W95/W98/W2000) QNX Mac (WebTen) OS/2 BeOS Plataformas (en perparación): OS/390 AS/400 Servidores: Apache (UNIX,Win32) CGI fhttpd ISAPI (IIS, Zeus) NSAPI (Netscape iPlanet) Java servlet AOLServer Roxen Servidores (en preparación): Apache 2.0 WSAPI (O'Reilly WebSite) phttpd thttpd

15 Bases de datos soportadas SQL Adabas D Empress IBM DB2 Informix Ingres Interbase Frontbase mSQL Direct MS-SQL MySQL ODBC Oracle (OCI7,OCI8) PostgreSQL Raima Velocis Solid Sybase Otros dBase filePro (sólo lectura) dbm (ndbm, gdbm, Berkeley db)

16 2. El lenguaje PHP

17 2.1. Extensión de los ficheros .php3 Indica código PHP 3.x. .php4 Indica código PHP 4.x. .php Indica código PHP. Preferiremos esta extensión por ser más genérica. .phtml Actualmente en desuso.

18 2.2. Delimitadores echo 'Algunos editores (como el FrontPage) Sólo entienden este método';

19 20 OR Hour(time) Buenas noches. Buenos días. 20 || Hour(time) Buenas noches. Buenos días. <?php if ( Hour(time)>20 || Hour(time)<4) { echo “Buenas noches.”; } else { echo “Buenos días.”; } ?> 2.2. Delimitadores. Ejemplo.

20 2.3. Fin de línea print( date("M d, Y H:i:s", time()) ); print ( date( "M d, Y H:i:s", time() ) ;

21 2.4. Comentarios /* Comentarios estilo C. * Pueden extenderse durante varias líneas. */ // Comentarios estilo C++. Hasta fin de línea. # Comentarios estilo Perl. Hasta fin de línea.

22 2.5.1. Variables. Declaración y Uso. NO hace falta declararlas Llevan delante el signo del dólar ‘$’. $var_1 = 123; $var_2 = ’hola’; $var_3 = $var_1 * 2;

23 $mi_variable = ’Inicializamos como texto’; $mi_variable = 3; // Entero. $mi_variable = 3.14 * $mi_variable; // Float. $mi_variable = new MiClase(); // Objeto. Variables débilmente tipadas (tipo mixed). 2.5.2. Variables. Tipado.

24 2.5.2.Variables. Tipado. Conversión automática. PHP realiza conversiones automáticas de tipo: $mivar = 123; echo $mivar; // Se convierte a string $mivar = ’3’; // Se convierte a entero $mivar = 2 + $mivar; // para realizar la suma

25 2.5.2.Variables. Tipado. Conversión explícita. Operador cast: $mivar = (string)123; Cabiar el tipo de una variable: $mivar = 12; settype($mivar, "double");

26 2.5.3. Variables. Ámbito. En el cuerpo de un fichero, las variables son GLOBALES al fichero y ficheros incluidos. En una función, son LOCALES a esa función. Dentro de una clase, sólo pueden ser accedidas a través del operador “->” sobre el nombre del objeto.

27 2.5.4. Referencias. Se definen con el carácter ‘&’: $alias = &$variable Se puede eliminar una referencia con la función unset(): $a = 1; $b = &$a; unset ($a); // Pero $b sigue valiendo 1

28 2.6. Tipos de datos. Enteros, en decimal, octal o hexadecimal. $MiVar = 123; Punto flotante. $MiVar = 1.3e4; Arrays. $MiVar[2] = 123; Strings. $MiVar = “Cadena de texto\n”; Objetos: $MiVar = new MiClase();

29 Tipos de datos Integer. Double. Boolean. String. Array. Object.

30 Conversiones Cambiar el tipo de dato a una variable: settype($var, “tipo de dato"). Retornar el tipo de dato de una variable: gettype($var). Casting, ejemplo: (tipo de dato) $var. Funciones relacionadas: is_bool($var), is_int($var), is_long($var), is_double($var), is_string($var), is_object($var), etc.

31 Arreglos Para crear un vector basta con usar corchetes. Ejemplo: var[1000]. Las matrices se utiliza doble corchete. Ejemplo: var[25][30]. En vez de utilizar índices se puede utilizar nombres. Ejemplo: var[‘nombre’].

32 2.6.3. Tipos de datos. Arrays. $MiArray[0] = 1; $MiArray[1] = “hola!!”; $MiArray[] = 3; echo $MiArray[2]; // 3

33 2.6.3. Tipos de datos. Arrays (2). Funcionan como vectores o tablas hash al mismo tiempo: $MiArray[“nombre”] = “Homer”; echo $MiArray[0]; // 1 echo $MiArray[“nombre”]; // “Homer” Y pueden tener más de una dimensión: $MiOtroArray[1][“pepe”][4] = “3 dimensiones!”;

34 2.6.3. Tipos de datos. Arrays (3). También se pueden definir con el constructor array() : $OtroArrayMas = array( 1, “hola”, 5); $YOtroArray = array( 0 => 1, 1 => “hola”, 2 => 5, 3 => 8, “nombre” => “Homer” );

35 Funciones relacionadas con arreglos count(vector) o sizeof(vector).-Devuelve el número de elementos. next, reset, prev, currenty end.-Se desplaza por el vector. array_splice(vector, pos ini, tamaño).-Extrae la posición de un elemento.

36 2.6.4. Tipos de datos. Strings. Comillas dobles.

37 2.6.4. Tipos de datos. Strings (2). Comillas simples. Si se delimitan entre comillas simples (’), las variables no se expanden y además las únicas secuencias de escape que se reconocen son “\\” y “\'” (barra invertida y comillas simples.)

38 2.6.4. Tipos de datos. Strings (4). Para concatenar cadenas se utiliza el operador ‘.’ : $cad = ‘A esta cadena ‘; $cad = $cad. ‘le vamos a añadir más texto.’; Se puede acceder a cada carácter como si fuera un array: $cad2 = “Tercer carácter de \$cad : ‘$cad[2]’”;

39 2.7. Constantes. define(“SALUDO”, “Hola, mundo!”); echo “La constante SALUDO vale ”. SALUDO; Las constantes se definen con la función define(): Las constantes en PHP se diferencian de las variables en que: no llevan el símbolo del dólar delante. puede accederse a ellas desde cualquier parte del código donde han sido definidas, sin restricciones de ámbito como en las variables. no pueden ser redefinidas o borradas una vez definidas. sólo pueden contener valores escalares, no vectores.

40 2.8. Mayúsculas y minúsculas. Comportamiento mixto en variables y funciones: En las variables, las mayúsculas y minúsculas IMPORTAN. En los nombres de funciones y palabras reservadas, las mayúsculas NO IMPORTAN.

41 2.9.1. Operadores aritméticos.

42 2.9.2. Auto-incremento y auto-decremento.

43 2.9.3. Operadores de bits.

44 2.9.4. Operadores lógicos.

45 2.9.5. Operadores. Asignación, igualdad e identidad.

46 2.9.5. Operadores. Asignación, igualdad e identidad. Ejemplo. $var1 = 1;// Asignación $var2 = 1; $var3 = “1”; ($var1 == $var2)// Cierto, son iguales ($var1 == $var3)// Son iguales (tras conversión) ($var1 === $var2)// Cierto, son idénticas ($var1 === $var3)// FALSO, el tipo no coincide

47 2.9.5. Operadores. Asignación, igualdad e identidad. Error. $var1 = 1; $var2 = 2; if( $var1 = $var2 ) { echo ‘iguales’; } else { echo ‘distintas’; }

48 2.9.6. Comparaciones.

49 2.9.7. Operadores de cadenas. $a = 1; $b = 2; $c = ‘El resultado de ‘. $a. ‘ + ‘. $b. ‘ es ‘. $a + $b;

50 2.9.8. Atajos en la asignación. += -= *= /= %= &= ^=.= >>= y <<= $var1 += 3;// $var1 = $var1 + 3; $var2 /= 2;// $var2 = $var2 / 2; $var3 >>= 1;// $var3 = $var3 >> 1;

51 2.9.9. Precedencia.

52 2.10.1. Estructuras de control. if … elseif … else if (expresión) { comandos } if (expresión) { comandos_cierto } else { comandos_falso }

53 2.10.1. Estructuras de control. if … elseif … else (2) if (expresion1) { comandos1 } elseif (expresion2) { comandos2 } elseif (expresion3) { comandos3 }... else { comandosElse }

54 2.10.2. while y do … while while (expresión) { comandos } do { comandos } while (expresión);

55 2.10.4. for for (expresión1; expresión2; expresión3) { comandos } $factorial5 = 1; for ($i = 2; $i <= 5; $i++ ) { $factorial5 *= $i; }

56 2.10.4. for (2) for ($factorial5 = 1, $i = 2; $i <= 5; $i++ ) { $factorial5 = $factorial5 * $i; } for ($factorial5=1, $i=2; $i<=5; $factorial5*=$i, $i++);

57 2.10.4. for (3). ASP. ’ ASP // PHP <?php for ($i = 1; $i <= 100; $i++) { echo $MiVar; } ?>

58 2.10.5. foreach foreach (array as variable) { comandos } $a = array (1, 2, 3, 17); foreach ($a as $v) { print "Valor actual de \$a: $v.\n"; } // Valor actual de $a: 1 // Valor actual de $a: 2 // Valor actual de $a: 3 // Valor actual de $a: 17

59 2.10.5. foreach (2) foreach (array as indice => variable) { comandos }

60 2.10.6. switch switch (variable) { case valor1: comandos1 case valor2: comandos2... case valorN: comandosN default: comandosDefault }

61 2.10.6. switch (2) switch ($i) { case 1: echo “Código del 1”; case 2: echo “Código del 2”; case 3: echo “Código del 3”; break; case 4: echo “Código del 4”; }

62 2.11. Cierto o falso. Valores numéricos. $x = 1; // $x if( $x ) // se evalúa a cierto $x = 0; // $x definida como el entero 0 if( $x ) // se evalúa a falso

63 2.11. Cierto o falso. Strings. $x = "hello"; // asignamos una cadena a $x if( $x ) // se evalúa a cierto $x = ""; // cadena vacía if( $x ) // evalúa a falso // Excepción: $x = "0"; // cero en una cadena if( $x ) // evalúa a falso // (se convierte a entero)

64 2.11. Cierto o falso. Arrays. $x = array(); // $x es un array vacío if( $x ) // se evalúa como falso $x = array( "a", "b", "c" ); if( $x ) // se evalúa a cierto

65 2.11. Cierto o falso. Objetos. Class Yod {} // clase vacía $x = new Yod(); if( $x ) // se evalúa a falso Class Yod { // clase no vacía var $x = 1; } $x = new Yod(); if( $x ) // se evalúa a cierto

66 2.11. Cierto o falso. Constantes. TRUE es el valor entero decimal 1. FALSE es la cadena vacía.

67 Fechas Las funciones date() y gmdate() sirvan para dar el formato deseado a una cadena conteniendo una fecha. Si no se pasa ninguna cadena a estas funciones, se da el formato al tiempo actual (calculado internamente con time().

68

69

70

71

72

73 Comprobando fechas checkdate(nMes, nDia, nAño) nos permite chequear si una fecha dada es posible: es decir, que no se trata del dia 32 del mes 13. <?PHP if (checkdate(31, 2, 2000)) { echo "La fecha es correcta"; } else { echo "La fecha es incorrecta"; } ?>

74 2.12. Funciones. function nombre ($arg_1, $arg_2,..., $arg_n) { comandos return $salida; }

75 2.12. Funciones. (2) Ejemplo. function factorial ($valor) { if ($valor < 0) { return –1; // Error } if ($valor == 0 ) { return 1; } if ($valor == 1 || $valor == 2) { return $valor; } $ret = 1; for ($i = 2; $i <= $valor; $i++) { $ret = $ret * $i; } return $ret; } $factorial5 = factorial(5);

76 2.12. Funciones. (3) Valores por defecto. function enlace($url = ”www.php.net”) { echo ‘ Pulsa aquí ’; }

77 2.12.1. Funciones. Argumentos por referencia. function MiFuncion(&$var) { $var++; } $a = 5; MiFuncion($a); // Aquí $a == 6

78 2.12.2. Funciones. Devolución por referencia. function &buscar_cliente($nombre) { //... buscamos... return $registro; } $cliente = &buscar_cliente(“Juan”); echo $cliente->dni;

79 Reutilizar Las construcciones include y require son de las mas conocidas en php. Con ellas puedes reutilizar porciones de código (script, o simple html) cuantas veces quieras, siendo uno de sus usos mas sencillos y típicos el de incluir cabeceras y pies de páginas en un sistema de plantillas.

80 Include Include o require La sentencia include() inserta y evalúa el archivo especificado. Puedes incluir aqui no solamente un fichero en tu servidor, sino una página web remota (indicando la url).

81 2.13. include y require require(“cabecera.inc”); If ($incluir == TRUE) { $ficheros = array(“uno”, ”dos”, ”tres”); foreach ($ficheros as $fichero) { include($fichero); }

82 3. Programando en PHP

83 3.1.1. Forms. Valores sencillos. Su nombre: Su edad: Hola. Tiene años.

84 3.1.2. Forms. Valores múltiples. Tortilla Paella Fabada Lentejas <?php echo "Su elección: "; foreach($menu as $plato) { echo "$plato \n"; } ?>

85 Acceso a las variables Existen 2 maneras de obtener el valor de las variables de una página HTML: 1.Se debe configurar el archivo PHP.ini y la variable register_globals activarla, luego con se puede referenciar en phpde esta manera: $varHTML. 2.Usando los arreglos: $HTTP_GET_VARS[“varHTML’], $HTTP_POST_VARS[“varHTML”] y $HTTP_POST_FILES[“varHTML”].

86 Funciones para variables isset($var).-Devuelve true si la variable existe. empty($var).-Devuelve truesi la variable está definida pero no se le ha asignado ningún valor. unset($var).-Libera los recursos asociados a las variables que se le pasan como parámetros. Devuelve 1 si no ha habido error y 0 si lo hubo. *. Para redirigir el script a una página, se puede usar el siguiente comando: header(“Location: ruta web”); exit();

87 3.2. Cookies. setcookie(“PruebaCookie”, “expiraré dentro de una hora”, time() + 3600); setcookie(“PruebaCookie”, “”, time()); int setcookie (string nombre [, string valor [, int fin [, string camino [, string dominio [, int seguro]]]]])

88 3.3. Sesiones. bool session_start(void); bool session_register (mixed name [, mixed...]) bool session_destroy(void); // Ejemplo, un contador session_start(); print($contador); $contador++; session_register("contador"); ">Continuar

89 3.4. Tratamiento de errores. $nombre = '/etc/shadow'; $fichero = @fopen ($nombre, 'r'); if( !$fichero ) { die("No se pudo abrir el fichero ($nombre)"); }

90 3.5.1. Cadenas. Comparación. int strcmp (string str1, string str2) int strcasecmp (string str1, string str2) // Ejemplo: if (strcmp($a, $b) == 0) { echo ‘iguales’; }

91 3.5.2. Cadenas. Subcadenas. string substr (string cadena, int inicio [, int tamaño]) $str = substr('abcdef', 2, 3); // cde $str = substr('abcdef', -2); // ef $str = substr('abcdef', -2, 1); // e $str = substr('abcdef', 1, -2); // bcd

92 3.5.2. Cadenas. Subcadenas. (2) int strpos (string cadena, string referencia [, int inicio]) int strrpos (string cadena, char referencia) string strstr (string cadena, string referencia) $i = strpos('cadena de prueba', 'de'); // $i = 2 $i = strpos('cadena de prueba', 'de', 5); // $i = 7 $s = strrpos('cadena de prueba', 'de'); // $s = 7 $s = strstr('cadena de prueba', 'de'); // $s = dena de prueba

93 Funciones de cadenas chr(#).-Devuelve el carácter asciiasociado. ord(caracter).-Devuelve el número asciiasociado a un caracter. strtolower($var) y strtoupper($var).-Convierte a minúscula y mayúscula respectivamente. strlen($var).-Devuelve la cantidad de caracteres. $var1.$var2.-Concatena. strpos($var,$subcadena).-Devuelve la posición de la subcadena, es false si no la encuentra.

94 Funciones de cadenas split(separador,cadena). Divide una cadena en varias usando un carácter separador. chop(cadena). Elimina los saltos de línea y los espacios finales de una cadena. strpos(cadena1, cadena2). Busca la cadena2 dentro de cadena1 indicándonos la posición en la que se encuentra. str_replace(cadena1, cadena2, texto). Reemplaza la cadena1 por la cadena2 en el texto.

95 Funciones de cadenas Trim() Eliminar espacios en las puntas de la cadena. Tambien existe rtrim() y ltrim() para eliminar solo espacios a la derecha o a la izquierda respectivamente de una cadena pasada como argumento.

96 Funciones de fechas time().-Devuelve un long con la cantidad de segundos desde el 01-01-1979 hasta la actualidad. getdate(long_fecha).-Devuelve un vector con los siguientes campos: seconds, minutes, hours, mday, mon, yeary otros menos importantes. mktime(hora,minutos,segundos,mes,día,año)- Devuelve un long con los valores enviados. checkdate(mes,día,año).-Devuelve true si la fecha ingresada es válida.

97 3.5.3. Cadenas. Imprimir y formatear. int printf (string formato [, mixed args...]) string sprintf (string formato [, mixed args...]) 1.Relleno 2.Alineación 3.Número de caracteres 4.Precisión 5.Tipo %El carácter de tanto por ciento. bEntero en binario. cEntero como carácter ASCII. dEntero en decimal. fDouble en punto flotante. oEntero en octal. sCadena. xEntero en hexadecimal (minúsculas). XEntero en hexadecimal (mayúsculas). Secuencias de formato

98 printf() y sprintf() Estas funciones sirven para manipular (dar formato) a una cadena. La única diferencia entre ellas es que printf vuelca la cadena con formato.

99 Ejemplos <?php $pi=3.1416; printf("Pi es:%d ",$pi); printf("Pi es:%.2f ",$pi); printf("Pi es:%.3f ",$pi); printf("Pi es:%.4f ",$pi); $numero = 65; printf("%c",$numero); $number= 255; printf("En formato decimal: %d ",$number); printf("En formato hexadecimal: %x ",$number); printf("En formato hexadecimal: %X ",$number); printf("En formato octal: %o ",$number); printf("Decimal exponencial: %e ",$number); printf("En binario: %b ",$number); ?>

100 Ejemplos <? printf("%.2s\n ", "patata"); // pa printf("%.4s\n ", "patata"); // pata printf("*%9.4s\n ", "patata"); printf("*%9s\n ", "patata"); printf("%-9s*\n ", "patata"); // rellena espacios a la izquierda printf("%09s\n ", "patata"); // 9 caracteres rellena con ceros printf("%'x9s\n ", "patata"); // patata. El resto hasta 9 caracteres ?>

101 Ejemplos <? printf("%02d/%02d/%04d", "02", "12", "2005"); $pago1=68.75; $pago2=54.35; $pago=$pago1 + $pago2; // echo $pago mostraría "123.1" // Mostrar al menos un dígito entero y exactamente // dos decimales, rellenando con ceros printf ("%01.2f", $pago); ?>

102 3.5.4. Escapar caracteres. SQL. $busca = “D’Alton”; // Habrá que escapar el apóstrofe $sql = “SELECT * FROM usuarios WHERE apellido = \”’. addslashes($busca). “\’”; *Inyección SQL

103 3.5.4. Escapar caracteres. Shell. string system (string comando [, int valor_salida]) echo system(“finger $usuario”); ¿Qué pasa si $usuario=“pepe ; apachectl stop” ? string escapeshellcmd (string comando)

104 Ejemplo

105 Exec y comandos con ` <? exec(dir, $a); echo gettype($a); foreach ($a as $aa){ echo "$aa "; } $a=`ls –l`; echo $a; ?>

106 3.5.4. Escapar caracteres. HTML. $valor = “a>b”; echo ‘<input type=hidden name=var value=”’. htmlspecialchars($valor). ‘”>’; // Test "); echo $nuevo; ?> <?php $valor="select * from empleados where nombre like % "; $valor=urlencode($valor); ?> Urldecode();

107 3.5.5. Extraer campos. array explode (string delimitador, string cadena [, int límite]) string implode (string delimitador, array campos) $cadena = implode(“:”, $campos); $cadena = “campo1:campo2:campo3”; $campos = explode(“:”, $cadena);

108 array explode ( string separador, string cadena [, int limite] ) <?php // Ejemplo 1 $pizza = "trozo1 trozo2 trozo3 trozo4 trozo5 trozo6"; $trozos = explode(" ", $pizza); echo $trozos[0]; // trozo1 echo $trozos[1]; // trozo2 ?>

109 implode ( string elemento_union, array trozos ) Devuelve una cadena que contiene una representación de todos los elementos de la matriz en el mismo orden, pero con la cadena elemento_union en medio de los mismos. <?php $array = array('apellido', 'email', 'telefono'); $separado_por_comas = implode(",", $array); echo $separado_por_comas; // apellido,email,telefono ?>

110 3.5.5. Extraer campos. Expresiones regulares. array split (string delimitador, string cadena [, int límite]) $fecha = "12/4 2000"; $campos = split ('[ /.-]', $fecha);

111 Ejemplos if (ereg("^[0-9]*$", $numero)) -e if (ereg("^[1-9][0-9]{6,7}", $numero)) -t if (ereg("^[1-9][0-9]{1,2}", $numero)) -l if (ereg("^[0-9]+\.[0-9]{1,2}$", $numero)) -f str_replace (" ", "\r\n", $instr); split('[- :]', $iso_date) ereg("^abc",$string); ereg("abc",$string);

112 Ejemplos eregi("(ozilla.[23]|MSIE.3)",$HTTP_USER_A GENT); $string = ereg_replace("^"," ",$string);

113 3.5.7. Ordenar un array. sort(): Ordena el array por contenido en orden ascendente. rsort():Ordena por contenido en orden descendente. ksort():Ordena por el índice en orden ascendente. rksort():Ordena por el índice en orden descendente.

114 3.6.1. Archivos. Abrir y cerrar. int fopen (string nombre, string modo [, int include_path]) int fclose (int identificador) Modos: ‘r’Sólo lectura. Puntero al inicio. ‘r+’Lectura/escritura. Puntero al inicio. ‘w’Sólo escritura. Se trunca el fichero. ‘w+’Lectura/escritura. Se trunca el fichero. ‘a’Sólo escritura. Puntero al final. ‘a+’Lectura/escritura. Puntero al final.

115 3.6.2. Ficheros. Leer y escribir. string fgets (int identificador, int tamaño) mixed fscanf (int identificador, string formato [, string var1...]) int feof (int identificador) array file (string fichero [, int include_path]) int fwrite (int identificador, string cadena [, int tamaño])

116 3.6.3. Ficheros. Copiar / renombrar / borrar. int copy (string origen, string destino) int rename (string origen, string destino) int unlink (string fichero)

117 Otras funciones de archivos file_exists(“archivo”); is_file(“archivo”); is_directory(“archivo”); is_readable(“archivo”); is_writeable(“archivo”); is_executable(“archivo”);

118 3.6.4. Directorios. int chdir (string directorio) int mkdir (string nombre, int modo) int rmdir (string nombre) int opendir (string nombre) string readdir (int identificador) void closedir (int identificador)

119 3.6.4. Directorio. Listado de contenidos. $directorio = opendir('.'); while (($fichero = readdir($directorio)) !== FALSE) { echo "$fichero\n"; } closedir($directorio);

120 3.6.5. Ficheros. Envío. <FORM ENCTYPE="multipart/form-data" ACTION="recibir.php" METHOD=POST> Fichero: // Contenido de “recibir.php” echo ’Recibido el fichero: "’.$fichero_name.’" ’; echo ’Tamaño del fichero: ’. $fichero_size. ’ ’; echo ’Tipo mime: ’. $fichero_type. ’ ’; rename($fichero, $fichero_name);

121 3.7.1. POO. Definición de una clase. class NombreClase { var $variables; function metodos ($parametros) { codigo }

122 2.7.1. POO. Definición de una clase. Ejemplo. class Coche { var $velocidad; // Velocidad actual // Constructor por defecto. El coche está parado. function coche() { $this->velocidad = 0; } // Constructor que indica la velocidad inicial. function coche($vel) { $this->velocidad = $vel; } // Método acelerar. El coche va más rápido. function acelerar() { $this->velocidad++; } // Método frenar. El coche va más lento hasta frenar. function frenar() { if ($this->velocidad > 0) { $this->velocidad--; }

123 2.7.2. POO. Herencia. class ClaseDerivada extends ClaseBase { // definición de métodos y variables // exclusivos de ClaseDerivada, // y redefinición (especialización) // de métodos de ClaseBase }

124 2.7.2. POO. Herencia. Ejemplo. class CocheFantastico extends coche() { // Frenado instantáneo function frena() { $this->velocidad = 0; } // ¡El coche habla! function habla() { echo “Hola, Michael.”; } // ¡Salta! function salta() { echo “Boing!!”; } // Turbo propulsión function turbo() { $this->velocidad = 200; }

125 2.7.3. POO. Creación y uso de objetos. // Creación (instanciación) $MiCoche = new Coche; $MiCocheSeMueve = new Coche(10); // Uso $MiCoche->acelerar(); echo $MiCoche->velocidad; $MiCoche->frenar();

126 3.8.1. BD. Conexión y desconexión. int mysql_connect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contraseña]]]) int mysql_close ([int identificador]) int mysql_pconnect ([string servidor [:puerto] [:/camino/al/socket] [, string usuario [, string contraseña]]]) int mysql_pclose ([int identificador])

127 3.8.1. BD. Conexión y desconexión. Ejemplo. $link = mysql_connect ("www.mmlabx.ua.es", "nobody", ""); if (!$link) { die ("No se pudo conectar"); } print ("Conexión realizada"); mysql_close ($link);

128 3.8.2. BD. Elegir una BD. int mysql_select_db (string nombre_bd [, int identificador]) if (!mysql_select_db("prueba", $link)) { die (“No existe la BD”); }

129 3.8.3. BD. Querys. int mysql_query (string query [, int identificador]) int mysql_db_query (string nombre_bd, string query [, int identificador]) int mysql_free_result (int result) $query = "SELECT codigo, nombre, descripcion, creditos, tipo FROM asignatura"; $asignaturas = mysql_query($query, $link); if (!$asignaturas) { die (“Error en el query”); }

130 3.8.4. BD. Extraer información. int mysql_affected_rows ([int identificador]) int mysql_num_rows (int resultado) array mysql_fetch_row (int resultado) array mysql_fetch_array(int resultado [, int tipo_resultado]) object mysql_fetch_object (int result) array mysql_fetch_lengths (int resultado) int mysql_data_seek (int resultado, int numero_fila)

131 2.8.5. BD. Extraer información. Ejemplos. while ($fila = mysql_fetch_array($asignaturas)) { echo $fila[‘codigo’]. ‘ ‘. $fila[‘nombre’]. “\n”; } while ($fila = mysql_fetch_object($asignaturas)) { echo $fila->codigo. ‘ ‘. $fila->nombre. “\n”; }

132 3.9. Acceso a BD unificado. Clase ConexionGenerica. class ConexionGenerica { var $link; function connect($servidor, $usuario, $clave) { echo " El método connect ", "no está implementado en la ", "clase ".get_class($this)." "; return FALSE; } function close() {} function select_db($base_datos) {} function query($query) {} function fetch_array($resultado) {} function free_result($resultado) {} }

133 3.9. Acceso a BD unificado. Clase ConexionMySQL. require ("ConexionGenerica.inc"); class ConexionMySQL extends ConexionGenerica { function connect($servidor="localhost", $usuario="nobody", $clave="") { return $this->link = mysql_connect($servidor, $usuario, $clave); } function close() {} function select_db($base_datos) {} function query($query) {} function fetch_array($resultado) {} function free_result($resultado) {} }

134 3.9. Acceso a BD unificado. Uso. // Fichero CreaConexion.inc require ("ConexionMySQL.inc"); $conexion = new ConexionMySQL(); require ("CreaConexion.inc"); $conexion->connect("localhost", "nobody"); $conexion->select_db("prueba", $link); $asignaturas = $conexion->query("SELECT codigo, nombre, descripcion, creditos, tipo FROM asignatura");

135 SQL server <? $conectID = mssql_connect("NombreServidor","SA",""); mssql_select_db("Northwind“, $conectID ); $result=mssql_query("select * from products",$numero ); ? >

136 Conexión ODBC

137 <? $process=odbc_exec($sqlconnect, $sqlquery); while(odbc_fetch_row($process)){ $company=odbc_result($process,"company"); echo "$companyName "; } odbc_close($sqlconnect); ?>

138 Obtiendo los datos <? while ($row=mssql_fetch_array($result)) { $counter++; $c1=$row["ProductName"]; $c2=$row["UnitPrice"]; echo ("$counter c1: $c1 c2: $c2\n"); } mssql_close($conectID); ?>

139 Postgres Triggers Rules Sub-system de permisos de usuarios Sequencias Explicacion de consultas Soporte para language procedural User-defined functions: SQL, C, Tcl, Ruby, Perl, PL/PgSQL, Python

140 Transacciones Extensiones PostgreSQL para lenguajes como: SQL, C, Perl, PL/PgSQL, Python, Ruby, Tcl

141 Postgres - Conexión <? $conn = pg_connect("host=127.0.0.1 port=5432 password=a user=postgres dbname=prueba"); if (pg_ErrorMessage($conn)) { echo " Ocurrio un error conectando a la base de datos:. "; exit; } ?>

142 Conexiones persistentes <? //conexión tradicional $conn = pg_connect("dbname=test user=testuser password=testuser"); //Abre una conexión persistente $conn = pg_pconnect("dbname=test user=testuser password=testuser"); ?>

143 La consulta, inserción o actualización <? $resultado=pg_exec("insert into cinemas values ('6','cinemas 6','centro')");} if (!$resultado) { echo " Error de busqueda "; exit; } ?>

144 Recorriendo el recordset <? for($cont=0;$cont<$filas;$cont++) { $campo1=pg_result($resultado,$cont,0); $campo2=pg_result($resultado,$cont,1); echo " $campo1 $campo2\n"; } pg_FreeResult($resultado); //liberando ?>

145 Recorriendo el recordset como objeto <? while ($tRow = pg_fetch_object($tResult)) { print(“$tRow->character “); } ?>

146 Transacciones <? pg_exec($conn, "BEGIN;"); pg_exec($conn, "INSERT INTO plant VALUES (6, 'cactus', 'green')"); pg_exec($conn, "COMMIT;"); ?>

147 ADODB ADOdb es una librería de astracción de bases de datos para php, existe tambien una equivalente para Pearl.

148 Soporte MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, MS SQL, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP, and generic ODBC, ODBTP. The Sybase, Informix, FrontBase and PostgreSQL.

149 Caracteristicas “La mas rápida” Ampliamente portable Suporte para generación de código SQL, performance monitoring. Facil de aprender Control de calidad Madura, desde 2000 Disponible bajo Licencia BSD

150 Ejemplo Mysql <? include('/path/to/adodb.inc.php'); $DB = NewADOConnection('mysql'); $DB->Connect($server, $user, $pwd, $db); $rs = $DB->Execute("select * from table where key=?",array($key)); while (!$rs->EOF) { print_r($rs->fields); $rs->MoveNext(); } ?>

151 Ejemplo Postgres <? $conn = &ADONewConnection('postgres'); $conn->PConnect('host=10.28.9.18 port=5432 dbname=phpcurso user=phpuser password=php); ?> PEAR :: DBD:: 2

152 Access a traves de ADODB <? $db =& ADONewConnection('access'); $dsn = "Driver={Microsoft Access Driver (*.mdb)};Dbq=d:\\northwind.mdb;Uid=Adm in;Pwd=;"; $db->Connect($dsn); ?>

153 Obteniendo datos con PHP <? $rs =& $rs->Execute($sql); while (!$rs->EOF) { var_dump($rs->fields); $rs->MoveNext(); } ?>

154 Obteniendo datos con extension ADODB <? $rs =& $rs->Execute($sql); $array = adodb_getall($rs); var_dump($array); ?>

155 MVC Model View Controller Separando las cosas…

156 MVC Es un patrón de diseño de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos de forma que las modificaciones al componente de la vista pueden ser hechas con un mínimo impacto en el componente del modelo de datos.datos interfaz de usuariológica de controlcomponentes

157 Flujo de datos El usuario interactúa con la interfaz de alguna manera (ej. presionando un botón, enlace) El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario El controlador accede al modelo, posiblemente actualizando los datos enviados por el usuario

158 Flujo de datos El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario La vista usa el modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista. La interfaz espera por nuevas interacciones de usuario para iniciar nuevamente el ciclo.

159 Modelo El Modelo es todo acceso a base de datos, y las funciones que llevan lo que llaman "lógica de negocio". O sea, las funciones más "pequeñas" con significado: ingresar una cantidad, obtener un listado de historias,...

160 Vista La vista, en una aplicación web, es el HTML (o XML, WAP, PDF,...) y lo necesario para convertir datos en HTML. El acceso a bases de datos no es vista. La gestión de sesiones no es vista.

161 Controlador El controlador es lo que une la vista y el modelo. Por ejemplo, son las funciones que toman los valores de un formulario, consultan la base de datos (a través del modelo) y producen valores, que la vista tomará y convertirá en HTML.

162 ¿Porque? Tener la vista separada del controlador permite cambiar la aplicación para que genere, en lugar de HTML, algo distinto sin tener que tocar más que una parte completamente delimitada del código. Ayuda a evitar el spaghetti. Si se cambia de gestor de bases de datos este cambio sólo afecta a estas funciones

163 Frameworks Midgard Project Blueshoes Mojavi Project Phrame Cake PRADO WACT Jaws BinaryCloud Biscuit TaniPHP PHPonTRAX

164 MVC rapido y sin complicaciones Un case Funciones u objetos Pantallas de presentacion

165 Generación de PDF - FPDF FPDF es una clase escrita en PHP que permite generar documentos PDF directamente desde PHP, es decir, sin usar la biblioteca PDFlib. http://www.fpdf.org/

166 Caracteristicas Elección de la unidad de medida, formato de página y márgenes Gestión de cabeceras y pies de página Salto de página automático Salto de línea y justificación del texto automáticos Admisión de imágenes (JPEG y PNG) Colores Enlaces Admisión de fuentes TrueType, Type1 y codificación Compresión de página

167 Ejemplo AddPage(); $pdf->SetFont('Arial','B',16); $pdf->Cell(40,10,'¡Hola, Mundo!‘,1); $pdf->Cell(60,10,'Hecho con FPDF.',0,1,'C'); $pdf->Output(); ?> tamaño a4 alargado, milímetros

168 Imagenes <? $pdf->Image('foto.png',50,50,80); //(->, abajo, ancho) ?>

169 Tablas <? $data[0][0]=1; $data[0][1]=2; $data[0][2]=3; $data[0][3]=4; $pdf->Ln(); foreach($data as $row) { foreach($row as $col) $pdf->Cell(10,6,$col,1); $pdf->Ln(); } ?>

170 Enlaces <? $pdf->Write(5,'aquí',"http://www.yahoo.com"); $pdf->Image('foto.png',10,10,30,0,'', 'http://www.fpdf.org'); ?>

171 Imágenes - Librería GD GD es un librería open source para la creación dínámica de imágenes escrita en C, puede ser usada en Perl y PHP http://www.boutell.com/gd/ Activar la librería gd2 en php.ini

172 Ejemplo Simple <? header ("Content-type: image/png"); $im = ImageCreate (100, 30); $color_fondo = ImageColorAllocate ($im, 240, 240, 240); $color_texto = ImageColorAllocate ($im, 233, 14, 91); ImageString ($im, 10, 25, 5, "fsafa", $color_texto); ImagePng ($im); ?>

173 Ejemplo 2 <?php Header("Content-type: image/png"); $im = ImageCreate(300, 300); $green = ImageColorAllocate($im, 0, 255, 0); $white = ImageColorAllocate($im, 255, 255, 255); $blue = ImageColorAllocate($im, 0, 0, 255); // ponemos los vertices por pares, en este caso son 5 vertices $vertices = Array(150, 10, 250, 100, 250, 200, 50, 200, 50, 100); ImageFill($im, 0, 0, $white); // dibujamos un pentagono ImagePolygon($im, $vertices, 5, $blue); // relenamos el pentagono de verde y lo bordeamos por azul ImageFillToBorder($im, 150, 150, $blue, $green); ImagePng($im); ?>

174 Envio de correo <? $email // Dirección a la que va dirigida el e- mail. $asunto // no comment :) $cuerpo // el cuerpo del correo. mail("$email","$asunto","$cuerpo"); ?>

175 Fin


Descargar ppt "INTRODUCCIÓN A PHP Curso de PHP Por Vicente Aguilar Imparte: José Alberto Rodríguez Castañeda."

Presentaciones similares


Anuncios Google