Php y Webmatrix

30

Transcript of Php y Webmatrix

Desarrollo PHP con Webmatrix

Álvaro Gómez Giménez

UAM.NET

25-11-2011

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 1 / 30

Contenidos

1 Introducción a PHPIntegración con HTMLDeclaración de variablesArraysSentencias condicionalesBuclesVariables GET y POSTSesiones en PHPInteracción con BBDD: MySQLOtras variables superglobalesFunciones C StylePHP Orientado a objetos

2 Construyendo un foro con PHP y WebmatrixEstructura de la base de datosEstructura de �cheros

3 Conclusión

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 2 / 30

Introducción a PHP

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 3 / 30

Integración con HTML

Código fuente en el servidor.

1 <html>2 <head>3 < t i t l e>Hola Mundo</ t i t l e>4 </head>5 <body>6 <?php7 /∗ Comment ∗/8 $a="<b>Hola Mundo</b>" ;910 echo $a ;11 ?>12 </body>13 </html>

Salida en el lado del cliente.

1 <html>2 <head>3 < t i t l e>Hola Mundo</ t i t l e>4 </head>5 <body>6 <b>Hola Mundo</b>7 </body>8 </html>

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 4 / 30

Declaración de variables

Las variables deben ir precedidas por el símbolo $. PHP distingue entre mayúsculas yminúsculas.

1 <?php2 /∗ Va r i a b l e s ∗/3 $cadena="Hola , " ;4 $numero=3+5;56 echo $cadena . $numero ;7 ?>

Salida

Hola,8

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 5 / 30

Array normal

Forma A:

