introducción a php

117
Introducción a PHP

Upload: darva

Post on 14-Jan-2016

32 views

Category:

Documents


1 download

DESCRIPTION

Introducción a PHP. 1. INTRODUCCIÓN: Diferencias entre ASP y PHP. Software propietario. Active Server Pages. PHP: Hypertext Preprocessor. Free Software. Plataformas Microsoft. Multiplataforma. Varios lenguajes (VBScript, JavaScript). Un solo lenguaje: PHP. Características de PHP. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Introducción a PHP

Introducción a PHP

Page 2: Introducción a PHP

1. INTRODUCCIÓN:Diferencias entre ASP y PHP

Software propietario Free Software

Plataformas Microsoft

Varios lenguajes (VBScript, JavaScript)

Multiplataforma

Un solo lenguaje: PHP

Page 3: Introducción a PHP

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

Page 4: Introducción a PHP

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•PHP Versión 5 se encuentra en etapa de planeamiento

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)

Page 5: Introducción a PHP

Estadísticas de uso

Fuente: NetcraftAgosto 2000

3,314,634 Dominios, 637,746 Direcciones IP19,823,296 Dominios analizadosPHP instalado en el 16.7% de todos los dominios

Fuente: SecuritySpace.comSeptiembre 2000Informe sobre Módulos Apache

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

Page 6: Introducción a PHP

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

Page 7: Introducción a PHP

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)

Page 8: Introducción a PHP

2. El lenguaje PHP

Page 9: Introducción a PHP

2.1. Extensión de los Archivos

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

Page 10: Introducción a PHP

2.2. Delimitadores

 <? echo 'Primer método de delimitar código PHP'; ?> <?php echo 'Segundo método, el más usado'; ?> <script language="php"> echo 'Algunos editores (como el FrontPage) Sólo entienden este método'; </script> <% echo 'Método de compatibilidad con ASP'; %>

Page 11: Introducción a PHP

<%@ Language=VBScript %><html><body><%IF Hour(time)>20 OR Hour(time)<4 THEN%>Buenas noches.<%ELSE%>Buenos días.<%END IF%></body></html>

<html><body><?php if ( Hour(time)>20 || Hour(time)<4) { ?>Buenas noches.<?php } else { ?>Buenos días.<?php }?></body></html>

<html><body><?phpif ( Hour(time)>20 || Hour(time)<4) { echo “Buenas noches.”;} else{ echo “Buenos días.”;}?></body></html>

2.2. Delimitadores. Ejemplo. 

 

 

Page 12: Introducción a PHP

2.3. Fin de línea

print( date("M d, Y H:i:s", time()) );

 

print ( date( "M d, Y H:i:s", time() ) );

Page 13: Introducción a PHP

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.

 

Page 14: Introducción a PHP

2.5.1. Variables. Declaración y Uso.

• NO hace falta declararlas• Llevan delante el signo ‘$’.

$var_1 = 123;$var_2 = ’hola’;$var_3 = $var_1 * 2;

 

Page 15: Introducción a PHP

$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.

 

 

Page 16: Introducción a PHP

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

Page 17: Introducción a PHP

2.5.2. Variables. Tipado. Conversión explícita.

Operador cast: 

$mivar = (string)123;

Cambiar el tipo de una variable:

 

$mivar = 12;settype($mivar, "double");

 

Page 18: Introducción a PHP

2.5.3. Variables. Ámbito.

En el cuerpo de un archivo, las variables son GLOBALES al archivo y archivos 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.

Page 19: Introducción a PHP

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

 

Page 20: Introducción a PHP

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();

Page 21: Introducción a PHP

2.6.3. Tipos de datos. Arrays.

 

$MiArray[0] = 1;

$MiArray[1] = “hola!!”;

$MiArray[] = 3;

echo $MiArray[2]; // 3

Page 22: Introducción a PHP

2.6.3. Tipos de datos. Arrays (2).

Funcionan como vectores o tablas hash al mismo tiempo:

$MiArray[“nombre”] = “Homer”;echo $MiArray[0]; // 1echo $MiArray[“nombre”]; // “Homer”

