Professional Documents
Culture Documents
pe
;
,----------------------------------------------------------------------------'
t Rector Fundador Escuela profesional: ~
1
Dr. Csar Acua Peralta Sistemas
1
1
Gerente General Curso : 1
!
1
Dr. Humberto Acua Peralta INGENIERA WEB f
1
3
1
Rector : Profesor: 1
DATOS DE IDENTIFICACION
PROG RAMA
EDU CACIN
PEa A DISTAN CIA
Ingeniera Web Gua didctica IJJU
ndice
Programacin de Contenidos ............. ....... .. ...... .. ........ ... .. ............ .. ...... .. ............ ........................... 6
Bibliografa. .... .............. ...... .. ......... ..... .. .... .......... .... .......... .... ...... .. ...... .. .......... .. ... .. .. .. ... .... .. . 7
Orientaciones generales para el estudio ............ ....... .. .... .. ... ... .. ........ .. .. .... ..... .... ..... .... ... ..... ... .... ..... 8
Tema 01 : World Wide Web ....................... .. ..... .. .. ... .. ...... .. .... ... .. .... .. ..... .. ......... .... ........ .......... .. .... 10
Introduccin al tema .. ..... ....... ...... ............. ...... .. ....... ....... .... .. ... .... .. ... ..... .... .... ..... .. ... .. .. ... .. .... .. .... 10
1.1 Definicin de World Wide Web ...... .. .. .. .. ....... .. .. ... ...... ... ..... .... .. ... .... ................ .. .......... .. .... 11
1.2 Historia de la Web ...... .... .. .. ...... ....... .. .... ... .... .. ...... ...... .... .. ..... .. ..... .... ........ ...... .... ....... .. .. ... 11
1.3 Funcionamiento de la Web .. .............................. .... .. ...... ........ .. .. .......... ... .. .. .... .. .... .. .. ........ 11
Tema 02 : HTML- HyperText Markup Language ............. .. ..... .. ..... .. .......... ................................ 15
Introduccin al tema .. .............. ........... ....... ...... ... ...... .... ... .. ......... .... ........ ... .. .. .... .. .............. ......... 15
2.1 HTML .. .... ...................................... ..... .. .... ....... ....... ....... ........ ............. .. ..... .... .... .. ...... .. .. .... 16
3.1 Formato de Texto con 1-lTML ...................... .. .... .. .... ... ..... .. .... ... .. ...... .... .................... .. ....... 17
3.2 Listas .. ........ ..... ..................... ..... ....... .. .. .... .... ...... ........ .... ... ........ .. .. ............................ ........ 17
3.3 Comentarios no visibles en la pantalla ....... .. ................ .... .... .... .. .. .. ....... .. ...... .. ... .. .... .. ...... 19
Tema 03: Java Script ...................................................... .............. .. ..... .... ......... .. .... .. .... .... .... .. ..... 22
Introduccin al tema ... .... .. .............. .. ...... ... ..... .. .......... ... ... ............... .... .. ................. .. ...... ...... .. ... . 22
3.1 Java Script ... ...... ... ...... ....... .... ... ... .... .. .... .. .... .. ........ ... ... .. .. ... ..... .... .. .. ... ........ .. ..... .... .. .. .... ... 23
3.2 Elementos bsicos ...... ..... .... .... ... ...... .. ... ... ... .. .. ... .. .. ..... ... ... .... ....... ........ ... .. ..... .... ... .... .. ..... 24
3.2.1 Comentarios ... ... .......... .. .... .. ........... ...... ... ...... ..... .. .... .. .. .... ..... ...... .. .. .. ... ........ ...... ... ... .... 24
3.2.2 Tipos de datos ........ .......... .... .......... .. ... .. .... .... ... .. .. ... .. ... ...... ... .. .... ... .. .... .. ... .. .. .... .... ....... 25
3.2.3 Variables ................... .. .... .... .. ....... .............. ............ ... ...... .. ........ .......... .. .. ... .... ...... .... ..... 25
3.2.4 Vectores y matrices .... .... .... .. ......... .... .. ....... .. ..................... .. ...... .. ........... ....... ... ........ ... . 26
3.2.5 Operadores ............... ...... .. ....... ... .... ..... .. ............. ... .......... .. ... .. .. ...... .. .... ... .. ... ............... . 26
Tema 04: CSS- Cascade Style Sheets .... .... .... .. .... ... .... .... .... .......... ... .. ..... .......... .... .. .......... .. ..... 29
Introduccin al tema .... .. .. ...... ..... ....... .. ............. .... ... .... .... .. ... ........... ... ...... .... ...... ........... ... ....... .. . 29
Dentro del diseo de pginas web, se presenta esta como la vanguardia en cuanto a definicin
de estilos dentro de las plantillas de diseo. A travs de instrucciones en cdigo HTML se
definen los estndares del conjunto de pginas que conforman el proyecto ............................ 29
4.1 CSS .. ..... ... ........... ...... ..... ........... ... .......... ........ .. .... .. .. ..... ... ... ...... .......... ... .... .... .. ... .............. 30
Tema 05: Introduccin a PHP ...... .... .. .... ......... ... ... ... .. .. ... .. ...... ......... ... .......... ..... .. ....... ... ............. 35
Introduccin al tema ...... .... .... ...... .... ....... .. .... .......... ....... ....... ... .. .. ... .. .. .... ....... .. ....... .. .. .... .. ... .. .... . 35
5.1 PHP ..... ..... ...... ...... ....... .......... .... .. ....... ......... ... ...... ..... ..... ...... , ...... .... .. .. .. .... .. ........ ...... ....... . 36
5.2 Qu se puede hacer con PHP? .... .. ... ...... .......... ...... .. .... ... .. .. .. ...... .. ............. .. ..... .. .. .. ...... 36
5.3 Sintaxis bsica ... ..... .. ... ....... ... .................. .... .... ... .... .... .. ... .. : .. .. .. ... ..... .. .. ... ... .... .. .... .. ... ... .... 38
5.4 Expresiones .................. .... ........... .. .......... ...... .. ... .. .. ... .. .... ... .... ... ... .. ... .... .. .. ......... ..... ......... 39
Tema 06 : Funciones de usuario y cadenas ...... .. .. .. .. ......... .. ...... ............................ .. .... .... .......... 44
Introduccin al tema ................. .... .. .. ... ....... ......... .. .. .. .. ... .... ... ... .... .... ........ ... .. .. ..... .. .. .. ...... ... .. ..... 44
6.1 Funciones definidas por el usuario ............................... ... .. .... .............. .... ..... .. .. .. .... ........ .. 45
6.2 Cadenas ...... ............... ... .. ..... ..... ....... ....... ...... .. .... .. ... .... .... .... ... ... .......... .. ................... .. ..... 47
Tema 07: Formularios HTML con PHP .......... .. ...... .. ..... .. .. ... .. ........ .. .. .. .. .............. .. ... .... .. .. .. .. ...... 56
Introduccin al tema .... ............................ ..... .. .... .. ....... .. ... ... .. ..... .. ................... .. ......... ...... .......... 56
7.1 Formularios HTML .... ... .......... ........................... ... .... .. ... ..... ..... ... .. ............ .......... ..... ... .. ... .. 57
7.2 Envo de datos de un formulario a PHP .... .. .............. .... ..... ... .... ... .. ...... ... ......... .......... .. .. .. 61
Tema 08: Programacin Orientada a Objetos con PHP .......... ... ... ...... .......... .. .. .. .............. .. .... . 65
Introduccin al tema .. ... .......... ............ ..... .. ....... .... .... .. ... ........ ..... ....... ............. ... ... ........... ........... 65
8.1 Clases y Objetos ... ......... .. ... ...... ... ....... .. .... ....... .... .. .... ................. ...... ..... .. ... .... .... .. ............ 66
Tema 09: Acceso a Bases de Datos con PHP ...... .... .... ... .... .... ..... ...... ... .. ...... .. .. ........... ...... ... .... 70
Introduccin al tema ............................................ .. .... .... ...... .. ... .... .. ... ....... ........ .. ... ..... .. .... ... .. ..... 70
9.1 Acceso a Base de Datos con PDO ......... .. .. .. .. .......... .. .. ........ .. ....... .. ............. .. .. ........ ........ 71
Tema 10: Seguridad en la red .... ...... .. ............. .. .. ..... .. ...... ... .......... .... .. ... .... ... .. ... ........... ..... .. .. ... 76
Introduccin al tema .. .. .. .. ............ .. .. ... ... ..... .. ......... ... .. ...... .. ...... ...... .. ..... .. ..... .... ...... .. ..... ... .. .... .. .. 76
10.1 Seguridad ...... ................... ... ..... .... ... .... .... ... .. .. ..... .. .... ....... ...... .. .... .. ...... .. .... ... .. .. ... .. .... .. 77
10.2 Uso de Register Global .......... ... .. .. ..... .. .... ...... .. .... .. ..... .. .. .. .. .. .. ... ... ...... .. ...... .... ........... 78
2
Ingeniera Web Gua didctica tlm
Tema 11: AJAX con PHP ............ ........ ..... .. ........ .. ..... ... ... .... ..... .... .... ..... .. .... . ..... .. .... .... .. .. ...... ..... 79
Introduccin al tema ................ ... ....... ....... .... ... ....... .... ............... .. ..... ... ... ........... .. ..... ............. ...... 79
11 .1 AJAX ............. ..... ..... ..... ........ ..... ...... ........... .... ............... .... ........ .. ........ ...... ....... ..... .... .... 80
3
Ingeniera Web Gua didctica U!.)
Introduccin
Si el conocimiento te plantea problemas, la ignorancia
no te aportar las soluciones.
Isaac Asimov
i
Estimado estudiante del PEaD - Programa de
Educacin a Distancia - bienvenido al curso de
Ingeniera Web, es un placer compartir contigo esta
nueva experiencia curricular, que serv1ra para
enriquecer tu formacin profesional y contacto con el desarrollo de aplicaciones Web.
Ingeniera Web, es una asignatura de formacin profesional del VIII ciclo en la currcula
de la escuela de Ingeniera de Sistemas del PEaD, que centra su estudio en el
desarrollo de aplicaciones web utilizando PHP como lenguaje script.
Adems pongo en tus manos esta gua didctica, que la he diseado de manera clara,
sencilla mediante resmenes, esquemas, que estoy seguro que con tu apoyo, permitir
lograr los objetivos propuestos. Dicha gua ha sido divida en dos unidades: la primera
unidad denominada DHTML, se centra en el estudio de los lenguajes y tecnologas
utilizadas de lado de los clientes web o navegadores en Internet. En la segunda unidad
denominada: Webs dinmicas con PHP, se estudia las diversas tcnicas y herramientas
de desarrollo para la segurid?d y el acceso a bases de datos en Internet.
4
Ingeniera Web Gua didctica 1!1
Competencia
~,, . ~
5
Ingeniera Web Gua didctica iJ);'
Programacin de Contenidos
UNIDAD
"DHTML"
( 11 UNIDAD )
'~ilidMWUiMWil~lii&miiiitWWWii#liii.lWiiillM iiliitWJrmm&--W:&IHPMU#!Mdl~~Jiil i Miii
6
Ingeniera Web Gua didctica
Bibliografa
1. Texto Bsico.
2. Texto recomendado
! Suehring, Steve (2009). La Biblia de PHP 6 y MySQL. 1 ra edicin. Espaa:
Editorial Anaya Multimedia.
PHP y MySQL son tecnologas de cdigo abierto que son los elementos
fundamentales de la mayora de sitios y servidores web . Te recomiendo este libro
porque con l aprenders PHP 6 y MySQL por dentro y por fuera , explorars los
pros y contras de utilizar tecnologas de cdigo abierto, y encontrars pginas de
consejos y tcnicas que te ayudarn a extraer el mximo partido a este potente do
de desarrollo.
3. Direcciones Electrnicas
! http://www.desarrolloweb.com/
Pgina que nos proporciona una gran variedad de contenidos referente al desarrollo
de aplicaciones en Internet. Este sitio contiene muchos manuales y ejemplos
prcticos que te ayudar a refo rzar los conocimientos adquiridos en las sesiones de
clase .
! http://www.forosdelweb .com/
Es un excelente lugar para resolver consultas relacionadas con la programacin de
aplicaciones web desarrolladas con PHP y bases de datos. Aqu podrs consultar a
expertos y personas con muchos aos de experiencia respecto a cualquier error o
problema que pueda surgir durante el desarrollo de tu proyecto web.
! http://www.php .net/
Pgina del lenguaje de programacin de lado del servidor PHP , el mismo que
utilizaremos a los largo del curso . En este sitio web pod.remos consultar las
novedades, versiones, herramientas y manuales tiles para cualquier consulta
acerca del lenguaje.
7
Ingeniera Web Gua didctica (JJfft
La gua didctica est desarrollada con la claridad necesaria para que los estudiantes
puedan asimilar con facilidad los conceptos y herramientas utilizadas en el desarrollo de
aplicaciones web, encontrars adems el desarrollo de ciertos temas que el libro no
considera , y en el libro texto encontrars el desarrollo capitular en forma ms amplia, de
presentarse cualquier duda podrs realizarme la consulta va Internet a travs del campus
virtual en la opcin consultas al docente.
La seleccin del libro texto y la gua didctica ha sido diseada pensando en ti , de tal
manera que puedas conocer de manera sencilla, las tcnicas, y conceptos de esta
asignatura , pero tambin te recomienda el uso de la bibliografa complementaria para
ahondar algn tema que te interese y de esta forma estimular tu desarrollo profesional.
Debers complementar tus clases con actividades y realizar los ejercicios de autoevaluacin
que te permitirn medir tus logros. No avances a la siguiente unidad sin estar convencido de
haber logrado el aprendizaje propuesto.
8
Ingeniera Web Gua didctica
I UNIDAD
DHTML
__. -~Jo)~ ;--'\ o __
. , ~
,-:=;:-J}::.::::--; ;/
/7::'-
0-. -
t....:.::::.:::::~-t:l.r::J::;
- -. - - --~.;-,
.,v "--.. ,
'? '~
"Una persona usualmente se convierte en aquello que l cree que es. Si yo sigo
dicindome a m mismo que no puedo hacer algo, es posible que yo termine
siendo incapaz de hacerlo. Por el contrario si yo tengo la creencia que s puedo
hacerlo, con seguridad yo adquirir la capacidad de realizarlo aunque no la
haya tenido al principio. "
Gandhi. Mahatma
@!I[J[jffiill[J@@IJIJIJffiill@@@@f
CAPACIDAD
! Comprende, analiza y define y conoce las herramientas utilizadas
en la Ingeniera Web.
! Conoce las etiquetas HTML para el diseo de pginas web.
! Explica el funcionamiento de las diferentes etiquetas y propiedades
HTML.
: Valida su diseo con la pgina del consorcio W3C
: Conoce y programa en java Script
! Utiliza libreras de funciones pre-construidas en Java Script para
sus aplicaciones
: Propone nuevos estilos e interfaces web.
: Experimenta con nuevas herramientas para la construccin de
estilos web
! Conocer las formas de validacin de CSS y cmo superar los
errores encontrados.
! Comprende, conoce y utiliza las funciones bsicas y el paradigma
Orientado a Objetos de PHP y la conexin a base de datos_
9
Ingeniera Web Gua didctica iiU
lO
Ingeniera Web Guia didctica m!lm
La Web fue creada por Tim Berners-Lee y Robert Cailliau en 1989 mientras trabajaban
en el CERN en Ginebra, Suiza, aos despus, en 1992 publicaron su trabajo, y desde
entonces, Berners-Lee ha jugado un papel activo guiando el desarrollo de estndares
Web, y ltimamente ha abogado por su visin de una Web Semntica.
World Wide Web tena algunas diferencias de los otros sistemas de hipertexto que
estaban disponibles en aquel momento:
El 30 de abril de 1993, el CERN anunci que la web sera gratuita para todos.
11
Ingeniera Web Gua didctica [Mi\.)
La pgina web se solicita al servidor, escribiendo una direccin URL (sigla en ingls de
Uniform Resource Locator o Localizador Uniforme de Recursos), luego, la solicitud es
recibida por el servidor indicado y ste ubicar en el sitio web la pgina solicitada,
aunque ahora la mayora de navegadores son capaces de abrir documentos como
videos, sonido, hojas de clculo, etc.
En cada documento al que se accede, se puede utilizar hipervnculos para navegar de
una pgina a otra sin conocer la URL o direccin de la pgina destino.
-- - - --
- PAGINA DE RESPUESTA
1
SERVIDOR WEB
12
Ingeniera Web Gua didctica tJ!I
1~ Actividad N 01 1
! Elabora
Una monografa que describa los estndares web establecidos por la W3C .
! Compara
En el siguiente cuadro establece las comparaciones entre los diferentes servidores web
ms utilizados en Internet.
! Grafica
La cantidad de servidores web, para determinar cul de ellos ha sido el ms utilizado en
el perodo 2001 - 201 O.
13
Ingeniera Web Gua didctica -
~ -~utoevaluacin 01 111
1.- Preguntas de opcin mltiple: 8. ( ) Internet lnformation Server es
Marca con un aspa la respuesta el servidor web fabricado por
correcta: Microsoft.
9. ( ) La World Wide Web trabaja
1. Es el consorcio que rige el destino sobre una arquitectura Cliente
de la Web .: Servidor.
a) Navegador
b) Browser
e) Webmail
d) Ninguna Anterior
3. No es un servidor web :
a) Apache
b) Internet lnformation Server
e) Cherokee
d) Android
e) Todas
a) 1983
b) 1989
e) 1990
d) 1993
e)2009
14
Ingeniera Web Gua didctica -
Vinton Cerf
( 1934) Padre de Internet. (Fundador de ln ternet Society).
\~ IU' :~tTJk 1
Crees que es necesario establecer estndares para que todas las : 1';) ..,~, () ~
In
H- na pgina Web.
Lc HTML de modo
que los navegadores que utilizamos los usuarios muestran las pginas Web despus de
interpretar su contenido HTML.
la
>
dir~cdn te
' _,;_.,
15
Ingeniera Web Gua didctica JTIJ:)
2.1 HTML
El W3C define el lenguaje HTML como "un lenguaje reconocido universalmente y que
permite publicar informacin de forma global". Desde su primera definicin, el lenguaje
HTML ha sido un lenguaje utilizado exclusivamente para crear documentos electrnicos
pero es un lenguaje que se utiliza en la mayora de aplicaciones electrnicas
(aplicaciones web comerciales, educativas, financieras y tambin muy utilizada en
buscadores, etc.).
El lenguaje HTML, cuenta con un conjunto de etiquetas o tambin llamadas "Tags", las
cuales funcionan de la siguiente manera:
El texto o cualquier elemento de la pgina web, que est entre ambas etiquetas (de
inicio y cierre), estar influenciado por la accin que stas realicen. Por ejemplo, todo el
documento HTML debe estar entre las etiquetas <HTML> y </HTML>.
<HTML>
[Documento Web]
</HTML>
Hay que considerar que no todos los tags tienen etiqueta de cierre. Aunque se
recomienda que las etiquetas o tags que no tienen incluyan un "/" antes del cierre. Por
ejemplo la etiqueta BR se recomienda escribirla as: <br /> .
El cuerpo, est comprendido entre las etiquetas <BODY> y </BODY>. Dentro de ste
est todo lo que queremos que aparezca en la pantalla principal (texto, imgenes, etc.)
<HTML>
<HEAD>
<TITLE> Mi primer ejemplo </TITLE>
</HEAD>
<BODY>
[Aqu se escribe el contenido de la pgina]
</BODY>
</HTML>
Antes de crear nuestra primera pgina Web , debemos tener ciertas consideraciones
sobre el texto que vamos a incluir en el documento: No hay necesidad de tratar de
justificar el texto al ancho del navegador, pues el texto de una pgina Web se
caracteriza por justificarse de acuerdo al ancho que tome la ventana, adems cuando
queramos pasar a un nuevo prrafo, es necesario utilizar la etiqueta <P>.
16
Ingeniera Web Guia didctica tJI
El contenido de la pgina puede tener varios ttulos, los cuales escribiremos entre las
etiquetas <H1> y </H1>, <H2> y </H2>, etc. (hasta H6), el nmero en la etiqueta de
ttulo indica el tamao de los caracteres de la frase o palabra. El tamao mayor es el
correspondiente al nmero 1.
Una etiquE;!ta muy interesante es la de centrado <CENTER> y </CENTER> (debemos
tomar en cuenta que a esta etiqueta no la soportan todos los navegadores, aunque s la
mayora de ellos) . Esta etiqueta centra todo lo que est dentro de ella, ya sea texto,
imgenes, etc.
Existen otros tags como por ejemplo, los separadores horizontales (horizontal rules) ,
que se insertan con la etiqueta <HR> (este tag no tiene la correspondiente etiqueta de
cierre). Con ella se obtiene una raya horizontal tan ancha como la pantalla, y con la
apariencia de estar embutida sobre el fondo, o podemos tambin especificar su ancho
en pxeles o en porcentaje respecto al ancho de la ventana.
Negrita y Cursiva
Cuando trabajamos con texto formateado, las caractersticas ms utilizadas son: negrita
y cursiva . Pues en HTML, podemos darle esas caractersticas al texto utilizando las
etiquetas: <B> para poner el texto en negrita, y <1> para formato cursiva . Cada una de
ellas si cuenta con su respectiva etiqueta de cierre (</B> y </1 >).
Espacios en blanco
Al escribir el texto, si ponemos ms de un espacio en blanco entre dos palabras
observamos que el navegador slo reconoce uno de ellos. Si queremos forzarle a que lo
haga, debemos poner el cdigo " " (non-breaking space) .
Superndices y Subndices
En las frmulas matemticas puede interesar poder escribir ndices y subndices, que se
consiguen con las etiquetas <SUP> </SUP> y <SUB> </SUB> respectivamente. Por
ejemplo: m2 se obtiene con: m<SUP>2</SUP> y vx con: v<SUB>x</SUB>.
3.2 Listas
Cuando tenemos un conjunto de elementos es necesario mostrarlos en forma de listas,
las cuales pueden ser de diferentes tipos :
Las listas desordenadas (Unordered Lists) sirven para presentar cosas que, por no tener
un orden determinado, no necesitan ir precedidas por un nmero. Su estructura es la
siguiente:
17
Ingeniera Web Gua didctica as.\
<UL>
<LI> Naranja
<LI> Manzana
<LI> Fresa
<LI> Etc.
</UL>
Como se puede apreciar, para crear una lista de este tipo se utiliza la etiqueta <UL>, y
luego para cada elemento la etiqueta <LI> (List ltem). Adems podemos anidar una lista
dentro de otra . Por ejemplo:
<UL>
<LI> Mamferos
<LI> Peces
<UL>
<LI> Sardina
<LI> Bacalao
</UL>
<LI> Aves
</UL>
Las Listas Ordenadas (Ordered Lists) sirven para presentar tems en un orden
determinado. Su estructura es muy similar a la anterior. La diferencia est en que en el
resultado aparecer automticamente un nmero correlativo para cada cosa.
<OL>
<LI> lntroduccion
<LI> Conceptos
<LI> Aplicaciones
<LI> Enlaces web
</OL>
1.1ntroduccion
2.Conceptos
3.Aplicaciones
4.Enlaces web
Al igual que las listas desordenadas, tambin se pueden anidar las listas ordenadas.
El tercer tipo lo forman las listas de definicin . Como su nombre indica, son apropiadas
para glosarios (o definiciones de trminos) . Toda la lista debe ir englobada entre las
etiquetas <DL> y </DL>. Y a diferencia de las dos que hemos visto, cada rengln de la
lista tiene dos partes: 1) el nombre de la cosa a definir, que se consigue con la etiqueta
<DT> (definition term) y 2) la definicin de dicha cosa, que se consigue con la etiqueta
<DO> (definition definition) .
<DL>
<DT> HTML
<DO> Son las iniciales de HyperText Markup Language
<DT>WWW
<DO> Son las iniciales de World Wide Web
</DL>
18
Ingeniera Web Gua didctica
Su resultado es:
HTML
Son las iniciales de HyperText Markup Language
www
Son las iniciales de World Wide Web
Esto se consigue encerrando dichos comentarios entre estos dos smbolos: <!--y--> .
Ejemplo: <!-- Esto es un comentario que puedo incluir en cualquier parte-->
En el editor escribe:
<HTML>
<HEAD>
<TITLE> Ejercicio 2 <ITITLE>
</HEAD>
<BODY>
<CENTER>
<H1> Mis Cursos </H1>
</CENTER>
<HR>
Sin un orden particular, mis <B> cursos </B> son los siguientes:
<UL>
<LI> Redes de computadoras
<LI> Ingeniera de Software
<UL>
<LI> Herramientas Case
<LI> Software de Aplicacin 1
<LI> Software de Aplicacin 11
</UL>
<LI> Sistemas de Informacin Gerencial
</UL>
Los cursos que mas me gustan son <1> (en orden de preferencia): </1>
<OL>
<LI> Ingeniera de Software
<LI> Sistemas de Informacin Gerencial
<LI> Redes de Computadoras
</OL>
</BODY>
</HTML>
19
Ingeniera Web Gua didctica JJ,)
ll~l -~--
: Compara
Actividad N" 021
Las dos ltimas versiones de HTML publicadas por la W3C.
! Elabora
Una monografa que establezca las diferencias entre DHTML y XHTML.
! Investiga
Cmo se utiliza y cul es la importancia del servicio de validacin (HTML y XHTML) que
tiene la W3C.
! Elabora
Una pgina web que contenga etiquetas para la ceracin de tablas, formularios y
elementos de entrada de datos como: cajas de texto, listas desplegables, radio botones,
etc.
! Valida
Valida la pgina web creada en el tem anterior utilizando el servicio de validacin de la
W3C.
20
Ingeniera Web Guia didctica m!~
~~Autoevaluacin 02
A. Preguntas de opcin mltiple c.- O
111
d.- NULL
1. Etiqueta que se utiliza para insertar e.- CENTER
un salto de lnea en una pgina web:
a.- BR 6. Nombre de la etiqueta que se utiliza
b.- LR para insertar CHECKBOX en un
c.- LN formulario HTML:
d.- NL a.- CHECK
e.- HR b.- CHECKBOX
c.- INPUTCHECK
2. Etiqueta que se utiliza para insertar d.- INPUT
una imagen en una pgina web. e.- Ninguna Anterior
a.-IMAGE
b.-IMGSRC 7. Palabra clave que se utiliza para
c.-IMG seleccionar un elemento de una lista
d.- LINK desplegable:
e.- IMAGEN a.- CHECKED
b.- SELECTED
3. Propiedad de la etiqueta TD que se c.- MARKUP
utiliza para combinar las celdas de d. - SELECTION
una tabla. e. - Ninguna Anterior
a.- COLSCELL
b.- COMBCELL B. Determina las proposiciones
c.- COLSPAN verdaderas y falsas, anotando "V"
d.- SPANCELL o "F":
e.- ROWCOLUMN
8. ( ) La propiedad method de un
4. Etiqueta que se utiliza para insertar formulario determina la forma de
un hipervnculo en una pgina web . envo de datos .
a.- LINK
b.- VINK 9. ( ) La etiqueta OL sirve para crear
c.- HREF una lista ordenada HTML.
d.- A
e. - Ninguna anterior 10. ( ) La propiedad BORDER de la
etiqueta IMG tiene valor por defecto
5. Valor por defecto de la propiedad 1.
BORDER de la etiqueta TABLE.
a.- LEFT
b.- 1
21
Ingeniera Web Gua didctica ~JJq
Jerry Yang
Uno de los creadores de Yahoo!
Introduccin al tema
Java Script, al igual que Java o VRML, es una de las mltiples maneras que han surgido
para extender las capacidades del lenguaje HTML. Al ser la ms sencilla, es por el
momento la ms extendida. Es importante saber que: Java Script no es un lenguaje de
programacin propiamente dicho. Es un lenguaje script u orientado a documento, como
pueden ser los lenguajes de macros que tienen muchos procesadores de texto.
22
Ingeniera Web Gua didctica i-~i
Vamos a realizar nuestro primer "programa" en JavaScript. Haremos surgir una ventana
que nos muestre el mensaje "Hola, Bienvenido al PEaD de la USS!". As podremos ver
los elementos principales del lenguaje. El siguiente cdigo es una pgina Web completa
con un botn que, al pulsarlo, muestra el mensaje.
Ejemplo:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function HolaPEaD() {
alert("iHola, Bienvenido al PEaD de la USS!");
}
</SCRIPT>
</HEAD>
<BODY>
<FORM>
<INPUT TYPE="button" NAME="Boton" VALUE="Pulsame"
onCiick="HolaPEaD()">
</FORM>
</BODY>
</HTML>
Ahora vamos a ver, paso por paso, que significa cada uno de los elementos extraos
que tiene la pgina anterior:
<SCRIPT LANGUAGE="JavaScript">
</SCRIPT>
Por otra parte el cdigo de JavaScript puede ser incluido en la pgina web de la
siguiente manera:
El archivo externo simplemente es un archivo del texto que contiene cdigo JavaScript,
y cuyo nombre acaba con la extensin js.
El cdigo de Java Script puede ser escrito en cualquier lugar de la pgina web, en este
ejemplo, se ha escrito en la cabecera con la finalidad de hacer el cdigo ms legible. Si
un navegador no acepta JavaScript no leer lo que hay entre estos elementos.
function HolaPEaD() {
23
Ingeniera Web Gua didctica ~~~~
Aunque JavaScript est orientado a objetos no es de ningn modo tan estricto como
Java , donde nada est fuera de un objeto. En el cdigo de la funcin vemos una
llamada al mtodo alert (que pertenece al objeto window) que es la que se encarga de
mostrar el mensaje en pantalla .
<FORM>
<INPUT TYPE="button" NAME="Boton" VALUE="Pulsame"
onCiick="HolaPEaD()">
</FORM>
Dentro del elemento que usamos para mostrar un botn vemos una cosa nueva:
onCiick. Es un controlador de evento. Cuando el usuario pulsa el botn, el evento click
se dispara y ejecuta el cdigo que tenga entre comillas el controlador de evento onCiick,
en este caso la llamada a la funcin HolaPEaD(), que tendremos que haber definido con
anterioridad . Existen muchos ms eventos que iremos descubriendo segn avancemos.
En realidad , podramos haber escrito lo siguiente:
<FORM>
<INPUT TYPE="button" NAME="Boton" VALUE="Pulsame"
onCiick="alert('i Hola, Bienvenido al PEaD de la USS!')">
</FORM>
Sin embargo, tambin permite un tipo de comentario que puede tener las lneas que
queramos. Estos comentario comienzan con : /* y terminan por */.
Literales
Se llama as a los valores que puede tomar una variable o una constante . Aparte de los
distintos tipos de nmeros y valores booleanos:
Dentro de las cadenas podemos indicar varios caracteres especiales, con significados
especiales. Estos son los ms usados:
24
Ingeniera Web Gua didctica
Carcter
Significado
\n Nueva lnea
\t Tabulador
\' Comilla simple
\" Comilla doble
\\ Barra invertida
\999 El nmero ASCII (segn la codificacin Latin-1) del carcter en hexadecimal
Javascript ( 2002)
Por ltimo, tambin se pueden especificar objetos como literales, aunque no funcione en
ms que en Netscape 4 y superiores:
Sentencias y bloques
En Javascript las sentencias se separan con un punto y coma, y se agrupan mediante
llaves ({y}).
3.2.3 Variables
Las variables son nombres que ponemos a los lugares donde almacenamos la
informacin. En Javascript, deben comenzar por una letra o un subrayado (_), pudiendo
haber adems dgitos entre los dems caracteres.
No es necesario declarar una variable, pero cuando se hace es por medio de la palabra
reservada var. Una variable, cuando no es declarada, tiene siempre mbito global,
mientras que en caso contrario ser de mbito global si est. definida fuera de una
funcin, y local si est definida dentro:
Se pueden declarar varias variables en una misma sentencia separndolos por comas:
var x, y, z;
25
Ingeniera Web Gua didctica ijS@,L
El tipo de datos de la variable ser aquel que tenga el valor que asignemos a la misma,
a no ser que le asignemos un objeto por medio del operador new.
3.2.5 Operadores
Los operadores nos permiten unir identificadores y literales para formar expresiones.
Las expresiones son el resultado de operaciones matemticas o lgicas. Un literal o una
variable son expresiones, pero tambin lo son esos mismos literales y variables unidos
entre s mediante operadores.
Java Script dispone de muchos ms operadores que la mayora de los lenguajes, si
exceptuamos a sus padres C, C++ y Java. Algunos de ellos no los estudiaremos debido
a su escasa utilidad y con algunos otros (especialmente el condicional) deberemos
andamos con cuidado , ya que puede lograr que nuestro cdigo no lo entendamos ni
nosotros.
26
lngenieria Web Guia didctica B
Activ~dad N 03 1
! Compara
Las dos ltimas versiones de Java Script publicadas por la W3C.
! Elabora
Una monografa que establezca las diferencias entre Java Script y JScript.
! Elabora
Una pgina web que contenga etiquetas un formulario validado con JavaScript.
27
Ingeniera Web Gua didctica I!M
Autoevaluacin 03
3. Muestra una ventana de dilogo con 6. Validar slo nmeros en una caja
el mensaje especificado y dos de texto .
botones. Si el usuario pulsa OK, el
mtodo devuelve true . Si, en cambio, 7. Validar slo letras en una caja de
pulsa Cancelar, devolver false .
texto .
a.- alert
b.- prompt
8. Validar una direccin de correo
c.- open
d. - confirm electrnico escrita en una caja de
e. - Ninguna anterior texto.
28
Ingeniera Web Guia didctica B
) ' .
.. . !.
a
esta como la vanguardia en cuanto a definicin de estilos dentro de las plantillas de
diseo. A travs de instrucciones en cdigo HTML se definen los estndares del
conjunto de pginas que conforman el proyecto.
29
Ingeniera Web Gua didctica IJJ.,
4.1 css
CSS2, se basa en una serie de reglas de diseo:
Compatibilidad hacia atrs y hacia adelante. Las aplicaciones del usuario CSS2
sern capaces de entender las hojas de estilo CSS1. Las aplicaciones del
usuario CSS1 podrn leer las hojas de estilo CSS2 y descartar las partes que no
entienden . Adems, las aplicaciones del usuario que no soporten CSS sern
capaces de mostrar los documentos estilsticamente mejorados. Por supuesto, el
efecto estilstico hecho posible por CSS no ser procesado, pero todo el
contenido ser presentado.
Complementariedad con documentos estructurados. Las hojas de estilo
complementan los documentos estructurados (ej., HTML y aplicaciones XML)
proveyendo informacin estilstica del texto marcado. Debe ser fcil cambiar la
hoja de estilo con poco o ningn impacto en el sistema de marcas.
Independencia del vendedor, la plataforma y el dispositivo. Las hojas de estilo
permiten a los documentos permanecer independientes del vendedor, la
plataforma y el dispositivo. Las mismas hojas de estilo son tambin
independientes del vendedor y la plataforma, pero CSS2 permite dirigir una hoja
de estilo a un grupo de dispositivos (ej., impresoras) .
Mantenibilidad. Apuntando a una hoja de estilo desde los documentos, los
responsables de los sitios en la Web pueden simplificar el mantenimiento y
conservar un estilo y un efecto consistente a todo lo largo del sitio. Por ejemplo,
si el color del fondo de las pginas de una organizacin cambia, slo un archivo
necesita ser cambiado .
Simplicidad. CSS2 es ms compleja que CSS1, pero sigue siendo un lenguaje
de estilo simple que es humanamente legible y posible de escribir. Las
propiedades CSS se mantienen independientes unas de otras en la medida de lo
posible y generalmente slo hay un modo de conseguir un efecto determinado.
Rendimiento de la red. CSS proporciona una compacta codificacin para
presentar los contenidos . Comparado con los archivos de imgenes o de audio
que son usados frecuentemente por los autores para conseguir ciertos efectos
en el procesamiento, las hojas de estilo, la mayora de las veces, disminuyen el
tamao del contenido. Adems, menos conexiones de la red tienen que ser
abiertas, lo cual ayuda a incrementar el rendimiento de la red.
Flexibilidad. Las CSS pueden ser aplicadas al contenido de varias maneras. La
caracterstica clave es la capacidad de formar una cascada de estilos con la
informacin especificada en la hoja de estilo predeterminada (aplicacin del
usuario) , las hojas de estilo del usuario, las hojas de estilo vinculadas , el
encabezamiento del documento y en los atributos de los elementos que forman
el cuerpo del documento.
Riqueza. Proporcionando a los autores un abundante juego de efectos de
procesamiento, aumenta la riqueza de la Web como medio de expresin. Los
diseadores han estado ambicionando la funcionalidad comnmente encontrada
en los programas de edicin y de presentaciones grficas. Algunos de los
efectos requeridos entran en conflicto con la independencia del dispositivo, pero
CSS2 llega muy lejos satisfaciendo las demandas de los diseadores.
Combinacin con lenguajes alternativos. El juego de propiedades de CSS
descriptas en esta especificacin conforman un slido modelo de aplicacin de
formatos para presentaciones visuales y auditivas. Este modelo puede ser
accedido mediante el lenguaje CSS, pero la combinacin con otros lenguajes
tambin es posible. Por ejemplo, un programa en JavaScript puede cambiar
dinmicamente el valor de la propiedad 'color' de un determinado elemento.
Accesibilidad. Varias caractersticas de CSS harn a la Web ms accesible para
los usuarios con discapacidades:
30
Ingeniera Web Gua didctica
Aqu Mostraremos cun fcil puede ser disear unas simples hojas de estilo. Para esta
gua, necesitar saber un poco del cdigo HTML y alguna terminologa bsica de
composicin grfica. Comenzamos con un pequeo documento HTML:
Ejemplo:
<HTML>
<HEAD>
<TITLE>La Web con estilos</TITLE>
</HEAD>
<BODY>
<H1>La Web con estilos</H1>
<P>Esta página le ayudará a diseñar páginas web.
</BODY>
</HTML>
Para establecer el color azul para el texto de los elementos H 1, puede escribir la
siguiente regla CSS:
H1 {color: green}
Una regla CSS consta de dos partes principales: un selector ('H1.') y una declaracin
('color: green'). La declaracin tiene dos partes: una propiedad ('color') y un valor
('green').
La especificacin HTML 4.0 define de qu manera las reglas de las hojas de estilo
pueden especificarse para los documentos HTML: ya sea dentro del documento HTML o
a travs de una hoja de estilo externa. Para poner la hoja de estilo dentro del
documento~ use el elemento STYLE:
Ejemplo:
<!DOCTYPE HTML PUBLIC "-/IW3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE> ---- La Web con estilos ---- </TITLE>
<STYLE type="text/css">
H1 {color: green}
31
Ingeniera Web Gua didctica ~~~
</STYLE>
</HEAD>
<BODY>
<H 1>La Web con estilos</H 1>
<P>Esta página web te enseñará mucho.
</BODY>
</HTML>
Para una mayor flexibilidad, recomiendo que los diseadores especifiquen hojas de
estilo externas; ellas pueden cambiarse sin modificar el documento fuente HTML y
pueden compartirse entre varios documentos. Para vincular una hoja de estilo externa
puede usar el elemento LINK:
Ejemplo:
<! DOCTYPE HTML PUBLIC "-/IW3C//DTD HTML 4.0//EN">
<HTML>
<HEAD>
<TITLE>La Web con estilos</TITLE>
<LINK rel="stylesheet" href="pead_estilo.css" type="textlcss">
</HEAD>
<BODY>
<H1>La Web con estilos</H1>
<P> Esta página web te enseñará mucho .
</BODY>
</HTML>
32
Ingeniera Web Gua didctica !1m
11~ Actividad N 04 ~1
! Compara
Las dos ltimas versiones de CSS publicadas por la W3C.
! Elabora
Una monografa que describa los principales comandos o elementos CSS.
! Investiga
Cmo se utiliza y cul es la importancia del servicio de validacin de Hojas de Estilo
(CSS) que tiene la W3C.
! Elabora
Una pgina web que contenga diferentes estilos utilizando clases personalizadas.
! Valida
Valida la pgina web creada en el tem anterior utilizando el servicio de validacin de la
W3C.
33
Ingeniera Web Gua didctica u;:~
A.
Autoevaluacin 04
34
Ingeniera Web Guia didctica B
Introduccin al tema
PHP es un lenguaje de programacin de estilo clsico. No es un lenguaje de marcas
como podra ser HTML, XML o WML. Est ms cercano a JavaScript o a C. Pero a
diferencia de JavaScript que se ejecutan en el navegador, PHP se ejecuta en el
servidor, por eso nos permite acceder a los recursos que este tenga como por ejemplo
una base de datos. El programa PHP es ejecutado en el servidor y el resultado enviado
al navegador.
35
Ingeniera Web Gua didctica ft!\$
5.1 PHP
PHP (acrnimo de "PHP: Hypertext Preprocessor") es un lenguaje de "cdigo abierto"
interpretado, de alto nivel, embebido en pginas HTML y ejecutado en el servidor.
Una respuesta corta y concisa , pero, qu significa realmente? Un ejemplo nos aclarar
las cosas:
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<?php
echo "Hola, ¡ ;soy un script PHP!";
?>
</body>
</html >
Scripts del lado del servidor. Este es el campo ms tradicional y el principal foco de
trabajo . Se necesitan tres cosas para que esto funcione . El intrprete PHP (CGI
mdulo) , un servidor web y un navegador. Es necesario correr el servidor web con PHP
36
Ingeniera Web Gua didctica tJm
instalado. El resultado del programa PHP se puede obtener a travs del navegador,
conectndose con el servidor web. Consultar la seccin Instrucciones de instalacin
para ms informacin.
Scripts en la lnea de comandos. Puede crear un script PHP y correrlo sin ningn
servidor web o navegador. Solamente necesita el intrprete PHP para usarlo de esta
manera. Este tipo de uso es ideal para scripts ejecutados regularmente desde cron (en
*nix o Linux) o el Planificador de tareas (en Windows). Estos scripts tambin pueden ser
usados para tareas simples de procesamiento de texto . Consultar la seccin Usos de
PHP en la lnea de comandos para ms informacin.
PHP puede ser utilizado en cualquiera de los principales sistemas operativos del
mercado, incluyendo Linux, muchas variantes Unix (incluyendo HP-UX, Solaris y
OpenBSD), Microsoft Windows, Mac OS X, RISC OS y probablemente alguno ms.
PHP soporta la mayora de servidores web de hoy en da, incluyendo Apache, Microsoft
Internet lnformation Server, Personal Web Server, Netscape e iPianet, Oreilly Website
Pro server, Caudium , Xitami, OmniHTTPd y muchos otros. PHP tiene mdulos
disponibles para la mayora de los servidores, para aquellos otros que soporten el
estndar CGI, PHP puede usarse como procesador CGI.
De modo que, con PHP tiene la libertad de elegir el sistema operativo y el servidor de su
gusto. Tambin tiene la posibilidad de usar programacin procedimental o programacin
orientada a objetos. Aunque no todas las caractersticas estndar de la programacin
orientada a objetos estn implementadas en la versin actual de PHP, muchas
bibliotecas y aplicaciones grandes (incluyendo la biblioteca PEAR) estn escritas
ntegramente usando programacin orientada a objetos.
Con PHP no se encuentra limitado a resultados en HTML. Entre las habilidades de PHP
se incluyen: creacin de imgenes, archivos PDF y pelculas Flash (usando libswf y
Ming) sobre la marcha. Tambi puede presentar otros resultados , como XHTM y
archivos XML. PHP puede autogenerar stos archivos y almacenarlos en el sistema de
archivos en vez de presentarlos en la pantalla .
Adabas D, lngres, Oracle (OCI7 and OCI8), dBase, lnterBase, Ovrimos, Empress,
FrontBase, PostgreSQL, FilePro (read-only) , mSQL, Salid , Hyperwave, Direct MS-SQL,
Sybase, IBM DB2, MySQL, Velocis , lnformix, ODBC y Unix dbm.
Tambin contamos con una extensin DBX de abstraccin de base de datos que
permite usar de forma transparente cualquier base de datos soportada por la extensin.
Adicionalmente, PHP soporta ODBC (el Estndar Abierto de Conexin con Bases de
Datos), asi que puede conectarse a cualquier base de datos que soporte tal estndar.
37
Ingenier a Web Gua didctica ~~~
PHP tambin cuenta con soporte para comunicarse con otros serv1c1os usando
protocolos tales como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (en Windows) y
muchos otros. Tambin se pueden crear sockets puros. PHP soporta WDDX para el
intercambio de datos entre lenguajes de programacin en web. Y hablando de
interconexin, PHP puede utilizar objetos Java de forma transparente como objetos
PHP Y la extensin de CORBA puede ser utilizada para acceder a objetos remotos.
PHP tiene unas caractersticas muy tiles para el procesamiento de texto , desde
expresiones regulares POSIX extendidas o tipo Perl hasta procesadores de documentos
XML. Para procesar y acceder a documentos XML, soportamos los estndares SAX y
DOM. Puede utilizar la extensin XSL T para transformar documentos XML.
Si usa PHP en el campo del comercio electrnico, encontrar muy tiles las funciones
Cybercash, CyberMUT, VeriSign Payflow Pro y CCVS para sus programas de pago.
Hay cuatro conjuntos de etiquetas que pueden ser usadas para denotar bloques de
cdigo PHP. De estas cuatro, slo 2 (<?php . . . ?> y <script language="php"> . .
.</script>) estn siempre disponibles; el resto pueden ser configuradas en el fichero de
php.ini para ser o no aceptadas por el intrprete. Mientras que el formato corto de
etiquetas (short-form tags) y el estilo ASP (ASP-style tags) pueden ser convenientes, no
son portables como la versin de formato largo de etiquetas. Adems, si se pretende
embeber cdigo PHP en XML o XHTML, ser obligatorio el uso del formato <?php ... ?>
para la compatibilidad con XML.
1. <?php echo("si quieres servir documentos XHTML o XML, haz como aquí\n");
?>
3. <script language="php">
echo ("muchos editores (como FrontPage) no
aceptan instrucciones de procesado") ;
</script>
38
Ingeniera Web Gua didctica B
El mtodo primero, <?php ... ?>, es el ms conveniente, ya que permite el uso de PHP
en cdigo XML como XHTML.
El mtodo cuarto slo est disponible si se han activado las etiquetas ASP en el fichero
de configuracin: asp_tags.
La etiqueta de fin de bloque incluir tras ella la siguiente lnea si hay alguna presente.
Adems, la etiqueta de fin de bloque lleva implcito el punto y coma; no necesitas por lo
tanto aadir el punto y coma final de la ltima lnea del bloque PHP.
PHP permite estructurar bloques como: Ejemplo 10-2. Mtodos avanzados de escape
<?php
if ($expression) {
?>
<strong> This is true. </strong>
<?php
} else {
?>
<strong> This is false. </strong>
<?php
}
?>
Este ejemplo realiza lo esperado, ya que cuando PHP encuentra las etiquetas ?> de fin
de bloque, empieza a escribir lo que encuentra tal cual hasta que encuentra otra
etiqueta de inicio de bloque. El ejemplo anterior es , por supuesto, inventado. Para
escribir bloques grandes de texto generamente es ms eficiente separalos del cdigo
PHP que enviar todo el texto mediante las funciones echo(), print() o similares.
5.4 Expresiones
Las expresiones son la piedra angular de PHP. En PHP, casi cualquier cosa que
escribes es una expresin. La forma ms simple y ajustada de definir una expresin es
"cualquier cosa que tiene un valor".
39
lngenieria Web Gua didctica C'!lm
Las formas ms bsicas de expresiones son las constantes y las variables. Cuando
escribes "$a = 5", ests asignando '5' a $a . '5', obviamente, tiene el valor 5 , en otras
palabras '5' es una expresin con el valor 5 (en este caso, '5' es una constante entera).
<?php
function foo () {
return 5;
}
?>
Suponiendo que ests familiarizado con el concepto de funciones (si no lo ests chale
un vistazo al captulo sobre funciones), asumirs que teclear $e = foo() es
esencialmente lo mismo que escribir $e = 5, y has acertado. Las funciones son
expresiones que valen el valor que retornan. Como foo() devuelve 5, el valor de la
expresin 'foo()' es 5. Normalmente las funciones no devuelven un valor fijo, sino que
suele ser calculado.
Hasta aqu, los usuarios de PHP/FI 2 no deberan haber notado ningn cambio. Sin
embargo, PHP lleva las expresiones mucho ms all, al igual que otros lenguajes. PHP
es un lenguaje orientado a expresiones, en el sentido de que casi todo es una
expresin. Considera el ejemplo anterior '$a = 5'. Es sencillo ver que hay dos valores
involucrados, el valor de la constante entera '5', y el valor de $a que est siendo
actualizado tambin a 5. Pero la verdad es que hay un valor adicional implicado aqu, y
es el valor de la propia asignacin . La asignacin misma se evala al valor asignado, en
este caso 5. En la prctica, quiere decir que '$a = 5', independientemente de lo que
hace, es una expresin con el valor 5. De esta manera, escribir algo como '$b =($a = 5)'
es como escribir '$a = 5; $b = 5;' (un punto y coma marca el final de una instruccin).
Como las asignaciones se evalan de derecha a izquierda, puedes escribir tambin '$b
=$a= 5'.
40
Ingeniera Web Gua didctica B
'++$variable', se evala al valor incrementado (PHP incrementa la variable antes de leer
su valor, de ah el nombre 'preincremento') . El postincremento, escrito '$variable++', se
evala al valor original de $variable antes de realizar el incremento (PHP incrementa la
variable despus de leer su valor, de ah el nombre 'postincremento') .
Hay otra expresin que puede parecer extraa si no la has visto en otros lenguaes, el
operador condicional ternario:
<?php
$first ? $second : $third
?>
41
Ingeniera Web Gua didctica U@:\
! Elabora
Una monografa que describa los diferentes tipos de datos que tiene PHP.
! Elabora
Una pgina web que genere una tabla HTML de m filas por n columnas, donde m y n
son variables PHP y adems utilice una hoja de estilos que coloree las filas pares de
gris (#AAAAAA) y las impares de verde claro (#AACCAA).
42
Ingeniera Web Gua didctica
~-~utoevaluacin 05 [lllll
A. Preguntas de opcin mltiple 5. Operador aritmtico que retorna
TRUE si el valor a la izquierda del
1. Funcin de PHP para imprimir un operador es igual al valor de la
resultado PHP. derecha, y son del mismo tipo.
a.- alert a.-= (igual)
b.- php b.- == (doble igual)
c.- echo c.-=== (triple igual)
d.- printer d.-==== (cudruple igual)
e.- Ninguna anterior e.- Ninguna anterior
2. Con que smbolo inicia una variable B. Utilizando las sentencias de control
PHP . de PHP, escribe una pgina PHP
a.-% con el cdigo necesario para:
b.- $
c.- & 6. Que analice una variable y determine
d.-# si su valor es primo o no.
e.- Ninguna anterior
7. Que convierta un nC1mero entero (1 a
3. No es un dato escalar de PHP. 999) a su forma textual. Ejemplo: 2 =>
a.- float dos; 123 => ciento veintitrs.
b.- int
c.- string 8. Imprima de color rojo la variable "x"
d.- booleano cuando tenga un valor menor a 11 o
e.- Ninguna anterior de color azul cuando sea mayor o
igual.
4. Es un dato compuesto de PHP.
a.- float 9. Que analice una variable y determine
b.- string si su valor es mltiplo de 7 o no.
c.- array
d.- complex 1 O. Imprima los 1O primeros nmeros de
e.- Ninguna anterior la serie de Fibonacci.
43
Ingeniera Web Guia didctica OJ:
iente sintaxis:
- : 1'-'' '1'-'
function foo ($arg_1, $arg_2, ... , $arg_n)
{
echo "Función de ejemplo.\n";
return $retval;
}
?>
44
Ingeniera Web Guia didctica r!Jm
PHP soporta pasar parmetros por valor (el comportamiento por defecto), por
referencia, y parmetros por defecto. Listas de longitud variable de parmetros slo
estn soportadas en PHP4 y posteriores; ver Listas de longitud variable de parmetros y
la referencia de las funciones func_num_args(), func_get_arg() , y func_get_args() para
ms informacin. Un efecto similar puede conseguirse en PHP3 pasando un array de
parmetros a la funcin :
<?php
function takes_array($input)
{
echo "$input[O] + $input[1] = ", $input[O]+$input[1];
}
?>
Si quieres que un parmetro de una funcin siempre se pase por referencia , puedes
anteponer un ampersand (&) al nombre del parmetro en la definicin de la funcin :
<?php
function add_some_extra(&$string)
{
$string .=' y algo más.';
}
$str ='Esto es una cadena , ';
add_some_extra($str);
echo $str; // Saca 'Esto es una cadena , y algo más.'
?>
<?php
function makecoffee ($type = "cappucino")
{
return "Hacer una taza de $type.\n";
}
echo makecoffee () ;
echo makecoffee ("espresso");
?>
45
Ingeniera Web Gua didctica ij]J~j
El valor por defecto tiene que ser una expresin constante, y no una variable, miembro
de una clase llamada a una funcin.
Destacar que cuando se usan parmetros por defecto, estos tienen que estar a la
derecha de cualquier parmetro sin valor por defecto; de otra manera las cosas no
funcionarn de la forma esperada. Considera el siguiente fragmento de cdigo :
<?php
function makeyogurt ($type ="acidophilus", $flavour)
{
return "Haciendo un bol de $type $flavour.\n";
}
<?php
function makeyogurt ($flavour, $type ="acidophilus")
{
return "Haciendo un bol de $type $flavour.\n";
}
46
Ingeniera Web Gua didctica m!lll
No necesita de ninguna sintaxis especial, y las listas de parmetros pueden ser escritas
en la llamada a la funcin y se comportarn de la manera esperada.
6.2Cadenas
Un valor string es una serie de caracteres. En PHP, un caracter es lo mismo que un
byte, es decir, hay exactamente 256 tipos de caracteres diferentes. Esto implica tambin
que PHP no tiene soporte nativo de Unicode. Vea utf8_encode() y utf8_decode() para
conocer sobre el soporte Unicode.
Nota: El que una cadena se haga muy grande no es un problema . PHP no impone lmite
prctico alguno sobre el tamao de las cadenas , as que no hay ninguna razn para
preocuparse sobre las cadenas largas.
Sintaxis
Un literal de cadena puede especificarse en tres formas diferentes.
comillas simples
comillas dobles
sintaxis heredoc
Comillas simples
La forma ms simple de especificar una cadena sencilla es rodearla de comillas simples
(el caracter ') .
Para especificar una comilla sencilla literal, necesita escaparla con una barra invertida
(\), como en muchos otros lenguajes. Si una barra invertida necesita aparecer antes de
una comilla sencilla o al final de la cadena , necesitar doblarla . Note que si intenta
escapar cualquier otro caracter, la barra invertida ser impresa tambin! De modo que,
por lo general , no hay necesidad de escapar la barra invertida misma.
Nota: En PHP 3, se generar una advertencia de nivel E_NOTICE cuando esto ocurra.
Nota: A diferencia de las otras dos sintaxis, las variables y secuencias de escape para
caracteres especiales no sern expa ndidas cu ando ocurren al interior de cadenas entre
comillas sencillas.
<?php
echo 'esta es una cadena simple';
47
Ingeniera Web Gua didctica mm
Comillas dobles
Si la cadena se encuentra rodeada de comillas dobles ("), PHP entiende ms
secuencias de escape para caracteres especiales:
secuencia significado
\n alimentacin de lnea (LF o OxOA (10) en ASCII)
\r retorno de carro (CR o OxOD (13) en ASCII)
\t tabulacin horizontal (HT o Ox09 (9) en ASCII)
\\barra invertida
\$ signo de dlar
\"comilla-doble
\[0-7]{1 ,3} la secuencia de caracteres que coincide con la expresin regular es un
caracter en notacin octal
\x[0-9A-Fa-f]{1 ,2} la secuencia de caracteres que coincide con la expresin regular es
un caracter en notacin hexadecimal
Nuevamente, si intenta escapar cualquier otro caracter, la barra invertida ser impresa
tambin! Antes de PHP 5.1 .1, la barra invertida en \{$var} no vena imprimindose.
He red oc
Otra forma de delimitar cadenas es mediante el uso de la sintaxis heredoc ("<<<") . Debe
indicarse un identificador (seguido por un salto de lnea) despus de la secuencia <<<,
luego la cadena, y luego el mismo identificador para cerrar la cita .
Aviso
Es muy importante notar que la lnea con el identificador de cierre no contenga otros
caracteres, excepto quizs por un punto-y-coma (;). Esto quiere decir en especial que el
identificador no debe usar sangra, y no debe haber espacios o tabuladores antes o
despus del punto-y-coma. Es importante tambin notar que el primer caracter antes del
identificador de cierre debe ser un salto de lnea, tal y como lo defina su sistema
operativo. Esto quiere decir \r en Macintosh, por ejemplo . El delimitador de cierre
(posiblemente seguido de un punto-y-coma) debe ser seguido tambin por una nueva
lnea.
48
Ingeniera Web Gua didctica tJII
No es permitido usar la sintaxis heredoc al inicializar miembros de clase. Use otro tipo
de sintaxis en su lugar. Ejemplo 11-3. Ejemplo invlido
<?php
class foo {
public $bar = <<<EOT
bar
EOT;
}
?>
El texto heredoc se comporta tal como una cadena entre comillas dobles, sin las
comillas dobles. Esto quiere decir que no necesita escapar tales comillas en sus
bloques heredoc, pero aun puede usar los cdigos de escape listados anteriormente.
Las variables son expandidas, aunque debe tenerse el mismo cuidado cuando se
expresen variables complejas al interior de un segmento heredoc, al igual que con otras
cadenas. Ejemplo 11-4. Ejemplo de uso de una cadena heredoc
<?php
$cadena= <<<FIN
Ejemplo de una cadena
que se extiende por varias lneas
usando la sintaxis heredoc.
FIN;
function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
echo <<<FIN
Mi nombre es "$nombre". Estoy imprimiendo algo de $foo->foo.
Ahora, estoy imprimiendo algo de {$foo->bar[1]}.
Esto debera imprimir una letra 'A' mayscula: \x41
FIN;
?>
Procesamiento de variables
Cuando una cadena es especificada en comillas dobles o al interior de un bloque
heredoc, las variables son interpretadas en su interior.
49
Ingeniera Web Gua didctica d!l
Existen dos tipos de sintaxis: una simple y una compleja . La sintaxis simple es la ms
comn y conveniente . Esta ofrece una forma de interpretar una variable, un valor array,
o una propiedad de un object.
La sintaxis compleja fue introducida en PHP 4, y puede reconocerse por las llaves que
rodean la expresin .
Sintaxis simple
Si un signo de dlar ($) es encontrado, el analizador sintctico tomar ambiciosamente
tantos lexemas como le sea posible para formar un nombre de variable vlido. Rodee el
nombre de la variable de llaves si desea especificar explcitamente el final del nombre.
<?php
$cerveza = 'Heineken';
echo "El sabor de varias $cerveza's es excelente"; // funciona , "'" no es un caracter
vlido pa ra nombres de variables
echo "Tom algunas $cervezas"; //no funciona, 's' es un caracter vlido para nombres
de variables
echo "Tom algunas ${cerveza}s"; //funciona
echo "Tom algunas {$cerveza}s" ; //funciona
?>
De forma similar, puede hacer que un ndice de un array o una propiedad de un object
sean interpretados. En el caso de los ndices de matrices, el corchete cuadrado de
cierre (]) marca el final del ndice . Para las propiedades de objetos, se aplican las
mismas reglas de las variables simples, aunque con las propiedades de objetos no
existe un truco como el que existe con las variables.
<?php
11 Estos ejemplos son especficos al uso de matrices al interior de
11 cadenas. Cuando se encuentre por fuera de una cadena, siempre rodee
11 de comillas las claves tipo cadena de su matriz, y no use
11 {llaves} por fuera de cadenas tampoco.
1/ Funciona pero note que esto trabaja de forma diferente por fuera de
11 cadenas entre comillas
echo "Un banano es $frutas[banano] .";
11 Funciona
echo "Un banano es {$frutas['banano']}.";
11 Funciona, pero PHP busca una constante llamada banano primero, como
11 se describe ms adelante.
echo "Un banano es {$frutas[banano]}.";
50
Ingeniera Web Gu a didctica
JI Funciona
echo "Un banano es" . $frutas['banano'] . ".";
JI Funciona
echo "Este cuadro tiene $cuadro->ancho metros de ancho.";
De hecho, de esta forma puede incluir cualquier valor que sea parte del espacio de
nombres al interior de cadenas. Simplemente escriba la expresin en la misma forma
que lo hara si se encontrara por fuera de una cadena , y luego la ubica entre { y }. Ya
que no es posible escapar '{', esta sintaxis ser reconocida nicamente cuando el
caracter $ se encuentra inmediatamente despus de {. (Use "{\$" para obtener una
secuencia literal "{$"). Algunos ejemplos para aclarar el asunto:
<?php
JI Mostremos todos los errores
error_reporting(E_ALL);
$genial ='fantstico' ;
JI Funciona
echo "Este cuadro tiene {$cuadro->ancho}OO centmetros de ancho.";
JI Funciona
echo "Esto funciona : {$matriz[4][3]}";
JI Esto est mal por la misma razn por la que $foo[bar] est mal por
JI fuera de una cadena. En otras palabras, aun funciona pero ya que
JI PHP busca primero una constante llamada foo , genera un error de
JI nivel E_NOTICE (constante indefinida) .
echo "Esto est mal: {$matriz[foo][3]}";
JI Funciona.
echo "Esto funciona: " . $arr['foo'][3] ;
51
Ingeniera Web Gua didctica f- 1
liiW
Nota: Tambin es posible acceder a los caracteres usando llaves como $cadena{42}
para el mismo propsito. Sin embargo, se prefiere el uso de corchetes cuadrados ya
que el estilo {corchetes} es considerado obsoleto a partir de PHP 6.
<?php
11 Obtener el primer caracter de una cadena
$cadena ='Esta es una prueba.';
$primer= $cadena[O];
?>
Vea la seccin de funciones de cadena para consultar funciones de uso general, o las
funciones de expresiones regulares para bsquedas y reemplazos avanzados (en dos
sabores: Perl y POSIX extendido) .
. Existen tambin funciones para cadenas tipo URL, y funciones para encriptar/descifrar
cadenas (mcrypt y mhash).
52
lngenieria Web Guia didctica
Finalmente, si aun no ha encontrado lo que busca, vea tambin las funciones de tipo de
caracter.
Conversin a cadena
Es posible convertir un valor a una cadena usando el moldeamiento (string), o la funcin
strval() . La conversin a cadena se realiza automticamente para usted en el contexto
de una expresin cuando se necesita una cadena. Esto ocurre cuando usa las
funciones echo() o print(), o cuando compara el valor de una variable con una cadena.
El contenido de las secciones del manual sobre Tipos y Manipulacin de Tipos ayudan a
aclarar este hecho. Vea tambin settype().
11 11
Un valor boolean TRUE es convertido a la cadena 1 el valor FALSE se representa
,
1111
como (una cadena vaca). De esta forma, usted puede convertir de ida y vuelta entre
valores booleanos y de cadena.
Un nmero integer o de punto flotante (float) es convertido a una cadena que representa
el nmero con sus dgitos (incluyendo la parte del exponente para los nmeros de punto
flotante).
volcar los contenidos de un valor array con echo() o print() para ver lo que se encuentra
en su interior. Para ver un elemento, usted tendra que hacer algo como echo $arr['foo'].
Vea ms adelante algunos consejos sobre el volcado/vista del contenido completo.
11 11
Los objetos son convertidos siempre a la cadena bject Si quisiera imprimir los
La cadena ser evaluada como un float si contiene cualquier caracter entre'.', 'e', o 'E'.
De otra forma, evaluar como un entero.
53
Ingeniera Web Gua didctica UJ.)
El valor es dado por la porcin inicial de la cadena. Si la cadena comienza con datos
numricos vlidos, stos sern el valor usado. De lo contrario, el valor ser O (cero) . Un
signo opcional es considerado un dato numrico vlido, seguido por uno o ms dgitos
(que pueden contener un punto decimal) , seguidos por un exponente opcional. El
exponente es una 'e' o 'E' seguida de uno o ms dgitos.
<?php
$foo = 1 + "1 0.5"; 11 $foo es flotante (11 .5)
$foo = 1 + "-1.3e3"; 11 $foo es flotante (-1299)
$foo = 1 + "bob-1.3e3"; 11 $foo es entero (1)
$foo = 1 + "bob3"; 11 $foo es entero ( 1)
$foo = 1 + "1 O Cerditos"; 11 $foo es entero (11)
$foo = 4 + "1 0.2 Cerditos"; JI $foo es flotante (14.2)
$foo = "1 0.0 cerdos "+ 1; 11 $foo es flotante (11)
$foo = "1 0.0 cerdos "+ 1.0; 11 $foo es flotante ( 11)
?>
Para ms informacin sobre esta conversin , vea la pgina del manual Unix sobre
strtod(3).
Si quisiera probar cualquiera de los ejemplos presentados en esta seccin, puede cortar
y pegar los ejemplos e insertar la siguiente lnea para verificar por s mismo lo que est
sucediendo:
<?php
echo "\$foo==$foo; tipo es" . gettype ($foo) . "<br />\n";
?>
54
Ingeniera Web Gua didctica
! Programar
Un archivo .php que encuentre la posicin de la ltima ocurrencia de una cadena en
otra, insensible a maysculas y minsculas.
Un archivo .php que sustituya las vocales a, e, i, o y u de una cadena por 1, 2, 3, 4 y 5
respectivamente e imprima la nueva cadena .
Un archivo .php que contenga una variable cuyo valor es la fecha del sistema en
formato dd-mm-aaaa (Ejm: 20-05-1989) e la imprima en formato aaaa-mm-dd (Ejm :
1989-05-20), utilizando funciones de cadenas.
! Elabora
Una monografa que contenga un resumen de las funciones de cadena de PHP 5.
~ -~utoevaluacin 06
! Programar
Una pgina web que contenga 4 funciones definidas por Ud, las cuales sirvan para:
Ordenar una lista de nmeros.
Convertir a arbigo un nmero romano. Ejm: XII=> 12
Convertir a romano un nmero arbigo . Ejm: 25 => XXV
Solicitar el ingreso de una clave en un formulario. La segunda pagtna
debe verificar si ingres el string "z80" y mostrar un mensaje de
bienvenida, en caso contrario, esta pgina debe redireccionar a la
primera pgina nuevamente.
55
Ingeniera Web Gua didctica i-
~
l
Introduccin al tema
Los formularios permiten a los usuarios
enviar informacin al servidor, en el cual hay instalado(s) programa(s) que procesan
esta informacin. Es por esta razn que se les considera como uno de los elementos
ms importantes en la construccin de aplicaciones web.
56
Ingeniera Web Gua didctica
Etiqueta de inicio :
Cuerpo del formulario , con los distintos elementos para poder introducir los
datos.
Botones de envo y de borrado.
Etiqueta de cierre </FORM>
Etiqueta de inicio
<FORM ACTION=m ailto:email METHOD="POST" ENCTYPE = "TEXT/PLAIN">
El atributo ACTION indica la accin que se debe efectuar.
El atributo METHOD=POST indica que los datos sean inmediatamente enviados a la
direccin de email u a otro destino establecido segn el atributo ACTION .
Con el atributo ENCTYPE="TEXT/PLAIN" se consigue que las respuestas las recibamos
como un archivo de texto, perfectamente legible y sin codificar.
Elementos para introducir los datos
Existen tres tipos de elementos:
1. Introduccin por medio de texto
2. Introduccin por medio de mens
3. Introduccin por medio de botones
En donde:
xxx es la palabra que indica el tipo de introduccin .
yyy es el nombre que le asignamos nosotros a la variable de introduccin del dato.
zzz es el nombre de la variable que contendr el valor del elemento.
Si el usuario introduce su apellido, por ejemplo: Ruiz , y pulsa el botn de envo (que
veremos ms adelante) , recibiremos un email suyo con el siguiente texto:
Apellido=Ruiz
57
Ingeniera Web Gua didctica H!J:~
Tambin se puede hacer que el texto introducido no sea reconocible, es decir que todos
los caracteres se representen por asteriscos. Basta con cambiar en la etiqueta INPUT
TYPE="text" por INPUT TYPE="password". En el ltimo ejemplo, si cambiamos la
etiquea correspondiente por:
58
Ingeniera Web Gua didctica tBi
En el ejemplo anterior, slo es visible en el formulario una opcin. Si queremos que
sean visibles mltiples opciones a la vez, aadimos en la etiqueta los atributos
MLTIPLE SIZE="nmero", donde especificamos el nmero de opciones visibles .
Si el usuario marca este formulario y pulsa el botn de envo, recibiremos un email suyo
con el texto: Lista=On.
Botones de radio
Cuando queremos que el usuario elija una nica opcin entre varias, podemos hacer
uso de los botones de radio, que se consiguen con la etiqueta:
Donde yyy es el nombre que le ponemos a la variable que se trata de elegir, y zzz es el
nombre de cada una de las opciones en concreto.
59
Ingeniera Web Gua didctica i!lj
Consideraciones finales
Hasta ahora hemos visto uno a uno los diferentes elementos que se pueden utilizar.
Pero no hay ningn inconveniente en usar, dentro del mismo formulario , distintos tipos
de introduccin de datos. Al pulsar el usuario el botn de envo recibiramos en email
suyo con las distintas parejas NAME=VALUE de cada elemento, encadenadas con el
smbolo& .
<HTML>
<HEAD><TITLE>LIBRO DE VISITAS</TITLE></HEAD>
<BODY>
<P><CENTER>
<H2>Libro de visitas</H2>
<P>
<FORM ACTION=mailto :xy@ab METHOD="POST" ENCTYPE="TEXT/PLAIN">
Tu nombre:
<BR><INPUT TYPE="text" NAME="Nombre">
<P>Escribe tus comentarios:
<BR><TEXTAREA NAME="Comentarios" ROWS="6" COLS="40">
</TEXTAREA>
<P><INPUT TYPE="submit" VALUE="Enviar datos">
<INPUT TYPE="reset" VALUE="Borrar datos">
</FORM>
<P><HR><P>
</BODY>
</HTML>
60
Ingeniera Web Gua didctica lB!
7.2 Envo de datos de un formulario a PHP
Veremos esto con un ejemplo bsico:
<HTML>
<HEAD> <TITLE>New Document</TITLE></HEAD>
<BODY>
<form method="post" action="registro. php">
Nombres <input type="text" name="txtnom" size="20"><BR>
Apellidos <input type="text" name="txtape" size="20"><BR>
Direccion <input type="text" name="txtdir" size="20"><br>
Sexo <input type="radio" name="optsexo" value="M">Masculino
<input type="radio" name="optsexo" value="F">Femenino
<br>
T elefono <input type="text" name="txttel" size="20"><br>
<input type="submit" value="Enviar">
</form>
</BODY>
</HTML>
<HTML>
<HEAD> <TITLE>New Document</TITLE></HEAD>
<BODY>
<?php
$nombres = $_POST['txtnom'];
$apellidos = $_POST['txtape'];
$direccion = $_POST['txtdir'];
$telefono = $_POST['txttel'];
$sexo = $_POST['optsexo'];
Vemos ahora otro ejemplo, esta vez para subir un archivo al servidor web .
<HTML>
<HEAD> <TITLE>Subir archivos</TITLE></HEAD>
<BODY>
<form action="subir.php" enctype="multipart/form-data" method="POST">
Archivo <input type="file" name="txtarchivo">
<input type="submit" value="Subir archivo">
</form>
</BODY>
</HTML>
61
lngenieria Web Guia didctica ij!ll
subir.php
<HTML>
<HEAD> <TITLE>New Document</TITLE></HEAD>
<BODY>
<?php
$nomreai=$_FILES['txtarchivo']['name'];
$tipo =$ _FI LES['txtarchivo']['type'];
$tamano =$_FI LES['txtarchivo']['size'];
$temporai=$_FILES['txtarchivo']['tmp_name'];
$origen=$temporal;
$destino="docs/" .$nomreal;
copy($origen, $destino);
?>
</BODY>
</HTML>
62
Ingeniera Web Guia didctica tJ!lm
Actividad N 07 "1
! Programar
Un formulario HTML que enve datos al archivo registro.php, los datos de un nuevo
cliente (idcliente, nombres, apellidos, fecha de nacimiento, ciudad, y pas).
Un formulario HTML que suba al servidor web la foto de cada cliente (complementar el
tem anterior- registro de cliente).
! Elabora
Una monografa que contenga las diferencias que existen entre el mtodo POST y GET
de los formularios HTML.
63
Ingeniera Web Gua didctica ~~~
~ -~~toevaluacin 07 llllll
! Programar
1. Escriba un documento html que contenga un formulario con los siguientes
elementos: un campo de texto , dos radio botones y un botn de envo de datos.
2. Escriba otro documento html que contenga nicamente un ttulo en su cuerpo
3. Cambie la extensin de este segundo documento para que sea .php
4. Publique el fichero con extensin php en el servidor y compruebe que puede
acceder al mismo utilizando un navegador.
5. En el documento html que tiene el formulario, copie la URL que ha utilizado para
acceder al fichero php y pguela como valor del atributo action . Ponga GET
como valor en el atributo method.
6. Compruebe que si pulsa sobre el botn del documento html se abre el
documento del punto 2 correctamente .
7. Publique el documento html en el servidor, acceda al mismo con un navegador y
compruebe que todo funciona correctamente
8. Inserte en el cuerpo del documento php una seccin de cdigo (utilizando<? y
?>) . Dentro de esa seccin, y utilizando los datos que recoge del formulario del
documento html , haga las siguientes pruebas:
Imprima el valor que se recoge en el campo de texto del formulario para
que aparezca en un prrafo.
Imprima el valor del radio botn que se le enva
Cree una sentencia IF que, en funcin del valor del radio botn recibido,
imprima una cadena u otra (por ejemplo "VALOR 1" y "VALOR 2").
Compruebe que la sentencia condicional se ejecuta correctamente
dependiendo del radio botn seleccionado.
Altere esa sentencia condicional. Si el usuario ha seleccionado uno de los
radio botones, escriba el contenido del campo de texto que se le enva en
un fichero en el servidor. Si el usuario ha seleccionado el otro, recupere el
valor almacenado en el fichero previamente.
9. Inserte un rea de texto en el formulario , de forma que el texto que escriba el
usuario se guarde en otro fichero del servidor.
1O. Cree otro documento php que, cada vez que se ejecuta, lee el contenido del
fichero en el que se escribe el texto del punto 9 y lo pinta en pantalla en forma de
prrafos (tenga en cuenta que en el texto pueden aparecer saltos de lnea)
11. Cree una pgina html que tenga un men con dos opciones. Una le conduce al
documento html que tena el formulario y la otra al php que lee el contenido del
fichero .
12. Publique esta pgina html y compruebe que todo funciona correctamente cuando
utiliza un navegador.
13. Una pgina Web que muestre una lista desplegable de departamentos del Per,
y cada vez que se cambie de departamento, la lista de provincias cambia
dinmicamente.
64
Ingeniera Web Gua didctica fl!
Introduccin al tema
65
Ingeniera Web Gua didctica rJ!I
8.1 Clases y Objetos
Clase
Cada definicin de clase empieza con la palabra "class", seguida por un nombre de
clase, el cual puede ser cualquier nombre que no est en la lista de palabras reserved
en PHP. Seguida por un par de llaves curvas, las cuales contienen la definicin de los
miembros de la clase y los mtodos. Una pseudo variable $this est disponible cuando
un mtodo es llamado dentro del contexto de un objeto . $this es una referencia al objeto
que se est usando (usualmente el objeto al que el mtodo pertenece, pero puede ser
otro objeto, si un mtodo es llamado estticamente desde el contexto de un objeto
secundario). Este es ilustrado en el siguiente ejemplo:
<?php
class A
{
function foo()
{
if (isset($this)) {
echo '$this está definido (';
echo get_class($this);
echo ")\n";
} else {
echo "\$this no está definido.\n";
}
}
}
class 8
{
function bar()
{
A::foo() ;
}
}
<?php
class SimpleCiass
{
66
lngenieria Web Guia didctica t-!1
public $var = 'a valor por defecto';
Nuevo objeto
Para crear una instancia de un objeto, un nuevo objeto debe ser creado y asignado a
una variable . Un objeto siempre ser asignado cuando se crea un objeto nuevo a menos
que el objeto tenga un constructor definido que arroje una excepcin en caso de error.
<?php
$instance = new SimpleCiass()
?>
Cuando se asigna una instancia de un objeto previamente creado a una nueva variable ,
la nueva variable accesar la misma instancia que la del objeto a la que fue asignada.
Este comportamiento es el mismo cuando se pasan instancias a una funcin. Una
nueva instancia de un objeto previamente creado puede ser hecho clonandolo .
<?php
$assigned = $instance;
$reference =& $instance;
NULL
NULL
object(SimpleCiass)#1 (1) {
["var"]=>
string(30) "$assigned tendr este valor"
}
Extendiendo objetos
Una clase puede heredar mtodos y miembros de otra clase usando la palabra 'extends'
en la declaracin. No es posible extender de mltiples clases, una clase puede heredar
solo de una clase base.
67
lngenieria Web Guia didctica Hl!I:J
Los mtodos de herencia y sus miembros pueden ser evitados, redeclarndolos con el
mismo nombre con el que los defini la clase padre, a menos que la clase padre haya
definido un mtodo como final. Es posible accesar a los mtodos o miembros
redeclarados haciendo referencia a ellos con parent::
<?php
class ExtendCiass extends SimpleCiass
{
function displayVar()
{
echo "Extendiendo la clase\n";
parent: :displayVar();
}
}
Extendiendo la clase
a valor por defecto
<?php
require "clase1.php";
68
lngenieria Web Guia didctica lB
Actividad N" 08 .1
: Elabora
Una monografa que explique cada uno de los patrones que se explican en el texto
base: Domine PHP 5.
I.Autoevaluacin 08
: Programar
1. Un archivo PHP que Defina una Clase que permita determinar el cociente entero
de la divisin de 2 nmeros naturales por el mtodo de restas sucesivas hasta que
la ltima diferencia sea menor al divisor.
3. Un archivo PHP por cada patrn explicado en el texto base: Domine PHP 5.
69
Ingeniera Web Gua didctica e:
Introduccin al tema
Para acceder a bases de datos vamos a utilizar una extensin de PHP 5 denominadad
PDO - PHP Data Object. La cual nos servir para conectarnos a diferentes motores de
bases de datos existentes en el mercado, por ejemplo: MySQL, PostgreSQL y MS-SQL.
70
Ingeniera Web Gua didctica
<?php
JI PDO PHP DATA OBJECT
$tipobase="mysql";
$servidor="localhost";
$base="dbclase";
$dsn="$tipobase:dbname=$base; host=$servidor";
$user="root";
$password="";
$cnx = new PDO($dsn, $user, $password);
?>
lista.php
<?php
JI Archivo : lista.php
require "conexion.php";
$sentencia="SELECT * FROM persona";
$resultado=$cnx->query($sentencia) or die("Error SOL");
?>
<HTML>
<HEAD> <TITLE>Lista de Personas</TITLE></HEAD>
<BODY>
Número de Registros:
<?php
echo $resultado->rowCount()."<br>";?>
<form action='eliminar.php' method="post">
<table border="1">
<tr>
<th><input type="submit" value="Eiiminar"></th>
<th>ld</th>
<th>Nombres</th>
<th>Apellidos</th>
<th>E-mail</th>
<th>Editar</th>
71
Ingeniera Web Gua didctica -
</tr>
<?php
wh ile($reg =$resultad o->fetch Object() ){
echo "<tr>
<td><input type='checkbox' name='chk[]' value='$reg->idpersona'></td>
<td>$reg->idpersona</td>
<td>$reg->nombres </td>
<td>$reg->apellidos </td>
<td >$reg->email </td>
<td><a href='editar.php?id=$reg->idpersona'>Editar</a></td>
</tr>";
}
?>
</table>
</form>
<a href='nuevo.php'>Nuevo Registro</a>
</BODY>
</HTML>
nuevo.php
<!DOCTYPE html PUBLIC "-/IW3CI/DTD XHTML 1.0 Transitionaii/EN"
"http://www.w3. org/TR/xhtmi1/DTD/xhtml1-transitional .dtd">
<html xmlns="http :l/www.w3.org/1999/xhtml">
<head>
<title>Nueva persona</title>
</head>
<body>
<form id="form 1" name="form 1" method="post" action="insertar. php">
<table width="200" border="O">
<tr><th colspan="2">Nueva persona</th> </tr>
<tr><td>Nombres</td>
<td><input type="text" name="txtnombres" id="txtnombres" /></td>
</tr>
<tr><td>Apellidos</td>
<td><input type="text" name="txtapellidos" id="txtapellidos" /></td>
</tr>
<tr><td>E-mail</td>
<td><input type="text" name="txtemail" id="txtemail" 1></td>
</tr>
<tr> <th colspan="2">
<input type="button" name="button" id="button" value="Cancelar"
onclick="location='lista.php"'/>
<input type="submit" name="button2" id="button2" value="Guardar" /></th>
</tr>
</table>
</form >
</body>
</html>
insertar.php
<?php
!/Archivo: insertar.php
require "conexion .php" ;
$nombres=$ _POST['txtnombres'];
72
Ingeniera Web Gui a didctica
$apellidos=$_POST['txtapellidos'];
$email=$ _POST['txtemai 1'];
$sqi="CALL pa_l nsertar('$nombres', '$apellidos' ,'$email')";
$cnx->query($sql);
header("location: lista.php");
?>
editar.php
<?php
require "conexion.php";
$idpersona=$_GET['id'];
$sqi="SELECT * FROM persona WHERE idpersona=$idpersona";
$res=$cnx->query($sql);
$reg=$res->fetch0bject();
?>
<!DOCTYPE html PUBLIC "-/MJ3C//DTD XHTML 1.0 Transitionaii/EN"
"http://www. w3 .org/TR/xhtml1 /DTD/xhtml1 -transitional.dtd">
<html xmlns="http://www .w3.org/1999/xhtml">
<head>
<title>Editar pgina</title>
</head>
<body>
<form id="form 1" name="form 1" method="post" action="actualizar.php">
<input type="hidden" name="idpersona" value="<?php echo $idpersona?>"/>
<table width="200" border="O">
<tr>
<th colspan="2">Editar persona</th>
</tr>
<tr>
<td>Nombres</td>
<td><input type="text" name="txtnombres" id="txtnombres" value="<?php echo $reg-
>nombres?>"/></td>
</tr>
<tr><td>Apellidos</td>
<td><input type="text" name="txtapellidos" id="txtapellidos" value="<?php echo
$reg->apellidos?>" /></td>
</tr>
<tr><td>E-mail</td>
<td><input type="text" name="txtemail" id="txtemail" value="<?php echo $reg-
>email?>" /></td>
</tr>
<tr>
<th colspan="2"><input type="button" name="button" id="button" value="Cancelar"
onclick="location='lista.php"'/>
<input type="submit" name="button2" id="button2" value="Actualizar" /></th>
</tr>
</table>
</form>
</body>
</html>
actualizar.php
<?php
73
Ingeniera Web Gua didctica JJJ,\
//Archivo : insertar.php
require "conexion.php";
$idpersona=$_POST['idpersona'] ;
$nombres=$_POST['txtnombres'];
$apellidos=$ _POST['txtapellidos'];
$emaii=$_POST['txtemail'] ;
$sqi="CALL pa_Actualizar($idpersona, '$nombres', '$apellidos', '$email')";
$cnx->q uery($sq 1);
header("location: lista.php");
?>
eliminar.php
<?php
require "conexion.php";
$lista=$ _POST['chk'];
$cant=count($1ista) ; // Contando elementos del arreglo
if($cant>O){
foreach($1ista as $indice => $valor){
$cnx->query("CALL pa_Eiiminar($valor)");
}
}
header("location: lista.php") ;
?>
Una pgina o paginas PHP que permitan mostrar el uso de transacciones con PDO.
! Elabora
Una monografa que describa la forma en que se pueden ejecutar sentencias
preparadas, procedimientos almacenados y transacciones en PDO.
74
Ingeniera Web Gua didctica \-~i
IA~toevaluacin 09
! Programar
Un conjunto de pginas PHP para construir un sistema de generacin de exmenes.
Los profesores del Instituto WebMax desean disponer de un sistema con el que
generar los exmenes de test que realizan a los alumnos. Este sistema deber
disponer de las siguientes caractersticas:
El acceso al sistema estar restringido nicamente a usuarios registrados.
Cuando un usuario quiera utilizar el sistema deber proporcionar un
nombre de usuario y una contrasea vlidos .
Un usuario de administracin predeterminado podr dar de alta y de baja
usuarios para los profesores de la academia, as como modificar sus datos.
Los usuarios, una vez registrados en el sistema, podrn llevar a cabo las
siguientes acciones:
Dar de alta una pregunta de examen en el sistema. Adems de
proporcionar el texto de la pregunta, debern indicarse 4 posibles
respuestas . Los usuarios tambin podrn modificar y borrar las
preguntas existentes.
Ver un listado general con todas las preguntas y respuestas
almacenadas en el sistema.
Generar un examen a partir de las preguntas y respuestas
almacenadas en el sistema. Para ello debern indicarse el nmero
de preguntas a incluir en el examen, as como el nmero de
modelos de examen diferentes a generar. Del total de preguntas
almacenadas en el sistema, se elegirn tantas como haya indicado
el usuario, siguiendo un orden aleatorio. El formato de salida de
cada modelo ser de lista numerada, con una numeracin para las
preguntas y otra independiente para las respuestas .
Por ejemplo:
1. Pregunta sobre ...
a. Una respuesta a la pregunta
b. Otra respuesta
c. Otra
d. La ltima de esta pregunta
2. Pregunta sobre otra cosa
75
Ingeniera Web Guia didctica OJ\.J
Introduccin al tema
PHP es un poderoso lenguaje e intrprete, el cual es capaz de acceder a archivos,
ejecutar comandos y abrir conexiones de red en el servidor. Esto hace que cualquier
cosa que sea ejecutada en un servidor Web sea insegura por naturaleza. PHP est
diseado especficamente para ser un lenguaje ms seguro para escribir programas
CGI que Perl o C.
76
Ingeniera Web Gua didctica B
10.1 Seguridad
Un sistema completamente seguro es prcticamente un imposible, de modo que el
enfoque usado con mayor frecuencia en la profesin de seguridad es uno que busque el
balance adecuado entre riesgo y funcionalidad. Si cada variable enviada por un usuario
requiriera de dos formas de validacin biomtrica (como rastreo de retinas y anlisis
dactilar), usted contara con un nivel extremadamente alto de confiabilidad . Tambin
implicara que llenar los datos de un formulario razonablemente complejo podra tomar
media hora, cosa que podra incentivar a los usuarios a buscar mtodos para esquivar
los mecanismos de seguridad.
La mejor seguridad con frecuencia es lo suficientemente razonable como para suplir los
requerimientos dados sin prevenir que el usuario realice su labor de forma natural, y sin
sobrecargar al autor del cdigo con una complejidad excesiva. De hecho, algunos
ataques de seguridad son simples recursos que aprovechan las vulnerabilidades de
este tipo de seguridad sobrecargada, que tiende a erosionarse con el tiempo.
Una frase que vale la pena recordar: Un sistema es apenas tan bueno como el eslabn
ms dbil de una cadena . Si todas las transacciones son registradas copiosamente
basndose en la fecha/hora, ubicacin, tipo de transaccin, etc. pero la verificacin del
usuario se realiza nicamente mediante una cookie sencilla, la validez de atar a los
usuarios al registro de transacciones es mermada severamente.
Cuando realice pruebas, tenga en mente que no ser capaz de probar todas las
diferentes posibilidades, incluso para las pginas ms simples. Los datos de entrada
que usted puede esperar en sus aplicaciones no necesariamente tendrn relacin
alguna con el tipo de informacin que podra ingresar un empleado disgustado, un
cracker con meses de tiempo entre sus manos, o un gato domstico caminando sobre el
teclado. Es por esto que es mejor observar el cdigo desde una perspectiva lgica, para
determinar en dnde podran introducirse datos inesperados, y luego hacer un
seguimiento de cmo esta informacin es modificada, reducida o amplificada.
Internet est repleto de personas que tratan de crearse fama al romper la seguridad de
su cdigo, bloquear su sitio, publicar contenido inapropiado, y por lo dems haciendo
que sus das sean ms interesantes. No importa si usted administra un sitio pequeo o
grande, usted es un objetivo por el simple hecho de estar en lnea, por tener un servidor
al cual es posible conectarse. Muchas aplicaciones de cracking no hacen distinciones
por tamaos, simplemente recorren bloques masivos de direcciones IP en busca de
vctimas. Trate de no convertirse en una.
Hoy en da, las bases de datos son componentes cardinales de cualquier aplicacin
basada en web, permitiendo que los sitios web provean contenido dinmico. Debido a
que informacin considerablemente sensible o secreta puede ser almacenada en una
base de datos, usted debe considerar seriamente la proteccin de sus bases de datos.
Como puede suponer, PHP no puede proteger su base de datos por s solo. Las
siguientes secciones estn dirigidas a servir de introduccin a los conceptos bsicos de
cmo acceder y manipular bases de datos desde scripts PHP.
77
Ingeniera Web Gua didctica JJ.i
Cuando se encuentra activa, la directiva register_globals inyectar sus scripts con todo
tipo de variables, como variables de peticiones provenientes de formularios HTML. Esto
junto con el hecho de que PHP no requiere la inicializacin de variables significa que es
muy fcil escribir cdigo inseguro. Fue una decisin difcil , pero la comunidad de PHP
decidi deshabilitar esta directiva por defecto. Cuando est habilitada, las personas
usan variables sin saber con seguridad de dnde provienen y solo queda asumir.
! Investigar
Casos reales de ataques efectuados a aplicaciones Web alojadas en Internet. Indicar
la fecha, sitio web y tipo de ataque.
! Elabora
Una monografa que describa los diversos ataques de los que puede ser vctima una
aplicacin Web.
1 Autoevaluacin 1 O
! Programar
1. Programar un formulario para el logeo de usuarios, utilizando el cifrado de contraseas
(con MD5) y sesiones.
2. Escriba un formulario que solicite nombres y los almacene en una sesin hasta que el
usuario cierre la sesin .
o El formulario contiene un campo para escribir un nombre (una o varias palabras).
o El formulario muestra los nombres que se han escrito anteriormente.
o La pgina contiene un enlace para cerrar la sesin.
3. Escriba una pgina que compruebe si el navegador permite crear cookies y se lo diga al
usuario (mediante una o ms pginas) .
4. Escriba una pgina que permita crear una cookie de duracin lim itada, comprobar el
estado de la cookie y destruirla.
78
Ingeniera Web Gua didctica t!Jm
Platn
Introduccin al tema
AJAX proviene de los trminos ingleses
Asyncronous Javascript And XML. AJAX no es una tecnologa sino muchas tecnologas,
cada una con sus beneficios y virtudes propias, unindose para formar una poderosa
combinacin .
79
Ingeniera Web Gua didctica rmT.J
11.1 AJAX
AJAX incorpora:
Presentacin basada en estndares usando XHTML y CSS.
Exhibicin e interaccin dinmicas usando el Document Object Model;
Intercambio y manipulacin de datos usando XML and XSL T;
Recuperacin de datos asincrnica usando XMLHttpRequest;
JavaScript poniendo todo junto.
modelo clsico
de a plicadones web
..
. .
90-t!Ct u~J
Nrrr
--.
. 'l .
trant sr:>orte hUJ ( s )
datos XML
> .: ''')',;'!). '"~. l
modelo Ajax
de aplicaciones web
80
Ingeniera Web Guia didctica !m
Utilizando una lnea de tiempo las aplicaciones web seran de la siguiente forma :
Los mayores desafos al desarrollar aplicaciones web que utilizan AJAX, son por el lado
del diseo web, debido a que se olvidar varias limitaciones de la Web, y comenzar a
imaginar un rango ms amplio y rico de posibilidades.
81
Ingeniera Web Gua didctica !11
Actividad N 11 1
: Investigar
Las diversas aplicaciones de AJAX en las aplicaciones web .
: Elabora
Una monografa que describa los 1O ejemplos creados con XAJAX (Framework para
AJAX en PHP) y 1O ejemplos con JQuery.
82
Ingeniera Web Gua didctica llw
i- 1
~-~utoevaluacin 11
! Programar
111
1. Una pgina Web que utilice AJAX que muestre una lista desplegable de
departamentos del Per, y cada vez que se cambie de departamento, la lista
de provincias cambia dinmicamente.
3. Una pgina Web que contenga tres botones y al presionar cada uno, la hoja de
estilos cambiar de acuerdo al botn presionado.
4. Una pgina Web que contenga un formulario con 1O cajas de texto , y cada vez
que el usuario escriba o modifique el contenido de alguna de ellas , se muestre
en la parte inferior de la pgina, la suma de los datos ingresados en las 1O
cajas de texto .
83
Ingeniera Web Gua didctica ijJj:i
Solucionario
1. e
2. 8
1. 8 3. E
2. e 4. e
3. D 5. e
4. D 6.
5. F 7.
6. V 8.
7. V 9.
8. V 10. -
9. V
1. A
2. e
3. e
4. D
5. e
6. D
7. 8
8. V
9. V
10. V
1. e
2. e
3. D
4. e
5. 8
6.
7.
8.
9.
1O. -
1. A
2. A
3. e
4. E
5. e
6. V
7. F
8. V
84
Ingeniera Web Gua didctica m!~
Referencias bibliogrficas
DLpez Quijada J. Domine PHP 5. 1era edicin . Mxico. Alfaomega Grupo Editor.
Suehring, Steve. La Biblia de PHP 6 y MySQL. 1ra edicin. Espaa: Editorial
Anaya Multimedia .
Willard, Wendy. Fundamentos de programacin en HTML. 1era. Edicin .
Colombia. Ed . Me Graw-Hill lnteramericana. 2002 . 625 p Cdigo : 005. 72/W58-
011191
Ors Cabello, Juan Carlos. Navegar en internet diseo de pginas web
interactivas con JavaScript y CSS. 3era . Edicin. Mxico. Ed. Alfaomega Grupo
Editor. 2002 . 355 p.
Valdivia , Dilan. Programacin con Java Script. 1era Edicin . Lima. Ed . Librera
editorial Macro. 2001. 596 p.
Gutirrez Rodrguez , Abraham; Bravo Garca, Gins. PHP a travs de ejemplos.
1era Edicin . Mexico DF . Ed . Alfaomega Grupo Editor. 2004. 412 p.
Celma Gimnez , Matilde; Casamayor Rdenas , Juan Carlos; Mota Herranz, Laura .
Base de datos relacionales. 1era Edicin. Madrid . Ed. Pearson Educacin. 2003.
296p.
Korth, Henry; Silberschatz, Abraham . Fundamentos de base de Datos. 2da
Edicin . Mad rid. Ed. Me Graw-Hill lnteramericana. 1993. 739 p.
85