Sie sind auf Seite 1von 18

PHP

URJC - Aplicaciones para la Web

R. Capilla

PHP. Introduccin

PHP (Personal Home Page Tools PHP Hypertext Processor) fue creado por Rasmus Lerdorf (1994) para crear pginas Web dinmicas. Es un lenguaje interpretado que se integra dentro de HTML al igual que Javascript. Surge como opcin vlida frente al ASP (Active Server Pages) de Microsoft.
URJC - Aplicaciones para la Web
2

R. Capilla

PHP. Introduccin

PHP puede hacer...


En niveles bsicos casi todo lo que hacen los programas CGI Recoger datos y generar pginas cuyo contenido es dinmico Soporta un gran nmero de Bases de Datos (dBase, Informix, mSQL, DB2, MySQL, etc.) Es capaz de entenderse con diversos protocolos tales como: IMAP, SNMP, POP3, HTTP,etc. Se ejecuta en el servidor (Windows / Linux)
URJC - Aplicaciones para la Web
3

R. Capilla

PHP. Comprobacin

Llamada a phpinfo()
<?php phpinfo(); ?>

URJC - Aplicaciones para la Web

R. Capilla

PHP. Primer script PHP.

Ejemplo de script PHP


<html> <head> <title>Example</title> </head> <body> <?php echo "Hola, soy un script PHP!"; ?> </body> </html>

URJC - Aplicaciones para la Web

R. Capilla

PHP. Caractersticas del Lenguaje

El lenguaje PHP va encerrado entre marcas de inicio y fin especiales


1. <? echo (Esto es una instruccin SGML\n"); ?> 2. <?php echo(servir documentos XML\n"); ?> 3. <script language="php"> echo (a editores (como FrontPage) no les gusta procesar instrucciones"); </script> 4. <% echo (Puedes usar marcas de estilo ASP"); %> <%= $variable; # Es un atajo para "<%echo .." %>
6

URJC - Aplicaciones para la Web

R. Capilla

PHP. Caractersticas del Lenguaje

Los comentarios se escirben con (/*comentario*/) y // comentario. Una sentencia PHP acaba en ; Admite la estructuracin del script en funciones y clases (version 5).

URJC - Aplicaciones para la Web

R. Capilla

PHP. Caractersticas del Lenguaje

Operadores.
Aritmticos (+, -, *, /, % ) //$a = $b + 1; Asignacin (=) // $a = 3; Operaciones con bits (&, |, <<, >>) Comparacin (==, !=, >=, <, etc.) // $a==$b; Incremento/decremento (++$a, $a++,-$a,$a--) // $a=3; $a++; echo$a (a=4) Cadenas de caracteres ( . ) //Concatena cadenas de caracteres
URJC - Aplicaciones para la Web
R. Capilla
8

PHP. Caractersticas del Lenguaje

Variables escalares. Se usan para almacenar datos numricos o cadenas de texto. Empiezan con el signo $.
$num_paginas= 358; $precio= 34.05; #En Euros claro est!! $titulo= Estamos en el curso de PHP;

Arrays. Comienzan con array().


$frutas = array(pera, manzana, limon);

Acceso a los valores de los arrays


$frutas[0]->> pera,

URJC - Aplicaciones para la Web

R. Capilla

PHP. Caractersticas del Lenguaje

Algunas funciones de los arrays


array_count_values($array)//Cuenta
valores de un array los

in_array(valor, array)
si valor est en el array

//retorna verdadero