Y pueden tener más de una dimensión:

$MiOtroArray[1][“pepe”][4] = “3 dimensiones!”;

 

Page 23: Introducción a PHP

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”);

 

Page 24: Introducción a PHP

2.6.4. Tipos de datos. Strings. Comillas dobles.

Si se delimitan entre comillas dobles (”), se expandirá cualquier variable que haya dentro de la cadena. Además, se pueden incluir ciertas secuencias de escape, al igual que en C:

Secuencia Significado \n Nueva línea \ r Retorno de carro \ t Tabulación horizontal \ \ Barra invertida \$ Símbolo del dólar \" Dobles comillas \ [0-7]{1,3} Carácter en octal \x[0-9A-Fa-f]{1,2} Carácter en hexadecimal

Page 25: Introducción a PHP

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.)

Page 26: Introducción a PHP

2.6.4. Tipos de datos. Strings (3). “Here Doc”

 

$cadena = <<<FINCADEsto es un ejemplo de cadena como “here doc”.La variable \$a vale $a.Ahora vamos a finalizar la cadena:FINCAD

 

Utilizando la sintaxis “here doc” de Perl. Las variables se expanden y no hace falta escapar las comillas:

Page 27: Introducción a PHP

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]’”;

 

Page 28: Introducción a PHP

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.

Page 29: Introducción a PHP

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. 

Page 30: Introducción a PHP

2.9.1. Operadores aritméticos.

Operación Nombre Resultado $a + $b Suma Suma de $a y $b. $a - $b Resta Diferencia entre $a y $b. $a * $b Multiplicación Producto de $a y $b. $a / $b División Cociente de $a y $b. $a % $b Módulo Resto de la operación $a/$b.

Page 31: Introducción a PHP

2.9.2. Auto-incremento y auto-decremento.

Operación Nombre Resultado

++$a Pre-incremento Incrementa $a en 1, y devuelve $a (incrementado).

$a++ Post-incremento Devuelve $a, y después lo incrementa en 1.

--$a Pre-decremento Decrementa $a en 1, y después lo devuelve.

$a-- Post-decremento Devuelve $a, y después lo incrementa en 1.

Page 32: Introducción a PHP

2.9.3. Operadores de bits.

Operación Nombre Resultado

$a & $b Y Se ponen a 1 los bits que están a 1 en $a y $b.

$a | $b O Se ponen a 1 los bits que están a 1 en $a o $b.

$a ^ $b O Exclusivo Se ponen a 1 los bits que están a 1 en $a o $b, pero no en ambos.

~ $a No Se invierten los bits (se cambian 1 por 0 y viceversa.)

$a << $b Desp. Izq. Desplaza $b posiciones a la izquierda todos los bits de $a.

$a >> $b Desp. Drch. Desplaza $b posiciones a la derecha todos los bits de $a.

Page 33: Introducción a PHP

2.9.4. Operadores lógicos.

Operación Nombre Resultado $a and $b Y Cierto si $a y $b son ciertos. $a or $b O Cierto si $a o $b es cierto.

$a xor $b O Exclusivo. Cierto si $a o $b es cierto, pero no ambos.

! $a No Cierto si $a es falso. $a && $b Y Cierto si $a y $b son ciertos. $a | | $b O Cierto si $a o $b es cierto.

Page 34: Introducción a PHP

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

Operación Nombre Resultado

$a = $b Asignación Asigna el valor de una variable o expresión del segundo término a la variable del primer término.

$a == $b Igualdad Compara si el valor de los dos operandos es el mismo.

$a === $b Identidad Compara si el valor es el mismo y, además, el tipo coincide.

Page 35: Introducción a PHP

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

 

Page 36: Introducción a PHP

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

$var1 = 1;$var2 = 2;if( $var1 = $var2 ) { echo ‘iguales’;} else { echo ‘distintas’;}

Page 37: Introducción a PHP

2.9.6. Comparaciones.

Operación Nombre Resultado

$a != $b No igual Cierto si el valor de $a no es igual al de $b.

$a !== $b No idéntico Cierto si $a no es igual a $b, o si no tienen el mismo tipo.

