39
Especialista en desarrollo de aplicaciones web JORNADA 9 ramos valcárcel, david [email protected]

Especialista Web J9 Php

Embed Size (px)

DESCRIPTION

Jornada sobre PHP

Citation preview

Page 1: Especialista Web J9  Php

Especialista en desarrollo de aplicaciones web

JORNADA 9

ramos valcárcel, [email protected]

Page 2: Especialista Web J9  Php

PHP PHP Hipertext Preprocessor

Inicialmente en 1994: Personal Home Page

Lenguaje Open Source

Basado en C y C++

Multiplataforma (GNU/Linux, Windows, Mac)Independiente del Sistema Operativo Portable

Muy bien documentado http://www.php.net/

Page 3: Especialista Web J9  Php

PHP Usado en mas de 20 millones de dominios

Page 4: Especialista Web J9  Php

PHP Es un lenguaje de scripts que se ejecuta del lado

del servidor

Los scripts PHP están incrustados en los documentos html

El servidor los interpreta (procesa) y ejecuta antes de enviar las páginas al cliente

El cliente no ve el código PHP, sólo el código que produce

Estructura similar a ASP, JSP, CGI… Muy estandarizado en el uso con Apache y MySQL

Page 5: Especialista Web J9  Php

PHP

Page 6: Especialista Web J9  Php

PHP Primer ejemplo con php

<html>

<head>

<title>PHP – Hello World</title>

</head>

<body>

<?php

echo "Hello World!";

?>

</body>

</html>

Page 7: Especialista Web J9  Php

PHP Los script php se colocan entre

<?php //apertura?> //cierre

La mayoría de las instrucciones finalizan con “;”

Sentencia básicaecho “texto a mostrar”;

Comentarios con// Una sola línea/* Varias líneas */

Page 8: Especialista Web J9  Php

PHP Las variables se identifican con “$” Los nombres de las variables no pueden

comenzar con números ni con caracteres especiales//correcto //incorrecto

$mi_variable $_mivariable

$2variable

La variable toma el tipo de dato del valor que se le asigne

Tipos de datos: int, float, double, string, array, object

Page 9: Especialista Web J9  Php

PHP Ejemplo

<?php $un_bool = TRUE; // un valor booleano $un_str = "foo"; // una cadena $un_int = 12; // un entero

echo gettype($un_bool); // imprime: boolean

// Si este valor es un entero, incrementarlo en cuatro

if (is_int($un_int)) $un_int += 4;?>

Page 10: Especialista Web J9  Php

PHP Es posible concatenar variables (strings) con el operador “.”

<?php $mensaje1 = 'Hola'; $mensaje2 = 'mundo!'; echo $mensaje1.' '.$mensaje2; ?>

Con la función “unset()” podemos quitar el valor de una variable$var = "pepe"; unset($var); // Ahora no tiene valor (NULL)

La función “isset()” nos indica si una variable está inicializadaif (isset($var)){ echo 'Tiene valor';}

Page 11: Especialista Web J9  Php

PHP Condicionales: IF

if (<condición>){código si se cumple la condición}

else{código si no se cumple la condición}

Ejemplo

<?php$i = 6;if ($i < 10){

echo "menor de 10"; }else {

echo "mayor de 10"; }

?>

Page 12: Especialista Web J9  Php

PHP<HTML>

<HEAD><TITLE>Detector de Lengua</TITLE></HEAD><BODY>

<?//definimos variables$espanol="Hola";$ingles="Hello";

//Leemos del navegador su lengua oficial$idioma=substr($HTTP_ACCEPT_LANGUAGE,0,2);

//Formulamos las posibilidades que se pueden darif ($idioma == "es“) {

echo "$espanol";} else echo "$ingles“;?>

</BODY></HTML>

Page 13: Especialista Web J9  Php

PHP Condicionales: SWITCH

switch (<expresión>){case <valor 1>: //código para valor 1

break;case <valor 2>: //código para valor 2

break;...

case <valor n>: //código para valor n break;

default: // código por defecto break;

}

Page 14: Especialista Web J9  Php

PHP Ejemplo