Ej: if (in_array(limon, frutas) print Encontre el limon;

URJC - Aplicaciones para la Web

R. Capilla

10

PHP. Caractersticas del Lenguaje

Expresiones en PHP. Son similares a las de C.


Expresin aritmtica: $precio_total= $num_libros * $precio_unidad; Expresin relacional: $usuarios[$si]

== 10

PHP aade nuevos operadores.


Ejemplo: Operador . Concatenacin de cadenas. $texto1= Bienvenidos, ; $texto2= al PHP!; $message= $texto1.$texto2; #$message=
Bienvenidos, al PHP!; URJC - Aplicaciones para la Web
R. Capilla
11

PHP. Caractersticas del Lenguaje

Se pueden definir CONSTANTES.


<?php define("CONSTANTE", Soy un valor que no vara."); echo CONSTANTE; // imprime Soy un valor que no vara." ?>

Existen CONSTANTES predefinidas, tales como:


TRUE, FALSE PHP_OS: nombre el Sistema Operativo PHP_VERSION: Versin del PHP __FILE__ : nombre del fichero PHP que se procesa
12

URJC - Aplicaciones para la Web

R. Capilla

PHP. Caractersticas del Lenguaje

Control de flujo de programa


Sentencia if
if ($variable > $limite) { sentencia 1; ... } if (expresion) sentencia-PHP;

Sentencia if ... else


if ($a == 5) { ... } else { ... } <?php if($a==5): ?> ... <?php endif; ?> { equivale a : } equivale a endif;

URJC - Aplicaciones para la Web

R. Capilla

13

PHP. Caractersticas del Lenguaje

Control de flujo de programa


Sentencia while: idntica a la de C
While (expresion){ sentencias } While (expresion): sentencias enwhile;

Sentencia for: idntica a la de C Sentencia do while (equivale a until)


Si=10; do { print $i; Si = Si -1; } while($i > 0); URJC - Aplicaciones para la Web
R. Capilla
14

PHP. Caractersticas del Lenguaje

Control de flujo de programa


Sentencia foreach
foreach(expresion_array as valor) sentencia Ejemplo: Imprimir los valores del array de frutas foreach($frutas as $mifruta){ echo Fruta: $mifruta<br>\n; }

Sentencia break:

Termina la ejecucin de una sentencia while or switch

Sentencia switch: igual que en C


URJC - Aplicaciones para la Web
R. Capilla
15

PHP. Caractersticas del Lenguaje

Otras Sentencias PHP


Sentencias require(), include()
require(mifichero); //se reemplaza por mifichero include(fichero.php); include($fichero); <?php $retval = include ('test.inc'); echo El Fichero es: '$retval'<br>\n"; ?>

URJC - Aplicaciones para la Web

R. Capilla

16

PHP. Caractersticas del Lenguaje


Funciones definidas por el usuario $valor1= 5; $valor22= 6; #invocacin de la funcin suma($valor1, $valor2); #comienzo de la funcin function suma($valor1, $valor2) { $resultado = $valor1 + $valor2; printf (Suma = %d $resultado; } function cuadrado ($num) { return $num * $num; } echo cuadrado(3); //retorna 9

URJC - Aplicaciones para la Web

R. Capilla

17

PHP. Caractersticas del Lenguaje


PHP permite manipular imgenes en formato GIF, PNG, JPG, WBMP y XPM
Creamos la imagen desde PHP
<?php //directiva al servidor HTTP Header("Content-type: image/gif"); //retorno en la variable im un identificador de la imagen $im = imagecreatefromgif("boton.gif"); //envia la imagen al navegador o aun fichero ImageGif($im); //destruye una imagen ImageDestroy($im); ?>

Llamamos a la imagen desde HTML


<img src = boton.php>

URJC - Aplicaciones para la Web

R. Capilla

18

PHP. Caractersticas del Lenguaje

Envio de ficheros va HTML.


#Es posible enviar ficheros va Web mediante un formulario <form enctype="multipart/form-data action=envia-fich.php" method="post" "> Envio de ficheros:<br> <input name=nombre" type="file"><br> <input type="submit" value=Enviar ficheros"> </form>

URJC - Aplicaciones para la Web

R. Capilla

19

PHP. Caractersticas del Lenguaje

Recibir cuerpo del formulario


Se inicializa el siguiente array conteniendo el formulario
$_POST
$cuerpo .= "Nombre: " . $_POST[nombre] . "\n";

URJC - Aplicaciones para la Web

R. Capilla

20

PHP. Caractersticas del Lenguaje

Envio de ficheros va HTML.


<form enctype="multipart/form-data" action="_URL_" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="10000"> Enviar fichero: <input name="userfile" type="file"> <input type="submit" value=Envia Fichero"> </form>

MAX_FILE_SIZE <= directiva upload_max_filesize Por defecto = 2 MegaBytes tamao = getimagesize($fichero); //tamao de una imagen
URJC - Aplicaciones para la Web
R. Capilla
21

PHP. Caractersticas del Lenguaje

Acceso a ficheros remotos.


<?php $file = fopen ("http://www.php.net/", "r"); if (!$file) { echo "<p>No puedo abrir el fichero\n"; exit; } //En el caso de que pueda abrirlo y mientras NO EOF while (!feof ($file)) { $line = fgets ($file, 1024); //La funcin Eregi() busca en una cadena los elementos que coincidan con un patrn determinado if (eregi ("<title>(.*)</title>", $line, $out)) { $title = $out[1]; //Subcadena que empieza por <title> break; } } fclose($file); ?>

URJC - Aplicaciones para la Web

R. Capilla

22

PHP. Caractersticas del Lenguaje

Grabar datos en un servidor remoto.


<?php $file=fopen("ftp://ftp.php.net/incoming/outputfile", "w"); if (!$file) { echo "<p>No puedo abrir el fichero\n"; exit; } fputs ($file, "$HTTP_USER_AGENT\n"); fclose ($file); ?>

URJC - Aplicaciones para la Web

R. Capilla

23

Acceso a Bases de Datos PHP permite el acceso a Bases de Datos para generar HTML dinmico Las funciones de acceso a BBDD varan segn la Base de Datos a la que se acceda. Ejemplo: dbase_open Abre una BD dBase dba_open Abre una BD DB2 de SleepyCat Software. No de IBM ora_logon Estable una conexin a una BD de Oracle
24

URJC - Aplicaciones para la Web

R. Capilla

Acceso a Bases de Datos

Pasos para Acceder a Bases de Datos


1. 2. 3. 4. 5. 6. 7.

Conexin a la BBDD Chequeo de Errores Crear la sentencia para los datos Ejecutar la sentencia Chequear Errores Mostrar los resultados Cerrar la BBDD
25

URJC - Aplicaciones para la Web

R. Capilla

Acceso a Bases de Datos

Ejemplo de Acceso a Bases de Datos


/*Acceso a BBDD en MySQL*/ <?php /*Conexin a la BBDD*/
$conexin=mysql_connect(localhost,usuario, clave);

/*Comprobacin de

Errores*/

if (!$conexin) { echo Ha ocurrido un Error\n; exit;}

/*Conectar con la tabla*/


$mysql_select_db(mitabla, $conexion); or die (Error en la conexin);
26

URJC - Aplicaciones para la Web

R. Capilla

Acceso a Bases de Datos Ejemplo de Acceso a Bases de Datos


/*Crear sentencia en SQL*/
$misentencia = SELECT * FROM mi_tabla;

/*Ejecutar sentencia en SQL*/


$resultadoSQL = mysql_query($conexin,$misentencia);

/*Chequear Errores*/
if (!$resultadoSQL) { echo Error en el resultado; exit; }

URJC - Aplicaciones para la Web

R. Capilla

27

Acceso a Bases de Datos

Ejemplo de Acceso a Bases de Datos


/*Mostrar resultados*/
while (($filas=mysql_fetch_array($resultadoSQL)) { $i=0; echo <br>; while (($i<mysql_num_fields($resultadoSQL)) { echo $filas[$i]; $i++; } }

/*Cerrar la conexin con la BBDD*/


mysql_close($conexion);

?>

URJC - Aplicaciones para la Web

R. Capilla

28

Clases en PHP

Definicin de una clase


<?php class miclase // Variables var $cuenta = 3; var // Mtodos function mifuncion($param1) {.} ?>

URJC - Aplicaciones para la Web

R. Capilla

29

Clases en PHP

Instancia de la clase
<?php .. $instancia = new miclase // Llamada a mtodos $instancia->mimetodo() . ?>

URJC - Aplicaciones para la Web

R. Capilla

30

Clases en PHP

Ejemplo de clases
<?php class Multiplica { var $resultado; function multi($a,$b) { $this->resultado=$a*$b; } function imprime() { echo $this->resultado,"<br>"; } }

$objeto= new Multiplica; $objeto->multi(7,3); $objeto->imprime();

URJC - Aplicaciones para la Web

R. Capilla

31

Control de Errores

PHP ofrece 4 clases de Errores


Errores de funciones Avisos Errores sintcticos Notificaciones

URJC - Aplicaciones para la Web

R. Capilla

32

Control de Errores

Funcin php_errormsg
// Inicializamos el control de errores ini_set('track_errors', true); // Mostramos el error
$login = @ ftp_login($ftpStream, "username", "password") or die(No puedo abrir el servidor de FTP:

$php_errormsg");

URJC - Aplicaciones para la Web

R. Capilla

33

Control de Errores

Informe de Errores
Funcin error_reporting() //Limita la captura de errores
E_ERROR // Error fatal tiempo de ejecucin E_WARNING // Error no fatal E_PARSE // Error en tiempo de compilacin E_NOTICE // Avisos en tiempo de ejecucin E_USER_WARNING // Mensaje de aviso generado por el usuario E_CORE_WARNING // Advertencia fatal al arrancar PHP

URJC - Aplicaciones para la Web

R. Capilla

34

Control de Errores

Informe de Errores. Ejemplos


// Deshabilita el informe de errores Error_Reporting(0); //Captura los errores descritos Error_Reporting(E_NOTICE | E_WARNING); //Captura todos los errores Error_Reporting(E_ALL);
URJC - Aplicaciones para la Web
R. Capilla
35

Control de Errores

Informe de Errores. Ejemplos


Se suele deshabilitar E_NOTICE cuando se emplea la funcin IsSet() para comprobar si se inicializ una variable. En caso contrario si la variable no fue inicializada dar un error y el intrprete abortar la ejecucin. // Deshabilitamos E_NOTICE
$sin_notice = Error_Reporting(~E_NOTICE);

// Programa PHP // Restauramos la mscara de error antigua


Error_Reporting($sin_notice);

URJC - Aplicaciones para la Web

R. Capilla

36

Control de Errores Otras funciones


Error_log() //Enva un mensaje de error a algn lugar User_error() //Genera un mensaje de error, aviso o noticia del usuario Set_error_handler() //Establece una funcin de manejo de errores definida por el usuario Restore_error_handler() // Restaura la funcin de errores definida anteriormente

if (!Ora_Logon($username, $password)) { error_log(BBDD Oracle no disponible", 0); }


0 1 2 3 Al registro de PHP o archivo (segn error_log) A una direccin de email especificada A travs de la conexin de depuracin del PHP Agregado al final de un archivo destino
37

URJC - Aplicaciones para la Web

R. Capilla

Uso de Sesiones

Que son las sesiones


Bsicamente una sesin es la secuencia de pginas que un usuario visita en un sitio Web. Desde que entra en nuestro sitio, hasta que lo abandona. El trmino sesin se aplica a esta secuencia de navegacin, para ello crearemos un identificador nico que asignamos a cada una de estas sesiones de navegacin. A este identificador se le conoce como sesin.

URJC - Aplicaciones para la Web

R. Capilla

38

Uso de Sesiones

Proceso de creacin de sesiones


Existe una sesin?
1.1 Si existe la retomamos 1.2 Si no existe creamos una nueva

Generar un nmero de identificador nico

URJC - Aplicaciones para la Web

R. Capilla

39

Uso de Sesiones

Inicializacin
Session_start() : inicializa una sesin Session_register(variable) : registra una variable en una sesion Session_id() : obtiene el identificador de una sesin <?php session_start(); echo "He inicializado la sesin"; ?> <?php session_start(); echo 'La sesin actual es: '.session_id(); ?>
URJC - Aplicaciones para la Web
40

R. Capilla

Uso de Sesiones Ejemplo de un contador que se incrementa <?php session_register('contador'); echo '<a href="'.$PHP_SELF.'?'.$SID.'">Contador vale: '.++$_SESSION['contador']. '</a>'; ?>
$PHP_SELF // Script en ejecucin $SID // Constante con el nombre e identificador de sesin

Session_name(misesion) : nombre de una sesion La asignacin del nombre de sesin debe realizarse antes que ninguna otra funcin con sesiones, antes que session_start() o session_register().
URJC - Aplicaciones para la Web
R. Capilla
41

Uso de Sesiones Ejemplo Carro de Compra <?php // Manual de PHP de WebEstilo.com session_start(); session_register('itemsEnCesta'); $item=$_POST['item']; $cantidad=$_POST['cantidad']; $itemsEnCesta=$_SESSION['itemsEnCesta'];

URJC - Aplicaciones para la Web

R. Capilla

42

Uso de Sesiones
Ejemplo Carro de Compra if ($item){ if (!isset($itemsEnCesta)){ $itemsEnCesta[$item]=$cantidad; }else{ // $v= valor del elemento; $k=clave foreach($itemsEnCesta as $k => $v){ if ($item==$k){ $itemsEnCesta[$k]+=$cantidad; $encontrado=1; } } if (!$encontrado) $itemsEnCesta[$item]=$cantidad; } } $_SESSION['itemsEnCesta']=$itemsEnCesta; ?> URJC - Aplicaciones para la Web
R. Capilla
43

Uso de Sesiones
<html> <body> <tt> <form action="<?=$PHP_SELF."?".$SID?>" method="post"> Dime el producto <input type="text" name="item" size="20"><br> Cuantas unidades <input type="text" name="cantidad" size="20"><br> <input type="submit" value="Aadir a la cesta"><br> </form> <? if (isset($itemsEnCesta)){ echo'El contenido de la cesta de la compra es:<br>'; foreach($itemsEnCesta as $k => $v){ echo 'Artculo: '.$k.' ud: '.$v.'<br>'; } } ?> </tt> </body> </html>
URJC - Aplicaciones para la Web
R. Capilla
44

Uso de Sesiones
<?php class SessionUser { function SessionUser() { session_start(); } function isValid() { if (isset($_SESSION["login"] )) return true; return false;} function crearSesion($login) { session_register("login"); $_SESSION["login"] = $login; } function SessionDestroy() { session_unregister("login"); session_destroy(); } function getUsername() { if ($this->isValid()) return $_SESSION["login"]; else return ""; } function logout() { $this->SessionDestroy(); } }?>

URJC - Aplicaciones para la Web

R. Capilla

45

Uso de Sesiones $session_user = new SessionUser(); if ($session_user->isValid()){ Hacer lo que sea.; }

URJC - Aplicaciones para la Web

R. Capilla

46

Google Maps
$phoogle = new PhoogleMap(); $phoogle->setAPIkey('ABQIAAAAgnHj1ABl6hQQrQv9loTCqhQ2evcpjfkIZPdU9Omd6kOUx9w'); $phoogle->setHeight(400); $phoogle->setWidth(500); $phoogle->zoomLevel = 12; $phoogle->centerMap(40.396764, -3.55957); . DATOS DEL GRAFICO . $phoogle->printGoogleJS(); $phoogle->showMap();

http://www.phpinsider.com/php/code/GoogleMapAPI/

URJC - Aplicaciones para la Web

R. Capilla

47

XAJAX

Una librera PHP para ejecutar AJAX en PHP de forma sencilla.

http://xajaxproject.org

URJC - Aplicaciones para la Web

R. Capilla

48

XAJAX

Incluir con PHP el archivo donde se encuentre la clase xajax require ('xajax/xajax.inc.php'); Crear una instancia de un objeto de la clase xajax $xajax = new xajax();
49

URJC - Aplicaciones para la Web

R. Capilla

XAJAX

Escribimos una funcin en PHP que se invocar por medio de ajax. Esta funcin realizar acciones del lado del servidor. En la propia funcin realizaremos una instancia de un objeto AjaxResponse, que se usar para mostrar resultados en la pgina. $respuesta = new xajaxResponse(); return $respuesta;
URJC - Aplicaciones para la Web
R. Capilla
50

XAJAX El objeto xajaxResponse() sirve para realizar acciones en la pgina sin tener que recargar el documento. Dispone de varios mtodos o funciones: Ej: addAssign() asigna un valor a una propiedad de un elemento de la pgina. En el ejemplo asigna el valor contenido en la variable $salida al innerHTML de la capa "respuesta", con lo que se altera el texto contenido en esa capa.
$respuesta->addAssign("respuesta","innerHTML",$salida);

URJC - Aplicaciones para la Web

R. Capilla

51

XAJAX Asociamos una funcin PHP al objeto xajax $xajax->mifuncion(parametro");

Antes de enviar el contenido a la pgina hay que ejecutar un mtodo del objeto xajax para procesar las peticiones del que puedan llegar a la pgina. $xajax->processRequests();

URJC - Aplicaciones para la Web

R. Capilla

52

XAJAX
<? //inclumos la clase ajax require ('xajax/xajax.inc.php'); //instanciamos el objeto de la clase xajax $xajax = new xajax(); function procesar_formulario($form_entrada){ $salida = "Gracias por enviarnos tus datos. Hemos procesado esto:<p>"; $salida .= "Nombre: " . $form_entrada["nombre"]; $salida .= "<br>Apellidos: " . $form_entrada["apellidos"]; //instanciamos el objeto para generar la respuesta con ajax $respuesta = new xajaxResponse(); //escribimos en la capa con id="respuesta" el texto que aparece en $salida $respuesta->addAssign("mensaje","innerHTML",$salida); //tenemos que devolver la instanciacin del objeto xajaxResponse return $respuesta; } //registramos la funcin creada anteriormente al objeto xajax $xajax->registerFunction("procesar_formulario"); //El objeto xajax tiene que procesar cualquier peticin $xajax->processRequests(); ?>

No se puede registrar una funcin despus de haber invocado processRequests

URJC - Aplicaciones para la Web

R. Capilla

53

XAJAX
<html> <head> <title>Enviar y procesar un formulario con Ajax y PHP</title> <? //En el <head> indicamos al objeto xajax se encargue de generar el cdigo javascript necesario $xajax->printJavascript("xajax/"); ?> </head> <body> <h1>Recibir y procesar formulario con Ajax y PHP</h1> <div id="mensaje"> <form id="formulario"> Nombre: <input type="text" name="nombre"> <br> Apellidos: <input type="text" name="apellidos"> <br> <input type="button" value="Enviar" onclick="xajax_procesar_formulario(xajax.getFormValues('formulario'))"> </form> </div> </body> 54 </html> URJC - Aplicaciones para la Web R. Capilla

Das könnte Ihnen auch gefallen