$a < $b Menor que Cierto si $a es estrictamente menor que $b.

$a > $b Mayor que Cierto si $a es estrictamente mayor que $b.

$a <= $b Menor o igual que Cierto si $a es menor o igual que $b.

$a >= $b Mayor o igual que Cierto si $a es mayor o igual que $b.

Page 38: Introducción a PHP

2.9.7. Operadores de cadenas.

$a = 1;$b = 2;

$c = ‘El resultado de ‘ . $a . ‘ + ‘ . $b . ‘ es ‘ . $a + $b;

Page 39: Introducción a PHP

2.9.8. Atajos en la asignación.

+= -= *= /= %= &= ^= .= >>= y <<=

$var1 += 3; // $var1 = $var1 + 3;$var2 /= 2; // $var2 = $var2 / 2;$var3 >>= 1; // $var3 = $var3 >> 1;

 

Page 40: Introducción a PHP

2.9.9. Precedencia.

, or xor and print = += -= *= /= .= %= &= |= ^= ~= <<= >>= ? : | | && |

^ & == != === !== < <= > >= << >> + - . * / % ! ~ ++ -- (int) (double) (string) (array) (object) @ [ new

Page 41: Introducción a PHP

2.10.1. Estructuras de control. if … elseif … else

if (expresión) { comandos}

 

if (expresión) { comandos_cierto} else { comandos_falso}

 

Page 42: Introducción a PHP

2.10.1. Estructuras de control. if … elseif … else (2) 

if (expresion1) { comandos1} elseif (expresion2) { comandos2} elseif (expresion3) { comandos3}...else { comandosElse}

 

Page 43: Introducción a PHP

2.10.2. while y do … while

 

while (expresión) { comandos} 

 

do { comandos} while (expresión);

 

Page 44: Introducción a PHP

2.10.4. for

 

for (expresión1; expresión2; expresión3) { comandos} 

 

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

 

Page 45: Introducción a PHP

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++);

Page 46: Introducción a PHP

2.10.4. for (3). ASP. 

’ ASP<%FOR i=1 TO 100%><%=MiVar%><%NEXT%> // PHP<?phpfor ($i = 1; $i <= 100; $i++) { echo $MiVar;}?>

 

Page 47: Introducción a PHP

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

Page 48: Introducción a PHP

2.10.5. foreach (2)

foreach (array as indice => variable){ comandos}

Page 49: Introducción a PHP

2.10.6. switch

switch (variable) { case valor1:

comandos1 case valor2: comandos2 ... case valorN: comandosN default: comandosDefault}

Page 50: Introducción a PHP

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”;}

Page 51: Introducción a PHP

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 0if( $x ) // se evalúa a falso

Page 52: Introducción a PHP

2.11. Cierto o falso. Strings.

 

$x = "hello"; // asignamos una cadena a $xif( $x ) // se evalúa a cierto

$x = ""; // cadena vacíaif( $x ) // evalúa a falso

// Excepción:$x = "0"; // cero en una cadenaif( $x ) // evalúa a falso // (se convierte a entero)

 

Page 53: Introducción a PHP

2.11. Cierto o falso. Arrays.

 

$x = array(); // $x es un array vacíoif( $x ) // se evalúa como falso

$x = array( "a", "b", "c" ); if( $x ) // se evalúa a cierto

 

Page 54: Introducción a PHP

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

Page 55: Introducción a PHP

2.11. Cierto o falso. Constantes.

 •TRUE es el valor entero decimal 1.

•FALSE es la cadena vacía.

Page 56: Introducción a PHP

2.12. Funciones.

 

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

Page 57: Introducción a PHP

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);

Page 58: Introducción a PHP

2.12. Funciones. (3) Valores por defecto.

 

function enlace($url = ”www.php.net”) { echo ‘<a href=”’ . $url . ‘”>Pulsa aquí</a>’;}

Page 59: Introducción a PHP

2.12.1. Funciones. Argumentos por referencia.

 

function MiFuncion(&$var) { $var++;} $a = 5;MiFuncion($a);// Aquí $a == 6

Page 60: Introducción a PHP

2.12.2. Funciones. Devolución por referencia.

 

