View
34
Download
0
Category
Preview:
Citation preview
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
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:juan@website.com
Á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 admin@website.comjuan juan89 juan@website.comana 4n4p4sw0rd ana@website.com
,y queremos realizar la siguiente consulta SQL:
Consulta
SELECT * FROM users WHERE username='admin'
,que devuelve la siguiente �la:
username password email
admin 1234 admin@website.com
Á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:admin@website.com
Á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 admin@website.comjuan juan89 juan@website.comana 4n4p4sw0rd ana@website.com
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 admin@website.comana 4n4p4sw0rd ana@website.comjuan juan89 juan@website.com
Á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:admin@website.comUsername:ana,Password:4n4p4sw0rd,Email:ana@website.comUsername:juan,Password:juan89,Email:juan@website.com
Á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 admin@website.com images/default.png 12 juan juan89 juan@website.com 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
Recommended