1 <?php2 /∗ Array ∗/3 $a = a r r a y ( "Cero " , "Uno" , "Dos

" , "Tres " ) ;45 echo $a [ 0 ] ;6 echo $a [ 1 ] ;7 echo $a [ 2 ] ;8 echo $a [ 3 ] ;9 ?>

Forma B:

1 <?php2 /∗ Array ∗/3 $a [0]="Cero " ;4 $a [1]="Uno" ;5 $a [2]="Dos" ;6 $a [3]="Tres " ;78 echo $a [ 0 ] ;9 echo $a [ 1 ] ;10 echo $a [ 2 ] ;11 echo $a [ 3 ] ;12 ?>

Salida

CeroUnoDosTres

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 6 / 30

Array asociativo

Forma A:

1 <?php2 /∗ Array ∗/3 $a = a r r a y ( "nombre"=>"Juan" ,4 " a p e l l i d o "=>"López" ,5 " ema i l "=>" juan@webs i t e . com"6 ) ;78 echo "Nombre : " ;9 echo $a [ "nombre" ] ;10 echo "<br/>" ;11 echo " Ap e l l i d o : " ;12 echo $a [ " a p e l l i d o " ] ;13 echo "<br/>" ;14 echo "Emai l : " ;15 echo $a [ " ema i l " ] ;16 ?>

Forma B:

1 <?php2 /∗ Array ∗/3 $a [ "nombre"]="Juan" ;4 $a [ " a p e l l i d o "]="López" ;5 $a [ " ema i l "]=" juan@webs i t e . com" ;678 echo "Nombre : " ;9 echo $a [ "nombre" ] ;10 echo "<br/>" ;11 echo " Ap e l l i d o : " ;12 echo $a [ " a p e l l i d o " ] ;13 echo "<br/>" ;14 echo "Emai l : " ;15 echo $a [ " ema i l " ] ;16 ?>

Salida

Nombre:JuanApellido:LópezEmail:[email protected]

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 7 / 30

Sentencias condicionales: if else

1 <?php2 /∗ i f e l s e ∗/3 $a=5;4 $b=4;56 i f ( $a > $b ) {7 echo $a . ">" . $b ;8 } e l s e i f ( $a == $b ) {9 echo $a . "=" . $b ;10 } e l s e {11 echo $a . "<" . $b ;12 }13 ?>

Salida

5>4

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 8 / 30

Sentencias condicionales: switch

1 <?php2 /∗ sw i t c h ∗/3 $a=7;45 sw i t c h ( $a ) {6 ca se 1 :7 echo "Su v a l o r e s 1" ;8 break ;9 ca se 5 :10 echo "Su v a l o r e s 5" ;11 break ;12 d e f a u l t :13 echo "Su v a l o r e s $a" ;14 break ;15 }16 ?>

Salida

Su valor es 7

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 9 / 30

Bucles: for

1 <?php2 /∗ f o r ∗/3 $a [0]="Cero " ;4 $a [1]="Uno" ;5 $a [2]="Dos" ;67 f o r ( $ i =0; $ i<s i z e o f ( $a ) ; $ i++){8 echo $a [ $ i ] ;9 echo "<br/>" ;10 }11 ?>

Salida

CeroUnoDos

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 10 / 30

Bucles: foreach

1 <?php2 /∗ f o r e a c h ∗/3 $a [0]="Cero " ;4 $a [1]="Uno" ;5 $a [2]="Dos" ;67 f o r e a c h ( $a as $out ) {8 echo $out ;9 echo "<br/>" ;10 }11 ?>

Salida

CeroUnoDos

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 11 / 30

Bucles: while

1 <?php2 /∗ wh i l e ∗/3 $c = 0 ;45 wh i l e ( $c < 10) {6 echo $c . " , " ;7 $c++;8 }9 ?>

Salida

0,1,2,3,4,5,6,7,8,9,

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 12 / 30

Variables GET y POST (I)

Consulta del cliente

http://www.example.com/index.php?page=5

Código para obtener las variables en la URL.

1 <?php2 i f ( i s s e t ($_GET[ "page" ] ) ) {3 echo "Page : " .$_GET[ "page" ] ;4 } e l s e {5 echo "No se ha d e f i n i d o " ;6 }7 ?>

Salida

Page:5

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 13 / 30

Variables GET y POST (II)

Código HTML para realizar el POST:

1 . . .2 <form a c t i o n=" i ndex . php" method=" pos t ">3 <p>4 <l a b e l>User :</ l a b e l>5 <inpu t type=" t e x t " name=" u s e r " />6 </p>7 <p>8 <l a b e l>Password :</ l a b e l>9 <inpu t type="password " name="password " />10 </p>11 <p a l i g n=" c e n t e r ">12 <inpu t type=" submit " v a l u e="Send" name=" subm i t t e r "/>13 </p>14 </ form>15 . . .

Código PHP para capturar el POST:

1 <?php2 i f ( i s s e t ($_POST[ " s ubm i t t e r " ] ) ) {3 $u s e r=$_POST[ " u s e r " ] ;4 $password=$_POST[ " password " ] ;5 echo "User : $u s e r " ;6 echo "Password : $password " ;7 }8 ?>

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 14 / 30

Sesiones en PHP

La página 1 inicia la sesión y estableceuna variable.

1 <?php2 /∗ Pagina 1 ∗/3 s e s s i o n_ s t a r t ( ) ;45 $_SESSION [ " u s e r "]="Juan" ;6 echo "<a h r e f=\"pag ina2 . php\">" ;7 echo "Página 2</a>" ;8 ?>

La página 2 restaura dicha sesión yobtiene el valor de la variable.

1 <?php2 /∗ Pagina 2 ∗/3 s e s s i o n_ s t a r t ( ) ;45 i f ( i s s e t ($_SESSION [ " u s e r " ] ) ) {6 echo $_SESSION [ " u s e r " ] ;7 echo "<br/>" ;8 }9 echo "<a h r e f=\"pag ina1 . php\">" ;10 echo "Página 1</a>" ;11 ?>

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 15 / 30

Interacción con BBDD: MySQL (I)

Tenemos la tabla users en la base de datos con los siguientes datos:

username password email

admin 1234 [email protected] juan89 [email protected] 4n4p4sw0rd [email protected]

,y queremos realizar la siguiente consulta SQL:

Consulta

SELECT * FROM users WHERE username='admin'

,que devuelve la siguiente �la:

username password email

admin 1234 [email protected]

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 16 / 30

Interacción con BBDD: MySQL (II)

Código PHP para obtener los datos:

1 <?php2 /∗ Conex ión con MySQL ∗/3 $ l i n k = mysql_connect ( " l o c a l h o s t " , " r oo t " , " 1234567890" ) ;4 mysql_se lect_db ( "database_name" , $ l i n k ) ;56 /∗ Consu l t a ∗/7 $username="admin" ;8 $ r e s u l t = mysql_query ( "SELECT ∗ FROM u s e r s WHERE username='

$username ' " ) ;910 /∗ Obtenc ión de l o s da to s ∗/11 $a r r a y = mysq l_fetch_array ( $ r e s u l t ) ;1213 echo "Username : " . $ a r r a y [ " username" ] . "<br/>" ;14 echo "Password : " . $ a r r a y [ " password " ] . "<br/>" ;15 echo "Emai l : " . $ a r r a y [ " ema i l " ] . "<br/>" ;16 ?>

Salida

Username:adminPassword:1234Email:[email protected]

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 17 / 30

Interacción con BBDD: MySQL (III)

Sobre la misma tabla users en la base de datos:

username password email

admin 1234 [email protected] juan89 [email protected] 4n4p4sw0rd [email protected]

Queremos obtener todos los usuarios ordenados por username:

Consulta

SELECT * FROM users ORDER BY username

,que devuelve la siguiente tabla:

username password email

admin 1234 [email protected] 4n4p4sw0rd [email protected] juan89 [email protected]

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 18 / 30

Interacción con BBDD: MySQL (IV)

Cada llamada a mysql_fetch_array devuelve un array asociativo con la siguiente �la dela consulta hasta que no hay más �las y devuelve FALSE.

1 <?php2 /∗ Conex ión con MySQL ∗/3 $ l i n k = mysql_connect ( " l o c a l h o s t " , " r oo t " , " 1234567890" ) ;4 mysql_se lect_db ( " ca t sandco " , $ l i n k ) ;56 /∗ Consu l t a ∗/7 $ r e s u l t = mysql_query ( "SELECT ∗ FROM u s e r s ORDER BY username " ) ;89 /∗ Obtenc ión de l o s da to s ∗/10 wh i l e ( $row = mysq l_fetch_array ( $ r e s u l t ) ) {11 echo "Username : " . $row [ " username" ] . " , " ;12 echo "Password : " . $row [ " password " ] . " , " ;13 echo "Emai l : " . $row [ " ema i l " ] . "<br/>" ;14 }15 ?>

Salida

Username:admin,Password:1234,Email:[email protected]:ana,Password:4n4p4sw0rd,Email:[email protected]:juan,Password:juan89,Email:[email protected]

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 19 / 30

Otras variables superglobales: $_FILES

Utilizamos el siguiente formulario para subir un archivo:

1 . . .2 <form a c t i o n=" up load . php" method=" pos t " enc type=" mu l t i p a r t / form−

data ">3 <p>4 <l a b e l>Arch i vo :</ l a b e l>5 <inpu t type=" f i l e " name=" f i l e "/>6 </p>7 <p>8 <inpu t type=" submit " name=" subm i t t e r " v a l u e=" Sub i r " />9 </p>10 </ form>11 . . .

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 20 / 30

Otras variables superglobales: $_FILES

Código PHP para obtener el archivo:

1 <?php2 i f ( i s s e t ($_POST[ " s ubm i t t e r " ] ) ) {3 /∗ Comprobación de e r r o r e s ∗/4 i f ( $_FILES [ " f i l e " ] [ " e r r o r " ] > 0){5 d i e ( "<b>Er r o r a l s u b i r e l a r ch i vo </b>" ) ;6 } e l s e {7 /∗ Comprobamos s i e l f i c h e r o e x i s t e ∗/8 i f ( f i l e _ e x i s t s ( $_FILES [ " f i l e " ] [ "name" ] ) ) {9 d i e ( $_FILES [ " f i l e " ] [ "name" ] . " ya e x i s t e . " ) ;10 }11 /∗ S i no e x i s t e , l o copiamos a l d i r e c t o r i o a c t u a l ∗/12 e l s e {13 move_uploaded_f i le ( $_FILES [ " f i l e " ] [ "tmp_name" ] ,14 $_FILES [ " f i l e " ] [ "name" ] ) ;15 echo " Arch i vo : " . $_FILES [ " f i l e " ] [ "name" ] ;16 echo "Tipo : " . $_FILES [ " f i l e " ] [ " type " ] ;17 echo "Tamaño : " . ( $_FILES [ " f i l e " ] [ " s i z e " ] / 1024 ) . " Kb" ;18 echo " Arch i vo tempora l : " . $_FILES [ " f i l e " ] [ "tmp_name" ] ;19 }20 }21 }22 ?>

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 21 / 30

Otras variables superglobales: $_SERVER

Se puede utilizar la variable superglobal $_SERVER para acceder a información útilsobre el servidor y el entorno.

1 <?php2 echo " F i c h e r o : " . $_SERVER[ "PHP_SELF" ] . "<br/>" ;3 echo " S e r v i d o r : " . $_SERVER[ "SERVER_NAME" ] . "<br/>" ;4 echo " So f tware : " . $_SERVER[ "SERVER_SOFTWARE" ] . "<br/>" ;5 echo "User−Agent : " . $_SERVER[ "HTTP_USER_AGENT" ] . "<br/>" ;6 ?>

Salida

Fichero:/pagina1.phpServidor:localhostSoftware:Microsoft-IIS/7.5User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Firefox/5.0

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 22 / 30

Funcione C Style: Manejo de �cheros

Se pueden utilizar las funciones clásicas de manejo de �cheros con la misma sintáxis queen C. Veamos un ejemplo de apertura y volcado de un �chero:

1 <?php2 i f ( ! $ f i l e=fopen ( " h t tp : //www. goog l e . e s / i nde x . html " , " r " ) ) {3 echo " E r r o r a l a b r i r e l a r c h i v o " ;4 e x i t ;5 }6 wh i l e ( ! f e o f ( $ f i l e ) ) {7 $ l i n e a=f g e t s ( $ f i l e , 4096 ) ;8 echo $ l i n e a ;9 }10 f c l o s e ( $ f i l e ) ;11 ?>

Además están disponibles funciones como:

fread()

fgetc()

fwrite()

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 23 / 30

PHP Orientado a objetos

1 <?php2 c l a s s MiClase3 {4 // Dec l a r a c i ó n de l a p rop i edad5 p u b l i c $va r = "<b>Hola Mundo</b>" ;67 // Con s t r u c t o r8 p u b l i c f u n c t i o n __construct ( ) {9 echo " Con s t r u c t o r de l a c l a s e <br/>" ;10 }11 // Dec l a r a c i ó n d e l método12 p u b l i c f u n c t i o n d i s p l a yVa r ( ) {13 echo $ t h i s−>var ;14 }15 }1617 $a = new MiClase ( ) ;18 $a−>d i s p l a yVa r ( ) ;19 ?>

Salida

Constructor de la claseHola Mundo

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 24 / 30

Construyendo un foro con PHP y Webmatrix

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 25 / 30

Estructura de la base de datos

Utilizaremos dos tablas con la siguiente estructura:

La tabla users tendrá datos del tipo:

id username password email image isadmin

1 admin 1234 [email protected] images/default.png 12 juan juan89 [email protected] images/default.png 0

La tabla comments tendrá datos del tipo:

id user_id fecha texto

1 1 2010-10-11 11:56:13 Comentario 12 1 2010-10-11 11:29:23 Comentario 2

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 26 / 30

Estructura de �cheros I

La estructura general de �cheros que utilizaremos para gestionar los usuarios y loscomentarios en el tablón es la siguiente:

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 27 / 30

Estructura de �cheros II

Para conservar la estructura de la página utilizaremos en todos ellos el siguienteformato:

Código fuente:

1 <?php2 i n c l u d e ( " f u n c t i o n s . php" ) ;3 get_header ( ) ;4 ?>5 <d i v i d="wrapper ">6 <!−− Conten ido −−>7 </ d i v>8 <?php9 ge t_foo t e r ( ) ;10 ?>

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 28 / 30

Conclusión

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 29 / 30

Contacto

Email [email protected] http://www.j0k3n.com

Recursos

http://www.j0k3n.com/websrc/

Álvaro Gómez Giménez (UAM.NET) Desarrollo PHP con Webmatrix 25-11-2011 30 / 30