function &buscar_cliente($nombre) { // ... buscamos ... return $registro;} $cliente = &buscar_cliente(“Juan”);echo $cliente->dni;

Page 61: Introducción a PHP

2.13. include y require

La sentencia include(arch) incluye y evalúa el archivo especificado.

La sentencia require(arch) se sustituye a sí misma con el archivo especificadotal y como funciona la directiva #include de C.

El intérprete sale del modo PHP y entra en modo HTML al principio del archivo referenciado, y

vuelve de nuevo al modo PHP al final.

Page 62: Introducción a PHP

2.13. include y require

Include() se re-evalúa cada vez que se encuentra (y sólo cuando está siendo ejecutada)

require() siempre leerá el archivo referenciado, incluso si la línea en que está no se ejecuta nunca (condicional).

Page 63: Introducción a PHP

2.13. include y require

require(“cabecera.inc”);

If ($incluir == TRUE) { $archivos = array(“uno”, ”dos”, ”tres”); foreach ($archivos as $archivo) { include($archivo); }}

Page 64: Introducción a PHP

2.14. Variables de Sistema

$HTTP_USER_AGENT Nos informa principalmente sobre el sistema operativo y tipo y versión de navegador utilizado por el internauta. Su principal utilidad radica en que, a partir de esta información, podemos redireccionar nuestros usuarios hacia páginas optimizadas para su navegador o realizar cualquier otro tipo de acción en el contexto de un navegador determinado.

$HTTP_ACCEPT_LANGUAGE Nos devuelve la o las abreviaciones de la lengua considerada como principal por el navegador. Esta lengua o lenguas principales pueden ser elegidas en el menú de opciones del navegador. Esta variable resulta también extremadamente útil para enviar al internauta a las páginas escritas en su lengua, si es que existen.

$HTTP_REFERER Nos indica la URL desde la cual el internauta ha tenido acceso a la página. Muy interesante para generar botones de "Atrás" dinámicos o para crear nuestros propios sistemas de estadísticas de visitas.

Page 65: Introducción a PHP

2.14. Variables de Sistema

$PHP_SELF Nos devuelve una cadena con la URL del script que está siendo ejecutado. Muy interesante para crear botones para recargar la página.

$HTTP_GET_VARS Se trata de un array que almacena los nombres y contenidos de las variables enviadas al script por URL o por formularios GET

$HTTP_POST_VARS Se trata de un array que almacena los nombres y contenidos de las variables enviadas al script por medio de un formulario POST

$HTTP_COOKIES_VARS Se trata de un array que almacena los nombres y contenidos de las cookies. Veremos qué son más adelante.

Page 66: Introducción a PHP

2.14. Variables de Sistema

$PHP_AUTH_USER Almacena la variable usuario cuando se efectúa la entrada a páginas de acceso restringido. Combinado con $PHP_AUTH_PW resulta ideal para controlar el acceso a las páginas internas del sitio.

$PHP_AUTH_PW Almacena la variable password cuando se efectúa la entrada a páginas de acceso restringido. Combinado con $PHP_AUTH_USER resulta ideal para controlar el acceso a las páginas internas del sitio.

$REMOTE_ADDR Muestra la dirección IP del visitante.

$DOCUMENT_ROOT Nos devuelve el path físico en el que se encuentra alojada la página en el servidor.

$PHPSESSID Guarda el identificador de sesión del usuario. Veremos más adelante en qué consisten las sesiones.

Page 67: Introducción a PHP

3. Programando en PHP

Page 68: Introducción a PHP

3.1.1. Forms. Valores sencillos.

 

<form action="accion.php" method="POST">Su nombre: <input type=text name=nombre><br>Su edad: <input type=text name=edad><br><input type=submit></form>

 

Hola <?=$nombre?>. Tiene <?=$edad?> años.

Page 69: Introducción a PHP

3.1.2. Forms. Valores múltiples.

 

<form action="accion1.php" method="POST"><select multiple name=menu><option>Tortilla <option>Paella<option>Fabada <option>Lentejas</select><input type=submit></form>

  

<?php echo "Su elección:<br>"; foreach($menu as $plato) { echo "$plato<br>\n"; }?>

Page 70: Introducción a PHP

3.1.2. Forms. Valores múltiples. (php3)

<form action="accion1.php" method="POST"><select multiple name=menu><option>Tortilla <option>Paella<option>Fabada <option>Lentejas</select><input type=submit></form>

<?php echo "Su elección:<br>\n"; $i=0; while ($i<4){ if($menu[$i]!="") { echo $menu[$i]."<br>\n"; } $i++; }?>

Page 71: Introducción a PHP

3.2.1. Sesiones.

Una sesión es una cantidad de información que se almacena dentro del servidor con un identificador único de usuario

Éste id es enviado aútómaticamente al usuario por medio de cookies.

Page 72: Introducción a PHP

3.2.2. Sesiones.

Dentro de ésta sesión se puede almacenar los valores de las variables y disponer de ellas en cualquiera de las páginas en las que se inicie una sesión.

Una ventaja extra es que al cambiar el valor de las variables, automáticamente cambia su valor para la sesión

Page 73: Introducción a PHP

3.2.3. Sesiones.

 

bool session_start(void);bool session_register (mixed name [, mixed ...]) bool session_destroy(void);

 

 

// Ejemplo, un contadorsession_start(); print($contador); $contador++;session_register("contador");

 

<A HREF="siguiente.php?<?=SID?>">Continuar</A>

Page 74: Introducción a PHP

3.3. 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]]]]])

