Desarrollo PHP con Webmatrix

Anuncio
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
2
3
Introducción a PHP
Integración con HTML
Declaración de variables
Arrays
Sentencias condicionales
Bucles
Variables GET y POST
Sesiones en PHP
Interacción con BBDD: MySQL
Otras variables superglobales
Funciones C Style
PHP Orientado a objetos
Construyendo un foro con PHP y Webmatrix
Estructura de la base de datos
Estructura de cheros
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
<h t m l>
2
<h e a d>
3
< t i t l e >H o l a
4
</ h e a d>
5
<b o d y>
6
<? p h p
7
/∗
8
$ a="<b>H o l a
Comment
Mundo</ t i t l e >
∗/
Mundo</b>" ;
Salida en el lado del cliente.
1
<h t m l>
2
<h e a d>
3
< t i t l e >H o l a
4
</ h e a d>
5
<b o d y>
6
<b>H o l a
7
</ b o d y>
8
</ h t m l>
Mundo</ t i t l e >
Mundo</ b>
9
10
echo
11
?>
12
</ b o d y>
13
</ h t m l>
$a ;
Á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 y
minúsculas.
1
<?p h p
/∗
2
Variables
∗/
3
$ c a d e n a=" H o l a , " ;
4
$ n u m e r o =3+5;
5
6
7
echo
$ c a d e n a . $numero ;
?>
Salida
Hola,8
Álvaro Gómez Giménez
(UAM.NET)
Desarrollo PHP con Webmatrix
25-11-2011
5 / 30
Array normal
Forma A:
1
Forma B:
<?p h p
1
2
/∗
3
$a =
Array
∗/
a r r a y ( " C e r o " , " Uno " , " Dos
" , " Tres " ) ;
4
<?p h p
2
/∗
3
$a [ 0 ] = " Cero " ;
4
$ a [ 1 ] = " Uno " ;
Array
∗/
5
$ a [ 2 ] = " Dos " ;
5
echo
$a [ 0 ] ;
6
$a [ 3 ] = " T r e s " ;
6
echo
$a [ 1 ] ;
7
echo
$a [ 2 ] ;
echo
$a [ 3 ] ;
7
8
9
?>
8
echo
$a [ 0 ] ;
9
echo
$a [ 1 ] ;
10
echo
$a [ 2 ] ;
echo
$a [ 3 ] ;
11
12
?>
Salida
CeroUnoDosTres
Álvaro Gómez Giménez
(UAM.NET)
Desarrollo PHP con Webmatrix
25-11-2011
6 / 30
Array asociativo
Forma A:
1
Forma B:
<?p h p
1
2
/∗
3
$a =
Array
∗/
a r r a y ( " n o m b r e "=>" J u a n " ,
<?p h p
2
/∗
Array
∗/
3
$ a [ " n o m b r e " ]= " J u a n " ;
4
" a p e l l i d o "=>" L ó p e z " ,
4
$ a [ " a p e l l i d o " ]= " L ó p e z " ;
5
" e m a i l "=>" j u a n @ w e b s i t e . com "
5
$ a [ " e m a i l " ]= " j u a n @ w e b s i t e . com " ;
6
) ;
6
7
7
8
echo
" Nombre : " ;
8
echo
9
echo
$a [ " nombre " ] ;
9
echo
$a [ " nombre " ] ;
10
echo
"<b r />" ;
10
echo
"<b r />" ;
11
echo
" Apellido : " ;
11
echo
" Apellido : " ;
12
echo
$a [ " a p e l l i d o " ] ;
12
echo
$a [ " a p e l l i d o " ] ;
13
echo
"<b r />" ;
13
echo
"<b r />" ;
echo
" Email : " ;
14
echo
" Email : " ;
echo
$a [ " e m a i l " ] ;
15
echo
$a [ " e m a i l " ] ;
14
15
16
?>
16
" Nombre : " ;
?>
Salida
Nombre:Juan
Apellido:López
Email:[email protected]
Álvaro Gómez Giménez
(UAM.NET)
Desarrollo PHP con Webmatrix
25-11-2011
7 / 30
Sentencias condicionales: if else
1
<?p h p
2
/∗
3
$ a =5;
4
$ b =4;
if
else
∗/
5
6
i f ( $a > $b ) {
7
echo
8
}
9
10
}
11
12
13
else
$ a . ">" . $ b ;
i f ( $ a == $b )
echo
$ a . "=" . $ b ;
else
{
echo
$ a . "<" . $b ;
{
}
?>
Salida
5>4
Álvaro Gómez Giménez
(UAM.NET)
Desarrollo PHP con Webmatrix
25-11-2011
8 / 30
Sentencias condicionales: switch
1
<?p h p
2
/∗
3
$ a =7;
∗/
switch
4
5
s w i t c h ( $a ) {
6
case
1:
7
echo
8
break ;
9
case
10
echo
11
break ;
12
valor
es
1" ;
" Su
valor
es
5" ;
valor
es
$a " ;
default :
13
echo
14
break ;
15
16
" Su
5:
" Su
}
?>
Salida
Su valor es 7
Álvaro Gómez Giménez
(UAM.NET)
Desarrollo PHP con Webmatrix
25-11-2011
9 / 30
Bucles: for
1
<?p h p
2
/∗
3
$a [ 0 ] = " Cero " ;
4
$ a [ 1 ] = " Uno " ;
5
$ a [ 2 ] = " Dos " ;
for
∗/
6
7
f o r ( $ i =0; $ i < s i z e o f ( $ a ) ; $ i ++){
8
9
10
11
echo
$a [ $ i ] ;
echo
"<b r />" ;
}
?>
Salida
Cero
Uno
Dos
Álvaro Gómez Giménez
(UAM.NET)
Desarrollo PHP con Webmatrix
25-11-2011
10 / 30
Bucles: foreach
1
<?p h p
2
/∗
3
$a [ 0 ] = " Cero " ;
4
$ a [ 1 ] = " Uno " ;
5
$ a [ 2 ] = " Dos " ;
foreach
∗/
6
7
f o r e a c h ( $a
8
9
10
11
as
$out ) {
echo
$out ;
echo
"<b r />" ;
}
?>
Salida
Cero
Uno
Dos
Álvaro Gómez Giménez
(UAM.NET)
Desarrollo PHP con Webmatrix
25-11-2011
11 / 30
Bucles: while
1
<?p h p
2
/∗
3
$c =
while
∗/
0;
4
5
while
6
7
10) {
$c . " , " ;
$ c ++;
8
9
( $c <
echo
}
?>
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
<?p h p
2
i f ( i s s e t ( $_GET [ " p a g e " ] ) ) {
3
echo
4
}else
5
echo
6
7
" P a g e : " . $_GET [ " p a g e " ] ;
{
"No
se
ha
definido";
}
?>
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
<f o r m
3
<p>
4
a c t i o n =" i n d e x . p h p "
< l a b e l >U s e r :</ l a b e l >
5
<i n p u t
6
</ p>
7
<p>
8
<i n p u t
10
</ p>
11
<p
12
14
15
t y p e=" t e x t "
name=" u s e r "
/>
< l a b e l >P a s s w o r d :</ l a b e l >
9
13
m e t h o d=" p o s t ">
t y p e=" p a s s w o r d "
name=" p a s s w o r d "
/>
a l i g n =" c e n t e r ">
<i n p u t
t y p e=" s u b m i t "
v a l u e=" S e n d "
name=" s u b m i t t e r " />
</ p>
</ f o r m>
...
Código PHP para capturar el POST:
1
<?p h p
2
i f ( i s s e t ($_POST [ " s u b m i t t e r " ] ) ) {
3
$ u s e r=$_POST [ " u s e r " ] ;
4
$ p a s s w o r d=$_POST [ " p a s s w o r d " ] ;
5
6
7
8
Álvaro Gómez Giménez
echo
" User : $user " ;
echo
" Password : $password " ;
}
?>
(UAM.NET)
Desarrollo PHP con Webmatrix
25-11-2011
14 / 30
Sesiones en PHP
La página 1 inicia la sesión y establece
una variable.
1
<?p h p
La página 2 restaura dicha sesión y
obtiene el valor de la variable.
1
2
/∗
3
session_start ();
Pagina
1
∗/
4
/∗
3
session_start ();
Pagina
2
∗/
4
5
$_SESSION [ " u s e r " ]= " J u a n " ;
5
6
echo
"<a
6
echo
" Página
7
8
<?p h p
2
h r e f =\" p a g i n a 2 . p h p \">" ;
2</a>" ;
?>
i f ( i s s e t ( $_SESSION [ " u s e r " ] ) ) {
7
"<b r />" ;
9
echo
"<a
echo
" Página
11
(UAM.NET)
$_SESSION [ " u s e r " ] ;
echo
}
10
Álvaro Gómez Giménez
echo
8
h r e f =\" p a g i n a 1 . p h p \">" ;
1</a>" ;
?>
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
admin
juan
ana
password
1234
juan89
4n4p4sw0rd
email
[email protected]
[email protected]
[email protected]
,y queremos realizar la siguiente consulta SQL:
Consulta
SELECT * FROM users WHERE username='admin'
,que devuelve la siguiente la:
username
admin
Álvaro Gómez Giménez
(UAM.NET)
password
1234
email
[email protected]
Desarrollo PHP con Webmatrix
25-11-2011
16 / 30
Interacción con BBDD: MySQL (II)
Código PHP para obtener los datos:
1
<?p h p
2
/∗
3
$link
4
m y s q l _ s e l e c t _ d b ( " database_name " ,
Conexión
con
MySQL
∗/
= mysql_connect ( " l o c a l h o s t " ,
" r o o t " , " 1234567890 " ) ;
$link ) ;
5
6
/∗
7
$ u s e r n a m e=" a d m i n " ;
8
$result
Consulta
∗/
= m y s q l _ q u e r y ( "SELECT
$username '
∗
FROM
users
WHERE u s e r n a m e = '
") ;
9
10
/∗
11
$array
Obtención
=
de
los
datos
∗/
mysql_fetch_array ( $ r e s u l t ) ;
12
13
echo
" U s e r n a m e : " . $ a r r a y [ " u s e r n a m e " ] . "<b r />" ;
14
echo
" P a s s w o r d : " . $ a r r a y [ " p a s s w o r d " ] . "<b r />" ;
echo
" Email : " .
15
16
$ a r r a y [ " e m a i l " ] . "<b r />" ;
?>
Salida
Username:admin
Password:1234
Email:[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
admin
juan
ana
password
1234
juan89
4n4p4sw0rd
email
[email protected]
[email protected]
[email protected]
Queremos obtener todos los usuarios ordenados por
username:
Consulta
SELECT * FROM users ORDER BY username
,que devuelve la siguiente tabla:
username
admin
ana
juan
Álvaro Gómez Giménez
(UAM.NET)
password
1234
4n4p4sw0rd
juan89
email
[email protected]
[email protected]
[email protected]
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 de
la consulta hasta que no hay más las y devuelve FALSE.
1
<?p h p
2
/∗
3
$link
4
mysql_select_db ( " catsandco " ,
Conexión
con
MySQL
∗/
= mysql_connect ( " l o c a l h o s t " ,
" r o o t " , " 1234567890 " ) ;
$link ) ;
5
6
/∗
7
$result
Consulta
∗/
= m y s q l _ q u e r y ( "SELECT
∗
FROM
users
ORDER BY
username
") ;
8
/∗
9
10
12
13
14
15
Obtención
w h i l e ( $row =
11
de
los
datos
∗/
mysql_fetch_array ( $ r e s u l t ) ) {
echo
" Username : " . $row [ " u se r na me " ] . " , " ;
echo
" P as sw ord : " . $row [ " p a s s w o r d " ] . " , " ;
echo
" Email : " .
$ r o w [ " e m a i l " ] . "<b r />" ;
}
?>
Salida
Username:admin,Password:1234,Email:[email protected]
Username:ana,Password:4n4p4sw0rd,Email:[email protected]
Username: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
<f o r m
3
<p>
a c t i o n =" u p l o a d . p h p "
m e t h o d=" p o s t "
e n c t y p e=" m u l t i p a r t / f o r m −
d a t a ">
4
< l a b e l > A r c h i v o :</ l a b e l >
5
<i n p u t
6
</ p>
7
<p>
8
9
10
11
<i n p u t
t y p e=" f i l e "
name=" f i l e " />
t y p e=" s u b m i t "
name=" s u b m i t t e r "
v a l u e=" S u b i r "
/>
</ p>
</ f o r m>
...
Á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
<?p h p
2
i f ( i s s e t ($_POST [ " s u b m i t t e r " ] ) ) {
3
/∗
Comprobación
4
if
( $_FILES [ " f i l e " ] [ " e r r o r " ]
5
de
d i e ( "<b>E r r o r
6
}else
errores
al
subir
∗/
el
>
0){
a r c h i v o </b>" ) ;
{
7
/∗
Comprobamos
8
if
( f i l e _ e x i s t s ( $_FILES [ " f i l e " ] [ " name " ] ) )
9
si
el
fichero
existe
d i e ( $_FILES [ " f i l e " ] [ " name " ] . "
10
}
11
/∗
12
else
Si
no
existe ,
lo
copiamos
al
ya
∗/
{
existe .
directorio
");
actual
∗/
{
13
m o v e _ u p l o a d e d _ f i l e ( $_FILES [ " f i l e " ] [ " tmp_name " ] ,
14
$_FILES [ " f i l e " ] [ " name " ] ) ;
15
echo
" Archivo :
16
echo
" Tipo :
"
.
$_FILES [ " f i l e " ] [ " t y p e " ] ;
17
echo
" Tamaño :
"
.
echo
" Archivo
temporal :
18
19
.
$_FILES [ " f i l e " ] [ " name " ] ;
( $_FILES [ " f i l e " ] [ " s i z e " ]
"
.
/
1024). "
Kb" ;
$_FILES [ " f i l e " ] [ " tmp_name " ] ;
}
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 útil
sobre el servidor y el entorno.
1
<?p h p
2
echo
" F i c h e r o : " . $_SERVER [ "PHP_SELF" ] . "<b r />" ;
3
echo
" S e r v i d o r : " . $_SERVER [ "SERVER_NAME" ] . "<b r />" ;
4
echo
" S o f t w a r e : " . $_SERVER [ "SERVER_SOFTWARE" ] . "<b r />" ;
5
echo
" U s e r −A g e n t : " . $_SERVER [ "HTTP_USER_AGENT" ] . "<b r />" ;
6
?>
Salida
Fichero:/pagina1.php
Servidor:localhost
Software:Microsoft-IIS/7.5
User-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 que
en C. Veamos un ejemplo de apertura y volcado de un chero:
1
<?p h p
2
i f ( ! $ f i l e =f o p e n ( " h t t p : / / www . g o o g l e . e s / i n d e x . h t m l " ,
3
echo
4
" Error
al
abrir
el
exit ;
5
}
6
while (! feof ( $ f i l e ) ){
7
$ l i n e a=f g e t s ( $ f i l e , 4 0 9 6 ) ;
8
echo
9
$linea ;
}
10
11
"r") ){
archivo " ;
fclose
( $file ) ;
?>
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
<?p h p
2
class
3
{
MiClase
4
// D e c l a r a c i ó n de l a p r o p i e d a d
5
public
6
$var
= "<b>H o l a
Mundo</b>" ;
// C o n s t r u c t o r
7
8
public
9
function
echo
10
__construct ( )
" Constructor
de
la
{
c l a s e <b r />" ;
}
// D e c l a r a c i ó n d e l método
11
12
public
13
function
echo
14
$this
displayVar ()
−>v a r
{
;
}
15
}
16
17
$ a = new
18
$a−>d i s p l a y V a r ( ) ;
19
MiClase () ;
?>
Salida
Constructor de la clase
Hola 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
id
1
2
users tendrá datos del tipo:
username
admin
juan
La tabla
password
1234
juan89
email
[email protected]
[email protected]
image
images/default.png
images/default.png
comments tendrá datos del tipo:
id user_id
fecha
1
2
Álvaro Gómez Giménez
1
1
(UAM.NET)
2010-10-11 11:56:13
2010-10-11 11:29:23
Desarrollo PHP con Webmatrix
isadmin
1
0
texto
Comentario 1
Comentario 2
25-11-2011
26 / 30
Estructura de cheros I
La estructura general de cheros que utilizaremos para gestionar los usuarios y los
comentarios 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 siguiente
formato:
Código fuente:
1
<? p h p
2
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=" w r a p p e r ">
< !−−
6
7
</ d i v>
8
<? p h p
9
10
C o n t e n i d o −−>
get_footer () ;
?>
Á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
Web
[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
Descargar