<?php

$variable=2;

switch($variable) { case 1: echo '$Variable es igual a 1.';

break; case 2: echo '$Variable es igual a 2.';

break; case 3: echo '$Variable es igual a 3.';

break; default: echo '$Variable no igual ' . 'a 1, 2

o 3.'; } ?>

Page 15: Especialista Web J9  Php

PHP Bucles: While

Se ejecuta al código mientras se cumpla una condición

while (<condicion>) {//Código a ejecutar

}

Ejemplo

$a = 1;

while ( $a < 10) {

echo "<p>El número actual es $a</p>";

$a++;

}

Page 16: Especialista Web J9  Php

PHP Bucles: Do While

Se ejecuta al código mientras se cumpla una condición Al menos se ejecuta una vez

do {//Código a ejecutar

} while (<condicion>)

Ejemplo

$a = 0;do{ $a++; echo ('<p>El número es '.$a.'</p>');}while ( $a < 10);

Page 17: Especialista Web J9  Php

PHP Bucles: For

Se ejecuta al código mientras se cumpla una condición

for (inicialización; condición; actualización) { //código

}

Ejemplo

for ($i=1;$i<=100;$i++) {echo “$i <br>”;}

Page 18: Especialista Web J9  Php

PHP Bucles: Foreach

Se ejecuta un determinado código por cada uno de los elementos de una colección

Por ejemplo, si tenemos un array con n elementos:<?

$vector = array(    "uno" => 1,    "dos" => 2,    "tres" => 3,    "diecisiete" => 17 ); foreach($vector as $indice => $valor) {    echo "$vector[$indice] => $valor.n"; } ?> 

Page 19: Especialista Web J9  Php

PHP Funciones importantes

include (“archivo”)Llama al archivo para incrustar el código en la página. Puede ejecutarse o no al estar

dentro de un condicional

require(“archivo”)Llama al archivo para incrustar el código en la página. Este código se ejecuta siempre

A partir de la versión PHP 4.0.2 y posteriores esto cambia y ambas construcciones se comportan exactamente de la misma manera, con la única diferencia:

include solo da una advertencia, y sigue ejecutando el código require produce un error y interrumpe la ejecución.

header(“Location: paginaweb”)Redirecciona dinámicamente las página webSe utiliza al comienzo de un fichero HTML

exitFinaliza la ejecución del código

Page 20: Especialista Web J9  Php

PHP Ejemplo include

vars.php<?php

$color = 'verde';

$fruta = 'manzana';

?> test.php

<?php

echo "Una $fruta $color"; // Una

include 'vars.php';

echo "Una $fruta $color"; // Una manzana verde

?>

Page 21: Especialista Web J9  Php

PHP Matrices/Arrays

Es un tipo de dato, que contiene un conjunto de valores referenciados con un índice. $sentido[1]="ver";$sentido[2]="tocar";$sentido[3]="oir";$sentido[4]="gustar";$sentido[5]="oler";

Acceso a una posiciónecho ($sentido[1]); //devuelve “ver”

Creación de una matriz$sentidos= array(‘ver‘,‘tocar‘,‘oír’);$sentidos= array(1=>‘ver‘,2=>‘tocar‘,3=>‘oír‘);

Page 22: Especialista Web J9  Php

PHP Matrices/Arrays

Podemos crear elementos de una matriz sobre la marcha:

$matriz[7] = "Texto de la posición 7"; // si no especificamos un índice, se inserta en la siguiente posición

$matriz[] = "Esto iría en la posición 8";

Podemos eliminar elementos, o la matriz entera con "unset()“

$matriz = array(3 => 'Oso', 5 => 'Lagarto');

unset($matriz[3]); // No hay nada en la posición 3

unset($matriz); // No hay nada en la matriz

Page 23: Especialista Web J9  Php

PHP Funciones

function <nombre_función> ($param1, $param2, ...)

{

//código función

return <resultado>;

} Ejemplos

function negrita($texto) {

return '<b>'.$texto.'</b>';

}

echo 'Quiero '.negrita(‘destacar').' lo '.negrita('importante');

function sumar($num1,$num2){   $ suma=$ num1 +$num2 echo $num1."+".$num2."=".$suma; }

sumar(5,6)

Page 24: Especialista Web J9  Php

PHP Existen muchas bibliotecas de funciones en PHP Algunos ejemplos:

Funciones de manipulación de cadenas Funciones de fecha y hora Funciones de arrays Funciones de ficheros Funciones matemáticas Funciones de bases de datos Funciones de red

Algunas bibliotecas requieren la instalación de componentes adicionales

http://es2.php.net/manual/es/

Page 25: Especialista Web J9  Php

PHP Manejo de cadenas

chop(cadena): Devuelve la cadena de caracteres con los caracteres de blanco y nueva línea eliminados

trim(cadena): Elimina los blancos que aparecen a izquierda y derecha de la cadena de caracteres

str_repeat(caracter,numero_veces): Repite un caracter el numero de veces indicado

strtolower(cadena): Pasa toda la cadena a letras minúsculas strtoupper(cadena): Pasa toda la cadena a letras mayúsculas ucfirst(cadena): Pasa a mayúscula el primer caracter de una cadena str_replace(subcadena1,subcadena2,cadena): Sustituye una

palabra por otra dentro de una cadena strtr(cadena,originales,traducidos): Traduce ciertos

caracteres .Ejemplo: $persona=strt($persona,"áéíóú","a,e,i,o,u"); de esta forma cambiaría todas las vocales con acento por vocales sin acento.

substr_replace(cadena,nueva,comienzo,longitud): Sustituye una porción del contenido de una cadena

Page 26: Especialista Web J9  Php

PHP<?php echo strlen("12345"),"<br>";// devuelve 5 $palabras=split(" ","Esto es una prueba"); for($i=0;$palabras[$i];$i++) echo $palabras[$i],"<br>";// devuelve cada palabra en una fila echo substr("Devuelve una subcadena de otra",9,3),"<br><br>";// devuelve “una”

echo strpos("Busca la palabra en la frase", "palabra“);// devuelve 9

echo str_replace("verde","rojo","verde que te quiero verde .");// devuelve “rojo que te quiero rojo”; ?>

Page 27: Especialista Web J9  Php

PHP Manejo de fecha y hora

date: permite dar formato a una hora/fecha getdate: devuelve un array con los elementos

“seconds” = segundos“minutes” = minutos“hours” = horas“mday” = día del mes“wday” = día del mes en número“mon” = número del mes“year” = año“yday” = número de día del año, por ejemplo “125”“weekday” = día de la semana en letra (ingles), por ejemplo “Monday”“month” = mes en letra (ingles), por ejemplo “November”

time: Devuelve la fecha actual en formato timestamp de UNIX. Este formato es un número (int) que indica el número de segundos transcurridos desde las 00:00:00 del día 1 de enero de 1970 GMT.

Page 28: Especialista Web J9  Php

PHP<?php

$hora = time();echo ($hora);echo "<br>";// muestra “1241110230 "

$hora = getdate(time());echo( $hora["mday"] . "/" . $hora["mon"] . "/" . $hora["year"] ); echo "<br>";//muestra “30/4/2009”

echo($hora["hours"] .":”. $hora["minutes"] .":”. $hora["seconds"] ); //muestra 18:50:30

?>

Page 29: Especialista Web J9  Php

PHP Manejo ficheros

fopen ( archivo, modo): abre un fichero o URL (lectura/escritura/añadir…)$fp = fopen(’info.txt’, ’r’);

fclose ( int): Cierra un fichero abiertofclose ($fp);

copy(‘archivo.txt',‘directorio'): Copiar un archivo

if(copy('datos.txt',‘copia/datos.bak' )) {

echo "el fichero se copio con éxito.<br>"; } else echo "el fichero no se copio .<br>";

Unlink: Borra un fichero

unlink('datos.txt');

mkdir: crea un directorio rmdir: borra un directorio is_dir: dice si es un directorio is_file: dice si es un fichero

Page 30: Especialista Web J9  Php

PHP Manejo ficheros

<? //Abrimos el fichero en modo de escritura $DescriptorFichero = fopen("datos.txt","w");

//Escribimos la primera línea dentro de él $string1 = "Esta es la primera línea de texto"; fputs($DescriptorFichero,$string1);

//Escribimos la segunda línea de texto $string2 = "Y esta es la segunda línea de texto"; fputs($DescriptorFichero,$string2);

//Cerramos el fichero fclose($DescriptorFichero);?>

Page 31: Especialista Web J9  Php

PHP Excepciones

Permiten el control de errores Ejemplo

function division($dividendo, $divisor) {

if($divisor==0)

throw new Exception(‘Division entre cero!',0);

return $dividendo/$divisor;

}

try {

echo division(15,0);

} catch(Exception $e) {

echo “se ha producido un error: “. $e->getMessage();

}

Page 32: Especialista Web J9  Php

PHP Recuperar valores de formularios

Un formulario puede enviarse con el método "get" o "post" Se usa $_GET y $_POST Ejemplo: recuperar variables pasadas por URL

<html> <body> <?php foreach ($_GET as $nombre => $param) { ?> <p><?=$nombre.': '.$param?></p> <? } ?> </body> </html>

Page 33: Especialista Web J9  Php

PHP Ejemplo

Formulario<html>

<head>    <title>Ejemplo de PHP</title> </head> <body>

<FORM ACTION="procesa2.phtml" METHOD="POST/GET"> Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<INPUT TYPE="text"

NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar">

</FORM> </body>

</html>

Recuperar datos<html>

<head>    <title>Ejemplo de PHP</title> </head> <body>

El nombre por GET: <?php echo $_GET['nombre']," ",$_GET['apellidos'] ?><br> El nombre por POST: <?php echo $_POST['nombre']," ",$_POST['apellidos'] ?> </body>

</html>

Page 34: Especialista Web J9  Php

PHP Sesiones

Las sesiones básicamente son variables globales que nos permiten almacenar datos que necesiten volver a ser usados en otros accesos a la pagina

Usadas entre otras cosas en la validación de usuarios

1º.- Se crea el formulario de validación (login.php) 2º.- Se comprueba la validez del usuario (autenticacion.php) 3º.- Se crea la sesión y se da acceso al usuario o se deniega el mismo

Page 35: Especialista Web J9  Php

PHP

Page 36: Especialista Web J9  Php

PHP Sesiones (autenticacion.php)

<?php

//vemos si el usuario y contraseña son válidosif ($_POST["usuario"]=="usuario" && $_POST["contrasena"]=="123"){

//usuario y contraseña válidos

session_start();$_SESSION["autenticado"]= "SI";

// mayor seguridad almacenando ssesion_id()$_SESSION[“id_misesion"]= session_id();

header ("Location: aplicacion.php");

}else {

//si no existe se va a login.phpheader("Location: login.php?errorusuario=si");

}

?>

Page 37: Especialista Web J9  Php

PHP Sesiones (seguridad.php)

<?php

//Inicio la sesiónsession_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTICADOif ($_SESSION["autenticado"] != "SI") {

//si no existe, va a la página de autenticacionheader("Location: login.php");

//salimos de este scriptexit();}

?>

Este código lo incluimos en todas las páginas que requieran validación

Page 38: Especialista Web J9  Php

PHP Conexión a BBDD

mysql_connect($hostname,$user,$password)

//cierre de conexión

mysql_close($conexion);

Ejemplo

<?php $servidor="localhost"; $login=“usuario": $password=“contraseña";

$db=“basededatos” $conexion=mysql_connect($servidor,$login,$password);

mysql_select_db($db, $conexion);

mysql_close($conexion);?>

Page 39: Especialista Web J9  Php

PHP Sentencia BBDD

$result = mysql_query($query);

Ejemplo

$query="SELECT * FROM tabla";

$result=mysql_query($query,$conexion);

$numrows=mysql_num_rows($result);

while ($datos=mysql_fetch_array($result)){echo $datos["Nombre"], " - ", $datos["Direccion"] ,"<BR>" ;}echo "Numero de registros $numrows<br>";