Page 75: Introducción a PHP

3.4. Tratamiento de errores.

 

$nombre = '/etc/shadow';

$archivo = @fopen ($nombre, 'r');

if( !$archivo ) { die("No se pudo abrir el archivo ($nombre)");}

 

Page 76: Introducción a PHP

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’;}

 

Page 77: Introducción a PHP

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

 

Page 78: Introducción a PHP

3.5.2. Cadenas. Subcadenas. Ejemplo: substr.php3

<?php echo "substr('abcdef', 2, 3)<br>";$str = substr('abcdef', 2, 3); echo "EL substring de long. 3 a partir de la posicion 2 es: $str <br><br>"; echo "substr('abcdef', -2) <br>";$str = substr('abcdef', -2); echo "EL substring a partir de la posicion 2 desde la derecha es: $str<br><br>"; echo "substr('abcdef', -2, 1)<br>";$str = substr('abcdef', -2, 1); echo "EL substring a partir de la posicion 2 desde la derecha es: $str <br><br>"; echo "substr('abcdef', 1, -2)<br>";$str = substr('abcdef', 1, -2); echo "EL substring a partir de la posicion 1 y hasta la posicion 2 desde laderecha es: $str <br><br>";?>

Page 79: Introducción a PHP

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

 

Page 80: Introducción a PHP

3.5.2. Cadenas. Subcadenas. (2) Ejemplo: cadpos.php3

<?php echo "strpos('cadena de prueba', 'de') <br>";$i = strpos('cadena de prueba', 'de'); echo "La posicion de: de en: cadena de prueba es: $i <br><br>"; echo "strpos('cadena de prueba', 'de', 5) <br>";$i = strpos('cadena de prueba', 'de', 5); echo "La posicion de: de en: cadena de prueba despues de la 5 posición es : $i <br><br>"; echo "strrpos('cadena de prueba', 'de')<br>";$s = strrpos('cadena de prueba', 'de'); echo "La posicion de: de en: cadena de prueba es : $s <br><br>"; echo "strstr('cadena de prueba', 'de')<br>";$s = strstr('cadena de prueba', 'de'); echo "La cadena despues de la primera ocurrencia de: de en: cadena de prueba es : $s <br>";?>

Page 81: Introducción a PHP

3.5.3. Cadenas. Imprimir y formatear.

  int printf (string formato [, mixed args...])string sprintf (string formato [, mixed args...])

 

1. Relleno2. Alineación3. Número de caracteres4. Precisión5. Tipo

% El carácter de tanto por ciento.b Entero en binario.c Entero como carácter ASCII.d Entero en decimal.f Double en punto flotante.o Entero en octal.s Cadena.x Entero en hexadecimal (minúsculas).X Entero en hexadecimal (mayúsculas).

Secuencias de formato

Page 82: Introducción a PHP

3.5.3. Cadenas. Imprimir y formatear. (2)

 

printf(“%02d/%02d/%04d”, $dia, $mes, $año); $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);

 

Page 83: Introducción a PHP

3.5.4. Escapar caracteres. SQL.

 

$busca = “D’Alton”; // Habrá que escapar el apóstrofe

$sql = ‘SELECT * FROM usuarios WHERE apellido = \’’ . addslashes($busca) . ‘\’’;

 

Page 84: Introducción a PHP

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)

 

Page 85: Introducción a PHP

3.5.4. Escapar caracteres. HTML.

 

$valor = “a>b”;echo ‘<input type=hidden name=var value=”’ . htmlspecialchars($valor) . ‘”>’;

// <input type=hidden name=var value=”a&gt;b”>

 

string nl2br (string cadena)

 

Page 86: Introducción a PHP

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);

Page 87: Introducción a PHP

3.5.5. Extraer campos. Expresiones regulares.

 

array split (string delimitador, string cadena [, int límite]) 

$fecha = "12/4 2002";

$campos = split ('[ /.-]', $fecha);

Page 88: Introducción a PHP

3.5.6. Recorrer un array. 

$arr = array(1,'cosa',1.57,'gato'=>'raton','perro'=>'gato'); current($arr); // 1 next($arr); // cosa current($arr); // cosaprev($arr); // 1 end($arr); // gatocurrent($arr); // gatokey($arr); // perroreset($arr); // 1 each($arr); // array(0,1) each($arr); // array(1,'foo') each($arr); // array(2,1.57)

reset(), end(), next(), each(), current(), key()

Page 89: Introducción a PHP

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.

Page 90: Introducción a PHP

3.5.8. Otras funciones.

 

string trim (string cadena)string ltrim (string cadena)string rtrim (string cadena)

 

 

string strtoupper (string cadena)string strtolower (string cadena) string ucfirst (string cadena)

Eliminar espacios en blanco:

Mayúsculas y minúsculas:

Page 91: Introducción a PHP

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 archivo.•‘w+’ Lectura/escritura. Se trunca el archivo.•‘a’ Sólo escritura. Puntero al final.•‘a+’ Lectura/escritura. Puntero al final.

Page 92: Introducción a PHP

3.6.2. Archivos. 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 archivo [, int include_path])

int fwrite (int identificador, string cadena [, int tamaño])

Page 93: Introducción a PHP

3.6.3. Archivos. Copiar / renombrar / borrar.

 

int copy (string origen, string destino)

int rename (string origen, string destino)

int unlink (string archivo)

Page 94: Introducción a PHP

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)

Page 95: Introducción a PHP

3.6.4. Directorio. Listado de contenidos.

 

$direcotrio = opendir('.');

while (($archivo = readdir($directorio)) !== FALSE) { echo "$archivo\n";}

closedir($directorio);

Page 96: Introducción a PHP

3.6.5. Archivos. Envío.

 

<FORM ENCTYPE="multipart/form-data" ACTION="recibir.php" METHOD=POST><INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">archivo: <INPUT NAME="archivo" TYPE="file"><INPUT TYPE="submit" VALUE="Enviar"></FORM>

 

// Contenido de “recibir.php”echo "Recibido el archivo: ".$archivo_name."<br>\n"; echo "Tamaño del archivo: ".$archivo_size."<br>\n"; echo "Tipo mime: ".$archivo_type."<br>"; rename($archivo, $archivo_name);

Page 97: Introducción a PHP

3.6.5. Archivos. Envío.

 

<FORM ENCTYPE="multipart/form-data" ACTION="recibir1.php" METHOD=POST><INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000">archivo: <INPUT NAME="archivo" TYPE="file"><INPUT TYPE="submit" VALUE="Enviar"></FORM>

 

// Contenido de “recibir1.php”echo "Recibido el archivo: ".$archivo_name."<br>\n"; echo "Tamaño del archivo: ".$archivo_size."<br>\n"; echo "Tipo mime: ".$archivo_type."<br>"; @rename($archivo, $archivo_name);

Page 98: Introducción a PHP

3.6.6 Pasar Variables por la URL

Para pasar las variables de una página a otra lo podemos hacer introduciendo dicha variable dentro del enlace hipertexto de la página destino. La sintaxis sería la siguiente:

<a href="destino.php?variable1=valor1&variable2=valor2&...">Mi enlace</a>

Estas variables no poseen el símbolo $ delante. Esto es debido a que en realidad este modo de pasar variables no es específico de PHP

Page 99: Introducción a PHP

3.6.6 Pasar Variables por la URL. Ejemplo: origen.html

<HTML> <HEAD><TITLE>origen.html</TITLE></HEAD><BODY><a href="destino.php?saludo=hola&texto=Esto es una variable texto">

Pasaje de variables saludo y texto a la página destino.php</a></BODY> </HTML>

Page 100: Introducción a PHP

3.6.6 Pasar Variables por la URL. Ejemplo: destino.php

<HTML> <HEAD><TITLE>destino.php</TITLE></HEAD> <BODY><? echo "Variable \$saludo: $saludo <br>\n"; echo "Variable \$texto: $texto <br>\n"?></BODY> </HTML>

Page 101: Introducción a PHP

3.6.7. Pasar variables por formularios

Este tipo de transferencia nos permite interaccionar directamente con el usuario.

El proceso es similar al explicado para las URLs.

Primeramente, presentamos una primera página con el formulario clásico a rellenar y las variables son recogidas en una segunda página que las procesa

Page 102: Introducción a PHP

3.6.8. Pasar variables por formularios. Ejemplo: formulario.html

<HTML> <HEAD> <TITLE>formulario.html</TITLE> </HEAD><BODY><FORM METHOD="POST" ACTION="destino2.php">Nombre<br><INPUT TYPE="TEXT" NAME="nombre"><br>Apellidos<br><INPUT TYPE="TEXT" NAME="apellidos"><br><INPUT TYPE="SUBMIT"></FORM></BODY></HTML>

Page 103: Introducción a PHP

3.6.9. Pasar variables por formularios. Ejemplo: destino2.php

<HTML> <HEAD> <TITLE>destino2.php</TITLE> </HEAD><BODY><? echo "Variable \$nombre: $nombre <br>\n"; echo "Variable \$apellidos: $apellidos <br>\n"?></BODY></HTML>

Page 104: Introducción a PHP

3.7.1. POO. Definición de una clase.

 

class NombreClase { var $variables; function metodos ($parametros) { codigo }}

Page 105: Introducción a PHP

3.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--; } }}

Page 106: Introducción a PHP

3.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

}

 

Page 107: Introducción a PHP

3.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; }}

 

Page 108: Introducción a PHP

3.7.3. POO. Creación y uso de objetos.

 

// Creación (instanciación)$MiCoche = new Coche;$MiCocheSeMueve = new Coche(10);

// Uso$MiCoche->acelerar();$MiCoche->acelerar();$MiCoche->acelerar();echo $MiCoche->velocidad;$MiCoche->frenar();

 

Page 109: Introducción a PHP

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])

Page 110: Introducción a PHP

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);

Page 111: Introducción a PHP

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”); }

Page 112: Introducción a PHP

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”);}

Page 113: Introducción a PHP

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)

 

Page 114: Introducción a PHP

3.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”;}

Page 115: Introducción a PHP

3.9. Acceso a BD unificado. Clase ConexionGenerica.

class ConexionGenerica { var $link;

function connect($servidor, $usuario, $clave) { echo "<h1>El m&eacute;todo <i>connect</i> ", "no est&aacute; implementado en la ", "clase <i>".get_class($this)."</i></h1>";

return FALSE; }  function close() {} function select_db($base_datos) {} function query($query) {} function fetch_array($resultado) {} function free_result($resultado) {}}

Page 116: Introducción a PHP

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) {}}

Page 117: Introducción a PHP

3.9. Acceso a BD unificado. Uso.

// archivo CreaConexion.increquire ("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");