Desarrollo Aplicaciones Web (Redes)
Desarrollo Aplicaciones Web (Redes)
Desarrollo Aplicaciones Web (Redes)
COMPUTACIN E
INFORMTICA
MANUAL DE APRENDIZAJE
DESARROLLO DE
APLICACIONES WEB
CDIGO: 89001683
Profesional Tcnico
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIN:
OPERACIONES.
1.1. OPERACIN: ANALIZAR EL ALCANCE DEL PROYECTO WEB.
Una de los procesos ms importantes para el crecimiento de una empresa y
medir su productividad, es la gestin de sus proyectos.
El personal encargado de desarrollar este tipo de
proyectos recibe a diario todo tipo de
requerimiento por parte de los usuarios (clientes).
A travs de las consultas recibidas se puede
establecer que las empresas se preocupan
constantemente por encontrar una aplicacin
Creatividad y Diseo.
Una vez definida la estructura de la pgina web y los
elementos que la componen, se procede al diseo
visual del contenido junto a la identidad corporativa de
la empresa, es decir, la integracin del logo, colores
corporativos, etc.
El propsito es conseguir una unin entre diseo y contenido, aumentando el
efecto visual y la eficacia de la pgina web.
Navegabilidad.
Es importante que su pgina web sea fcilmente
navegable, es decir, que el usuario visualice y acceda
a la informacin solicitada, desplazndose fcilmente
por todas las pginas que componen su web.
Es importante que todos los clientes interesados en la
informacin y contenido de su pgina web puedan acceder de una forma fcil a
su pgina a travs de distintos navegadores de Internet, no solamente de un
navegador.
Accesibilidad.
Cada navegador interpreta los cdigos HTML de forma
diferente, es decir, una pgina programada solamente para I.E.
10 no se ver igual en un navegador Chrome, Opera, Mozilla u
otros.
10
Dreamweaver.
Iniciar la aplicacin:
En la ventana de ejecutar ingrese Dreamweaver y dele clic en aceptar.
Crear nuevo sitio:
Dele clic en el men Sitio y luego en Nuevo sitio.
Administrar Sitios.
En esta ventana Ud. podr darle mantenimiento a los sitios que he definido.
11
Dele clic en Nuevo, luego seleccione el tipo de pgina que va a generar y dele
clic en el botn crear.
Modo Dividir.
En esta vista se puede ver parte del diseo y el cdigo al mismo tiempo.
12
El inspector de Propiedades.
En esta ventana se podrn aplicar cambios de formato a la pgina y sus
elementos.
Dreamweaver CS6 es un software fcil de usar que permite crear pginas web
profesionales.
Las funciones de edicin visual de Dreamweaver CS6 permiten agregar
rpidamente diseo y funcionalidad a las pginas, sin la necesidad de
programar manualmente el cdigo HTML.
Se puede crear tablas, editar marcos, trabajar con capas, insertar
comportamientos JavaScript, etc... de una forma muy sencilla y visual.
Adems incluye un software de cliente FTP completo, permitiendo entre otras
cosas trabajar con mapas visuales de los sitios web, actualizando el sitio web
en el servidor sin salir del programa.
13
14
Wampserver.
WampServer es un entorno de desarrollo web para
Windows en el cual se podrn crear aplicaciones web con
Apache, PHP y base de datos en MySQL (motor de base
de datos). Esta herramienta incluye ademas con un
administrador de base de datos PHPMyAdmin con el cual
podremos crear una nueva base de datos e ingresar la
data de las tablas creadas en ella, realizar consultas y
generar scripts SQL, como exportar e importar scripts de base de datos.
WampServer ofrece a los desarrolladores herramientas necesarias para
realizar aplicaciones web de manera local, con un sistema operativo
(Windows), un manejador de base de datos (MySQL), un software de
programacin script web PHP.
WampSever se caracteriza por que puede ser usado de forma libre es decir no
debemos de contar con alguna licencia el cual nos permita el uso de la misma,
ya que pertenece a la corriente de "open source".
FUNDAMENTO TERICO.
Analizar el alcance del proyecto web.
Definir el Alcance del Proyecto es el proceso que consiste en desarrollar una
descripcin detallada del Proyecto y del producto. Esto es fundamental para su
xito, ya que proporciona un entendimiento comn entre los interesados del
Proyecto.
Se elabora a partir de los entregables principales, supuestos y posibles
restricciones al Proyecto que se han documentado en la fase de Iniciacin,
siendo en la fase de Planificacin donde el Alcance del Proyecto se describe y
se define de manera ms especfica, segn se va obteniendo ms informacin
sobre del Proyecto. Durante este proceso, se analizan los riesgos, los
supuestos y las restricciones existentes, actualizando esta informacin segn
sea necesario.
15
16
17
18
19
20
21
22
23
24
25
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIN:
OPERACIONES:
2.1. OPERACIN: INSTALAR EL SERVIDOR
PHP Y BASE DE DATOS.
INSTALACIN.
Para desarrollar la instalacin de WampServer
debemos de bajar la versin con la cual vamos a
trabajar.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
26
27
28
29
30
NOTAS:
Es preferible crear carpetas dentro de la raz www para organizar nuestros cdigos.
Al ejecutar el Wampserver reconocer las carpetas que se encuentran dentro de su
raz principal, las cuales al ejecutarlas buscaran automticamente el archivo con
nombre index.php el cual siempre ser el primero en ejecutarse tal como tambin
pasa en un servidor real en internet.
31
Separar instrucciones.
Como hemos visto en los ejemplos anteriores, cuando finaliza la instruccin o
la funcin aadimos un punto y coma al final de la lnea para separar las
instrucciones y que el servidor pueda ejecutar todo correctamente.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
32
Comentarios.
Si queremos explicar una funcin, marcar un error o avisar de tu ltima
actualizacin podemos usar comentarios. Tenemos varias formas de comentar,
ya sea en una lnea o en varias.
Crea un nuevo archivo php con el nombre comentario1.php y gurdalo en la
carpeta Capitulo 2.
Verifica que los archivos que se van creando se organizan en fichas dentro del
programa Dreamweaver.
NOTA:
Crea un nuevo SITIO local que este asignado a la carpeta Capitulo 2 para que
los archivos estn organizados.
33
Ejercicio 1:
En un formulario preguntaremos al usuario como se llama, pasaremos las
variables a la pgina saludos.php. En saludos.php mostraremos un saludo
diferente en funcin del usuario ingresado.
Formulario
<html>
<head>
<title> Ejemplo If 1</title>
</head>
<body>
<form action="saludos.php" method="get">
Quin eres?<br />
<input type="text" name="nombre" />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>
saludos.php
<html>
<head>
<title> Ejemplo de If </title>
</head>
<body>
<h1> Pgina de bienvenida</h1>
<?php // Empieza el cdigo php
if ($nombre=="senati") { // Si el nombre es senati
echo(" Bienvenido $nombre !!"); // saludo especial
}else {
echo("Hola, $nombre, gracias por visitarnos"); // saludo para los dems
}
?>
</body>
</html>
34
Del ejercicio anterior supongamos que queremos dejar pasar slo al usuario
senati y que ingrese la contrasea, por ejemplo la clave 123.
Formulario:
<html>
<head>
<title> Ejemplo If 3 </title>
</head>
<body>
<form action="saludos.php" method="get">
Quin eres?<br />
<input type="text" name="nombre" /><br />
Y tu Contrasea?<br />
<input type="text" name="pass" />
<input type="submit" name="reset" value=" Enviar " />
</form>
</body>
</html>
saludos.php
<html>
<head>
<title> Ejemplo If 2 </title>
</head>
<body>
<h1> Pgina de bienvenida</h1>
<?php // Empieza el cdigo php
if ($nombre=="senati" and $pass =="123") {
// Si el nombre es senati y la contrasea es 123
echo(Bienvenido $nombre !!"); // saludo especial
}else {
echo("Acceso denegado"); // saludo para los dems
}
?>
</body>
</html>
35
Ejercicio 2:
En este simple ejemplo la condicin if es verdadera por lo que se ejecutara el
cdigo y se mostrara el mensaje X es mejor que Y
<?php
$x=5;
$y=7;
if($x<$y){
echo "X es menor que Y";
}
?>
Ejercicio 3:
Mostrar un mensaje distinto dependiendo de la edad ingresada para cada
persona.
La variable que cambiara de valor ser $edad.
<?php
$edad = 33;
if ($edad > 40) {
echo "S, $edad es mayor que 40.";
} else if ($edad > 35) {
echo "S, $ edad es mayor que 35.";
} else if ($t edad > 30) {
echo "S, $ edad es mayor que 30.";
} else {
echo "No, $ edad es menor que 40, 35 y 30.";
}
?>
36
37
Bucle: Do While
La sentencia Do-While es la misma que la sentencia while, la nica diferencia
es que se evala la expresin al final.
Ejercicio 1:
<?php
$c =1;
do
{
echo $c;
}
while ($c>5);
?>
38
39
Traducido es igual a:
Cantidad es igual a 1, mientras cantidad sea menor que 10 escribe cantidad en
pantalla y despus smale 1 al valor de cantidad.
Ejercicio 2:
Elaborar un script que imprima en pantalla la tabla de multiplicar del 7.
<?php
for ($i=1 ; $i<=10 ; $i++) {
$n= $i*7;
echo "7 x $i = $n <br/>";
}
?>
Bucle: Swich/case
Nos permite ejecutar un bloque de cdigo u otro dependiendo del valor de una
variable.
Ejercicio para mostrar un mensaje dependiendo de la edad seleccionada de la
persona en un formulario.
Formulario:
<h1>Dime tu edad:</h1>
<form action="#" method="post">
<p><input type="radio" name="edad" value="infante" /> Menos de 14 aos.</p>
<p><input type="radio" name="edad" value="adolescente" /> de 15 a 20 aos</p>
<p><input type="radio" name="edad" value="joven" /> de 21 a 40 aos</p>
<p><input type="radio" name="edad" value="maduro" /> de 41 a 60 aos</p>
<p><input type="radio" name="edad" value="mayor" /> ms de 60 aos.</p>
<p><input type="submit" value="resultado" />
</form>
40
Despus en cdigo php escribimos primero la funcin que suma los dos
nmeros, despus pasamos los dos nmeros a la funcin y mostramos el
resultado en pantalla.
function suma($a,$b) {
$c=$a+$b;
return $c;
}
$n1=$_POST['n1'];
$n2=$_POST['n2'];
$n3=suma($n1,$n2);
echo "Sumar: $n1 + $n2 =$n3"
41
42
43
44
45
46
47
Separar instrucciones.
Como vemos en el ejemplo anterior, cuando finaliza la instruccin o la funcin
aadimos un punto y coma al final de la lnea para separar las instrucciones y
que el servidor pueda ejecutar todo correctamente. Es obligatorio su uso
Comentarios.
Si queremos explicar una funcin, marcar un error o avisar de tu ltima
actualizacin podemos usar comentarios. Tenemos varias formas de comentar,
ya sea en una lnea o en varias.
<?php
// Esto es un comentario de una linea
echo "Hello world";
/* Esto es un
comentario de
varias lneas */
?>
NOTAS:
a. Proceso.
Las paginas PHP son interpretadas por parte del servidor y como resultado se
devuelve al cliente codigo HTML que es lo unico que sabe interpretar el
navegador, es decir las paginas PHP dependen del servidor y no del navegador
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
48
Servidor
Servidor
Servidor
Cliente
Solicita una
Pgina PHP
Recibe la
peticin
Procesa la
Pagina PHP
Devuelve al
Cliente HTML
Visualiza la Pagina
el en Browser
b. Observaciones.
Las etiquetas que indican la presencia del cdigo Php son "<?php" y "?>", sin
embargo es posible configurar Php para que reconozca incluso "<?" y "?>" que
son ms simples de escribir.
Las instrucciones en el cdigo Php tiene que estar entre las etiquetas "/*" y "*/".
Otro tipo de comentario se da poniendo la etiqueta "#" al comienzo de una
lnea. La lnea entera no se pondr en marcha.
Las instrucciones Php para devolver el cdigo Html son:
PRINT("<!--- html codigo --->");
echo("<!--- html codigo --->");
49
Funcin
==
!=
<
>
<=
>=
Estos operadores son fciles de utilizar, pues sus funciones son de matemtica
simple. El operador == indica que dos variables son identicas, el != indica que
son completamente contrarios. Por otro lado, el < indica menor que, <= menor
o igual que, > mayor que y >= mayor o igual que. Veremos tan solo un ejemplo
de este tipo para ver su funcionamiento.
Ejemplo PHP:
<?php
$cadena = 24;
if( $cadena <= 88 ) {
// Si la variable $cadena es mayor o igual a 88 se ejecutar "verdadero"
echo "Correcto";
} else {
// Si la variable $cadena es menor a 88 se ejecutar "falso"
echo "Todo mal";
}
?>
Resultado PHP:
Correcto
Operadores ms utilizados en PHP.
Operadores aritmticos.
+ Suma dos valores
- Resta dos valores (o pasa a negativo un valor)
* Multiplica dos valores
/ Divide dos valores
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
50
Como vern se utiliz el operador condicional menor que para comprobar que
una variable era menor que otra. Tambin se puede hacer lo siguiente:
51
Dobles:
Las estructuras condicionales dobles permiten elegir entre dos opciones o
alternativas posibles en funcin del cumplimiento o no de una determinada
condicin. Se representa de la siguiente forma:
Donde:
Si: Indica el comando de comparacin.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
52
53
Resultado:
Estructura do..while
Es un ciclo repetitivo en el cual la condicin se evala al final del mismo. Su
formato es el siguiente:
do{
instruccin_1;
instruccin_2;
:
instruccin_n;
}while (condicin);
En este caso se observa que las instrucciones dentro del ciclo se procesan al
menos una vez, ya sea que la condicin sea falsa o verdadera. Por lo tanto, en
este ciclo, las instrucciones se procesarn de uno a n veces.
Ejemplo Prctico:
Mostrar en pantalla todos los nmeros divisibles por 7 entre 100 y 500.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
54
Estructura for
Es uno de los ciclos ms prctico para determinadas situaciones. Se utiliza
generalmente cuando se tiene bien especificada la cantidad de repeticiones a
realizar. Se diferencia de los anteriores, en que se debe incluir en l, una
variable, la cual se incrementa o decremento en forma automtica.
Su formato es el siguiente:
for ($variable=ValorInicial; Condicion; Incremento){
Intruccin_1;
:
Intruccin_n;
}
55
Resultado:
56
Resultado:
El tringulo de lados 12, 16 y 20 es rectngulo.
PHP no distingue entre maysculas y minsculas en los nombres de las
funciones.
<?php
// ESTA ES LA DEFINICIN DE LA FUNCIN calculaHipotenusa
function calculaHipotenusa($arg1, $arg2)
{
$hipotenusa = sqrt($arg1*$arg1+$arg2*$arg2);
return $hipotenusa;
}
// ESTO ES UN EJEMPLO DE USO DE LA FUNCIN calculaHipotenusa
$cateto1 = 12;
$cateto2 = 16;
$hipotenusa = CALCULAHIPOTENUSA($cateto1, $cateto2);
print "<p>El tringulo de lados $cateto1, $cateto2 y $hipotenusa es rectngulo.</p>\n";
?>
La instruccin RETURN.
Cuando invocamos una funcin, la ejecucin del programa pasa a ejecutar las
lneas de cdigo que contenga la funcin, y una vez terminado, el programa
continua su ejecucin desde el punto en que fu llamada la funcin.
Existe una manera de terminar la ejecucin de la funcin aunque an haya
cdigo por ejecutar, mediante el u haya cdigo por ejecutar, mediante el uso de
la instrucin return terminamos la ejecucin del cdigo de una funcin y
devolvemos un valor. Podemos tener varios return en nuestra funcin, pero por
lo general, cuantos ms return tengamos menos reutilizable ser nuestra
funcin.
<?php
function mayor ($x, $y){
$msg = "";
57
Include y require.
La clusula require("archivo"); se sustituye en el cdigo antes de que este se
ejecute por el contenido del archivo, que puede ser un archivo local o una URL.
Esta sustitucin se realiza una sola vez, mientras se est preprocesando el
contenido del archivo .php y antes de ejecutarlo.
La clusula include("archivo"); tambin se sustituye por el contenido de archivo,
pero en lugar de realizarse una nica vez durante el preproceso del archivo, se
realiza durante la ejecucin, cada vez que el flujo del programa llega a esa
lnea.
Estas 2 clusulas son de gran utilidad a la hora de necesitar unas mismas
lneas de cdigo en varios archivos (por ejemplo, una funcin que valide
ciertos datos, o que muestre la cabecera y pie de las pginas). En lugar de
copiar ese cdigo en todos los archivos que lo necesiten, se pone en un
archivo que es "incluido" por el resto.
Diferencias.
Aunque las clausulas include y require parecen actuar de la misma manera en
realidad no es as. Estas son 2 grandes diferencias que poseen.
Optimizacin de los accesos a disco: Imagnese un cdigo en el que
dependiendo de una serie de condiciones, se deba incluir o no otros archivos.
Con require se cargaran TODOS los archivos SIEMPRE. Con include,
nicamente aquellos que se vayan a utilizar.
Flexibilidad. Con include podemos acceder a archivos cuyo nombre tenemos
en una variable que podemos ir cambiando en tiempo de ejecucin, mientras
que con require siempre se accede al mismo archivo.
Tambin existen las funciones include_once y require_once, que nos aseguran
que un determinado archivo slo ser procesado una vez, en caso de que en
sucesivos includes vuelva a aparecer.
58
59
biblioteca_2.php
<?php
$i = $i + 10;
?>
Programa:
<?php
include "biblioteca_1.php";
print "<p>Ahora \$i vale $i</p>\n";
include "biblioteca_2.php";
print "<p>Ahora \$i vale $i</p>\n";
include "biblioteca_2.php";
print "<p>Ahora \$i vale $i</p>\n";
?>
Resultado:
Ahora $i vale 1
Ahora $i vale 11
Ahora $i vale 21
60
61
EQUIPOS Y MATERIALES:
LOS
DISTINTOS
CONTROLES
EN
UN
62
Resultado en el navegador:
Vista cdigo:
Verifique que el cdigo se ha generado de forma automtica.
63
Resultado en diseo:
Resultado en el navegador:
Vista cdigo:
Verifique que el cdigo generado de forma automtica:
64
PASO 2: Seleccione el
campo de texto y
active
la
opcin
Contrasea del panel
de propiedades.
Adicionalmente puede agregar los atributos para la cantidad mxima de
caracteres (Car. mx) que se puede ingresar y el tamao (Ancho car) de
cuantos caracteres se pueden visualizar, tal como lo muestra la imagen
siguiente:
Resultado en el navegador:
65
Nos podemos dar cuenta que al trabajar en modo diseo el programa general
el cdigo de forma automtica.
66
</script>
La segunda forma para usar JavaScript es definir JavaScript en un archivo
externo. Los archivos de JavaScript son archivos de texto guardados con la
extensin .js.
67
PASO 3: Crear una nueva pgina con el nombre javascript1.html la cual har
referencia al archivo mensaje.js y tendr el cdigo tal como lo muestra la
siguiente imagen:
NOTA:
*El archivo mensaje.js debe de estar almacenado en la misma ruta que el archivo
javascrip1.html, si estuviera en otro lado habra que indicar la ruta en el src del archivo
que lo invoca.
*El cdigo javascript puede ejecutarse directamente en una pgina con extensin
PHP.
68
Nombre
Ejemplo
5+6
7-9
6*3
4/8
7%2
++
Suma
Substraccin
Multiplicacin
Divisin
Mdulo: el resto
despus de la
divisin
Incremento.
--
Decremento.
a--
Invierte el signo de
un operando.
-a
a++
Descripcin
Suma dos nmeros
Resta dos nmeros
Multiplica dos nmeros
Divide dos nmeros
Devuelve el resto de dividir
ambos nmeros, en este ejemplo
el resultado es 1
Suma 1 al contenido de
una variable.
Resta 1 al contenido de una
variable.
Invierte el signo de un operando.
69
70
NOTA: Recuerden que para que todo funcione tenemos que mandar llamar la
librera jquery, en el ejemplo anterior se est llamando desde una librera
alojada en un servidor.
PASO 2:
Crear un archivo con el nombre tabla.php el cual tendr el siguiente cdigo.
<?php
$nombres=array("hugo","marlene", "july", "melisa");
$tabla="<table style='text-align:center;margin-top:10px;' border='1'>
<tr>
<td>No. de Alumno</td>
<td>Nombre del Alumno</td>
</tr> ";
$num=1;
foreach($nombres as $td)
{
$tabla.="<tr>
<td>$num</td>
<td>$td</td>
</tr>";
$num++;
}
$tabla.='</table>';
71
RESULTADO:
Al darle clic en el vnculo ver tabla de
alumnos automticamente carga el
resultado de la pgina tabla php en la
misma pgina ajax1.php sin recargarla,
el resultado lo posiciona dentro de la
capa con el id "tabla".
Al darle clic en el vnculo Borrar tabla debe de desaparecer.
Ejercicio de clculo con PHP, Ajax y jQuery.
Descrito de una manera muy resumida, AJAX es una tecnologa que nos
permite realizar acciones en una pgina web que necesiten respuesta del
servidor sin recargarla. Con ello conseguimos que nuestra web sea dinmica y
por tanto obtener un diseo ms atractivo.
El ejercicio se compone de dos archivos: un archivo donde mostraremos los
formularios con datos de entrada y otro con el archivo de procesamiento.
PASO 1:
Elaborar un archivo con el nombre ajax2.php e ingresar el siguiente cdigo:
<html>
<head>
<title>Ejercicio AJAX, PHP Y JQUERY</title>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script>
function realizaProceso(valorCaja1, valorCaja2){
var parametros = {
"valorCaja1" : valorCaja1,
"valorCaja2" : valorCaja2
};
$.ajax({
data: parametros,
url: 'ejemplo_ajax_proceso.php',
type: 'post',
72
OBSERVACIN:
En este cdigo, utilizamos los id de las cajas de texto para pasarle sus valores
a la funcin realizaProceso. En esta funcin recogemos los valores de entrada
en un array parmetros y enviamos mediante AJAX especificando el parmetro
data (datos que mandamos), url (direccin del archivo de proceso) y type
(POST o GET).
Por ltimo vemos que tenemos dos eventos: beforeSend y success donde
podemos indicar la accin a realizar mientras se procesan los datos y tras
terminar de procesarlos (en este caso jugar con el contenido HTML del id
resultado).
Vista diseo:
73
NOTA:
Tenga cuidado al escribir la ruta a la librera jQuery, debe de estar en la misma
raz donde se encuentra el formulario, caso contrario debe de indicar la ruta. Se
puede descargar desde la siguiente URL:
http://jquery.com/download/
Existen varios versiones del archivo jquery.
PASO 2:
Creamos el archivo ejemplo_ajax_proceso.php, el cual se encarga de sumar
los datos recibidos por POST. Su cdigo es el siguiente:
<?php
$resultado = $_POST['valorCaja1'] + $_POST['valorCaja2'];
echo $resultado;
?>
PASO 3:
Ejecutar el archivo ajax2.php en el servidor local.
Al cargar la pgina podemos ver que los campos de texto tiene el valor 0 por
defecto, as como el resultado.
74
Segundos despus:
75
Modo diseo
En ejecucin
76
PASO 2:
Creamos un archivo Javascript con el nombre validar.js e ingresamos el
siguiente cdigo.
// JavaScript Document
//Funcin que verifica campos del formulario vacos
function Validar(f) {
if (f.name.value=="") {
alert("Por favor escriba su Nombre completo");
f.name.focus();
return false;
}
if (f.email.value=="") {
alert("Por favor escriba su direcci\xF3n de correo electr\xF3nico");
f.email.focus();
return false;
}
if (f.subject.value=="") {
alert("Por favor escriba el asunto de su Mensaje");
f.subject.focus();
return false;
}
if (f.message.value=="") {
alert("Por favor escriba su Mensaje.");
f.message.focus();
return false;
}
}
77
NOTA:
Se muestra solo parte del cdigo de la pgina entre las etiquetas
<BODY></BODY>.
<body>
<form method="POST">
<label for="nombre">Nombre: </label>
<input name="nombre" type="text" />
78
79
FUNDAMENTO TERICO:
Trabajar con los distintos controles en un formulario.
Se denomina formulario al escrito o libro (en ambos casos puede ser tanto
virtual como impreso) que contiene frmulas referentes a una cierta ciencia o
disciplina. Las frmulas son modelos de resolucin, que se valen de palabras,
o nmeros y smbolos matemticos. Por ejemplo: un formulario de ecuaciones
matemticas.
En el campo laboral, los formularios son muy utilizados en el anlisis de la
contratacin de un nuevo empleado, para saber datos
generales del mismo, como su nombre y apellido, edad,
sexo, y condiciones de salud, y datos que influyan en
mayor medida en el trabajo que se realizar, como
experiencias laborales anteriores, conocimiento
de
otros idiomas, y distintas aptitudes que podran definir si
la persona es apta para el empleo.
Un formulario es tambin, un documento, impreso o en
un soporte virtual, que contiene campos en blanco
(casilleros) para completar determinada informacin o
elegir opciones dadas, con el fin de trasmitir la misma
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
80
NOTA:
El formulario, junto con la lnea de comandos, fue uno de los primeros estilos de
interaccin que se usaron para comunicarse con los ordenadores y ha perdurado
hasta nuestros das. Pero es curioso que siendo tan utilizados nos encontremos tantas
veces con malos diseos.
Elementos de formulario
Los elementos de formulario como botones y cuadros de texto tambin se
denominan "campos de formulario" y "controles de formulario". La mayora de
controles se crean con la etiqueta <input>, por lo que su definicin formal y su
lista de atributos son muy extensas:
81
Etiqueta
Atributos
comunes
Atributos
propios
<input>
bsicos, internacionalizacin, eventos y foco
src = "url" - Para el control que permite crear botones con imgenes,
indica la URL de la imagen que se emplea como botn de formulario
Tipo
de En lnea y etiqueta vaca
elemento
Descripcin
82
83
84
85
86
87
88
El primer paso es una solicitud que se formula desde una pgina web al servidor
donde reside el CGI. A continuacin el CGI solicita a la base de datos la informacin
adecuada y es respondido. Finalmente se envan los datos, ya formateados para ser
comprensibles, a la pgina web, donde son consultados por el usuario.
Caractersticas de Javascript.
Es simple, no hace falta tener conocimientos de programacin para poder
hacer un programa en JavaScript.
Maneja objetos dentro de nuestra pgina Web y sobre ese objeto podemos
definir diferentes eventos. Dichos objetos facilitan la programacin de pginas
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
89
90
91
92
93
Incremento y decremento
Estos dos operadores solamente son vlidos para las variables numricas y se
utilizan para incrementar o decrementar en una unidad el valor de una variable.
Ejemplo:
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
94
95
variable
!variable
true
false
false
true
96
cantidad = 2;
vacio = !cantidad; // vacio = false
mensaje = "Bienvenido";
mensajeVacio = !mensaje; // mensajeVacio = false
La negacin lgica se obtiene prefijando el smbolo! al identificador de la
variable.
Matemticos.
JavaScript permite realizar manipulaciones matemticas sobre el valor de las
variables numricas. Los operadores definidos son: suma (+), resta (-),
multiplicacin (*) y divisin (/). Ejemplo:
var numero1 = 10;
var numero2 = 5;
resultado = numero1 / numero2; // resultado = 2
resultado = 3 + numero1;
// resultado = 13
resultado = numero2 4;
// resultado = 1
97
98
99
100
101
Evento onSubmit.
La validacin de campos de formulario se basa en interceptar el momento en
que el usuario realiza el envo de los datos del formulario (es decir, pulsa sobre
el botn de enviar). Como es sabido, el botn de envo de datos se codifica con
HTML mediante un tipo especial de objeto de formulario, llamado submit. El
siguiente ejemplo muestra un formulario con un botn de envo:
<form name="miFormulario" action="mailto:[email protected]">
<input type="submit" value="Enviar" name="enviar">
</form>
102
El objeto this.
Normalmente, el evento onSubmit ejecuta una funcin de validacin, como en
el siguiente ejemplo:
<form name="miFormulario" action="mailto:[email protected]"
onSubmit="return Valida(this);">
<input type="submit" value="Enviar" name="enviar">
</form>
103
104
Action:
El atributo action indica el tipo de accin que va a realizar el formulario.
Anteriormente indicamos que la informacin poda enviarse a un correo
electrnico o a un programa que la gestione. Es mediante esta etiqueta que se
gestionan los formularios.
Si queremos que el formulario se enve a un correo, la accin quedara escrita
de la siguiente manera:
<form action=mailto:[email protected]></form>. Este tipo de
envos se utilizaran para casos de formularios de contacto, de sugerencias,
etc.
Si lo que queremos es que la informacin sea enviada a un programa que la
gestione, debemos indicarle en la accin, la url del archivo donde se encuentra
ubicado el programa que la gestionar. Lo escribiramos de la siguiente
manera:
<form action="direccin completa del archivo que la gestionar" ...> </form>.
Este tipo de envos se utilizaran para casos de formularios de encuestas,
cuestionarios, etc.
105
Enctype:
Mediante este atributo indicaremos la forma en la que viajar la informacin
que se mande a travs del formulario.
La forma puede ser de varios tipos, aunque el ms comn es que la
informacin se enve como texto plano (enctype="text/plain").
106
107
A diferencia del mtodo get, los datos enviados por el mtodo post no tienen
un lmite respecto a la cantidad de variables enviadas en una misma
peticin, o a la longitud de sus valores.
Desventajas? Varias:
Otra desventaja: si el usuario guarda en sus favoritos una pgina que recibi
datos mediante post, cuando utilice ese favorito, ya no estar disponible los
datos que envi la primera vez desde un formulario y, por lo tanto, el
resultado que obtendr ya no ser el mismo (o obtendr el tpico mensaje de
alerta).
108
3. Mediante el mtodo Post enve todos los datos a una pgina PHP la cual
imprimir todos los datos del formulario en maysculas.
NOTA:
El diseo de la pgina php del resultado queda a su criterio.
109
NOTA:
La validacin debe de ejecutarse para que no permita el ingreso de nmeros
negativos ni el numero cero, indicando mediante un mensaje distinto para cada caso al
usuario.
110
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIN:
111
RESULTADO:
Al ejecutar el archivo inicio.php en el
servidor local, podemos ver como se
muestra el mensaje de verificacin de la
conexin que se encontraba en el archivo
incluido conex.php.
112
113
114
115
116
117
118
Resultado:
119
<html>
<head>
<title>CONSULTA</title>
</head>
<body>
<H1>FORMULARIO DE CONSULTA</H1>
<FORM ACTION="proceso_consulta1.php" method="post">
<TABLE>
<TR>
<TD width="117">Ingrese codigo:</TD>
<TD width="144"><input type="text" name="codigo" id="codigo"></TD>
<TD width="66"><input type="submit" name="accion" value="Consultar"></TD>
</TR>
</TABLE>
</FORM>
</body>
</html>
120
121
Resultado:
NOTA:
Si desea agregar un mensaje personalizado que aparezca solo cuando el servidor no
encuentre ningn registro con el cdigo ingresado, puede agregar la siguiente
validacin.
Ingrese el siguiente cdigo antes de cerrar la conexin, tome como referencia esta
lnea: mysql_close($conectar);
if ($numero_filas==0){
$mensaje = "<font color='#FF0000' size='+1'>
No se encontraron coincidencias con el codigo $var_codigo
</font>";
}else{
$mensaje =NULL;
}
122
123
Consulta para mostrar los registros que coincidan con un texto ingresado
en el formulario.
Para este ejercicio nos conectaremos a la base de datos de prueba
northwind.
Por ejemplo mostrar todos los clientes cuyo nombre de empresa con la letra a.
PASO 1: Creamos el formulario
para ingresar el criterio a buscar.
<html>
<head>
<title>CONSULTA</title>
</head>
<body>
<H1>FORMULARIO DE CONSULTA</H1>
<FORM ACTION="listado2.php" method="post">
<TABLE>
<TR>
<TD width="117">Ingrese el nombre:</TD>
<TD width="144"><input type="text" name="nombre" id="nombre"></TD>
<TD width="66"><input type="submit" name="accion" value="Consultar"></TD>
</TR>
</TABLE>
</FORM>
</body>
</html>
124
Resultado:
125
pp
126
127
ELIMINAR REGISTROS.
En el siguiente ejercicio crearemos un formulario que tendr un control campo
de texto, el cual servir para ingresar el cdigo del usuario a eliminar, este
formulario se conectara al archivo que tiene la secuencia sql para eliminar uno
o ms registros.
El formulario de eliminacin estar validado para que no permita ejecutar el
botn mientras el campo de texto este vaco.
OBSERVACION:
Para modificar la estructura de la tabla agregndole un campo llave puede hacer lo
siguiente:
PASO 1:
Diseo el siguiente formulario y
codifique:
<html>
<head>
<title>CONSULTA</title>
<script Language="JavaScript">
function validar(form1){
if (formulario1.codigo.value.length < 1){
alert("Ingrese el CODIGO");
formulario1.codigo.focus();
return (false);
}
if (confirm('Esta seguro de ELIMINAR?')){
}else{
128
129
ACTUALIZAR REGISTROS.
En el siguiente ejercicio crearemos un
formulario que tendr un control campo de
texto, en este campo ingresaremos el cdigo del registro que deseamos
actualizar sus datos, luego de ingresar y ejecutar este formulario, aparecern
los datos en un nuevo formulario el cual nos permitir modificar los datos para
luego ejecutar este nuevo formulario y proceder a actualizar los cambios de la
base de datos.
Este ejercicio consta de 3 archivos sin tomar en cuenta la conexin.
Formulario para ingresar el cdigo.
Formulario de actualizacin de datos.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
130
131
132
133
RESULTADO EN EJECUCION:
Ejecutamos el primer formulario de consulta:
Modificamos los valores
de los campos de texto
y le damos clic en el
botn Aceptar.
134
FUNDAMENTO TERICO:
135
Campo1
Campo2
Campo3
1 Registro
Valor
Valor
2 Registro
Valor
Valor
De esta manera cada vez que insertemos datos dentro de una tabla se ir
creando una nueva columna con los datos. Por ejemplo si tuvisemos una tabla
que guardara el nombre, el apellido y la edad de distintas personas la
visualizaramos as luego de que 3 personas hayan ingresado sus datos:
Nombre
Apellido
Edad
Bryam
Alva
15
Sebastin
Chanca
12
Camila
Rivera
10
Oracle
Mysql
MS SQL Server
Acces
136
137
138
139
140
5.0
5.1
2.0
Estado de desarrollo.
Activo
Activo
Slo
mantenimiento
Ciclo de vida.
Activo
Activo
Obsoleto
No
Interfaz POO.
No
Interfaz procedimental.
No
No
No
Conexiones persistentes.
141
No
No
No
No
La mayora
No
No
La mayora
No
2. Elegir un Conector.
En la documentacin de MySQL, el trmino conector hace referencia al
software que permite a una aplicacin conectarse a un servidor de bases de
datos MySQL. MySQL proporciona conectores para ciertos lenguajes, entre
ellos PHP.
Si una aplicacin de PHP necesita comunicarse con un servidor de bases de
datos, necesitar escribir el cdigo PHP que realice tareas tales como conectar
al servidor de bases de datos, realizar consultas y otras funciones relacionadas
con bases de datos. Es necesario tener un software instalado en el sistema que
proporcione a la aplicacin en PHP la API, que manejar la comunicacin entre
el servidor de bases de datos y la aplicacin, posiblemente empleando en caso
necesario otras bibliotecas. A este software generalmente se le conoce como
conector, dado que permite a una aplicacin conectar con un servidor de bases
de datos.
3. Elegir un Conector.
Un driver es un software diseado para comunicarse con un tipo especfico de
servidor de bases de datos. Podra tambin invocar a una biblioteca, como por
ejemplo la Biblioteca Cliente de MySQL o el Driver Nativo de MySQL. Estas
bibliotecas implementan el protocolo de bajo nivel que se utiliza para
comunicarse con el servidor de bases de datos.
A modo de ejemplo, la capa de abstraccin de bases de datos Objetos de
Datos de PHP (PDO) utilizar alguno de los drivers para bases de datos
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
142
143
144
EJEMPLO CONEXIN 2:
<?php
$usuario = "desarrolloweb";
$password = "123456";
$BD = "northwind"; //El nombre de la base de datos
try{
$conn = new PDO('mysql:host=localhost;dbname=northwind', $usuario, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Conectado satisfactoriamente al servidor";
}catch(PDOException $e){
echo "ERROR: " . $e->getMessage();
}
?>
EJEMPLO CONEXIN 3:
Creamos un archivo en nuestra raz principal del servidor php con el nombre
logeo.php y agregamos el siguiente cdigo:
<?php
145
146
147
Usuario.classs.php
<?php
# CLASE USUARIO PARA GESTIONAR A LOS USUARIOS DEL SISTEMA
require_once 'mysql.class.php';
148
NOTA:
Para los ejemplos anteriores
se us una base de datos de
prueba muy utilizada en
distintos
cursos
de
programacin y administracin
de base de datos llamada
northwind.
Puede descargarlo de forma
gratuita del siguiente link:
https://code.google.com/p/nort
hwindextended/downloads/detail?name=Northwind.MySQL5.sql
149
Esto crear una Tabla dentro de la base anteriormente especificada con USE,
esta tabla tendr los campos:
campo1, que soportara datos enteros (int) de 6 caracteres y se autoincrementar lo que quiere decir que es un campo que se completa solo con un
valor que aumenta a medida que ms datos se ingresen.
campo2 que soporta texto de mximo 50 caracteres y no puede estar vaca (no
puede ser nula)
campo3 que puede ser nulo, y que soporta una cadena de texto de mximo 4
caracteres.
Adems se especifica que el campo1 ser la clave primaria, lo que quiere decir
que es campo que encabeza esa tabla.
campo3)
VALUES
150
Consultar:
Luego de que tenemos todos nuestros datos guardados en una tabla lo ms
seguro es que luego necesito consultarle a la tabla cuales son los datos que
esta tiene para esto tenemos diferentes formas.
Seleccionar:
SELECT campo1, campo2 FROM nombretabla;
Esto nos devolver todos los datos ingresados en los campos campo1 y
campo2 de la tabla nombretabla
Esta consulta nos dar como resultado todos los datos de cualquier campo de
la tabla nombretabla que cumplan la condicin de que su campo1 tenga el valor
Condicin
Tambin se puede usar la palabra LIKE para encontrar resultados que no sean
idnticos a lo pedido, sino que solo lo contengan.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
151
NombreTabla.NombreColumna.
152
SELECT *
FROM Tabla1 T1
INNER JOIN Tabla2 T2a ON T1.Campo=T2a.Campo
INNER JOIN Tabla2 T2b ON T1.Campo=T2b.Campo
Al igual que al borrar datos, nos ser muy til usar campos de auto incremento
para reconocer registros nicos. Por ejemplo ocupando nuevamente la tabla
del ejemplo de las Bases de Datos si quisiramos cambiar la edad de Pedro
podramos usar:
153
$conexion=mysql_connect("localhost","myuser","mypass");
mysql_select_db("nombreBaseDeDatos",$conexion);
$resultados = mysql_query("SELECT
campo1='condicin';",$conexion);
FROM
nombretabla
WHERE
mysql_close($conexion);
154
155
Cdigo
Nombres
Apellido_paterno
Apellido_materno
Fecha_Nacimiento
Distrito
Tabla Distritos
Campos:
Cdigo
NombreDistrito
4. Crear una pgina reporte que liste todos los alumnos ordenados por
apellido paterno de forma ascendente y que muestre solamente los campos:
(Apellido paterno, materno y el nombre del distrito).
5. Crear una pgina reporte que muestre solamente los siguientes campos:
(Distrito, cuntos alumnos existen por distrito).
6. Crear una pgina reporte que muestren solamente los nombres, apellidos y
las edades de los alumnos (La edad se calcula en base a la fecha actual de
consulta y fecha de nacimiento registrada)
NOTA: Todos los formularios deben de estar validados para que no se puedan
ejecutar si no se introduce ningn valor en los campos de texto respectivos.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
156
EQUIPOS Y MATERIALES:
ORDEN DE EJECUCIN:
157
158
159
Ejecucin:
Abrimos el archivo formulario.php en nuestro servidor, ingresamos los datos y
pulsamos el botn enviar.
NOTA:Al inicio de la aplicacin, si le damos clic en el icono ver reporte sin haber
creado la sesin, aparecer el siguiente error:
160
NOTA:
El atributo enctype="multipart/form-data" tiene que estar siempre que queramos subir
un fichero, de lo contrario no se subir ningn archivo. Es bastante habitual olvidarse
de este atributo y perder un valioso tiempo viendo qu pasa.
161
162
163
NOTA:
Para este ejemplo se ha creado el archivo delimitado por comas desde Excel,
el cual tiene el siguiente contenido:
164
Al darle clic en el vnculo Ver contenido del archivo csv SIN FORMATO se
mostrara la siguiente pgina.
NOTA: Todas las pginas tienen vnculos que permiten navegar por la aplicacin.
165
Cdigo correlativo
Cdigo del alumno
Cdigo del curso
Nota1
Nota2
Promedio
Fecha registro
Cdigo
Nombres
Usuario
Clave
Nivel
166
167
Tabla cursos:
CREATE TABLE cursos(
codigo_cur char(5) NOT NULL,
nombres_cur VARCHAR(30) NOT NULL,
PRIMARY KEY (codigo_cur)
);
Tabla notas:
CREATE TABLE notas(
id INT NOT NULL AUTO_INCREMENT,
codigo_al char(5) NOT NULL,
codigo_cur char(5) NOT NULL,
nota1 double NOT NULL,
nota2 double NOT NULL,
promedio NOT NULL,
PRIMARY KEY (id)
);
Tabla usuarios:
CREATE TABLE usuarios(
id_usuario INT NOT NULL AUTO_INCREMENT,
nombre_usuario VARCHAR(30) NOT NULL,
usuario VARCHAR(10) NOT NULL,
clave varchar(10) NOT NULL,
nivel CHAR(1) NOT NULL,
PRIMARY KEY (Id_usuario)
168
NOTA:
Conexin Persistente:
Las conexiones persistentes son enlaces que no se cierran cuando termina la
ejecucin del archivo de comandos. Cuando se pide una conexin persistente, PHP
comprueba si hay ya una conexin persistente idntica (que permaneca abierta desde
antes) - y si existe, la usa. Si no existe, crea un enlace. Una conexin 'idntica' es una
conexin que se abri hacia el mismo "host", con el mismo nombre de usuario y la
misma contrasea (donde sea aplicable).
PASO 4: Estructuramos
las carpetas de nuestro
servidor para alojar a
los archivos necesarios
para nuestra aplicacin
web.
mysql_close($conectar);
?>
169
PASO 7: Elaboramos los formularios Distritos y Cursos y los archivos php para
el registro de las tablas segn corresponda.
a. Formulario Distrito
(formulario_registrar_distrito.php).
<html>
<head>
<title>REGISTRO</title>
<script Language="JavaScript">
<?php include("javascript/validar.js"); ?>
</script>
</head>
170
171
b. Formulario Cursos
(formulario_registrar_distrito.php).
<?php
$var_codigo = $_POST['codigo'];
$var_nombre = $_POST['nombre'];
include("conexion\conexion1.php");
$conectar=Conectarse();
mysql_query("insert into cursos
(codigo_cur, nombres_cur)
values
('$var_codigo', '$var_nombre')",$conectar);
echo mysql_error();
if (@mysql_affected_rows($conectar)){
echo "<br>Ingreso correcto.";
}
?>
<html>
<head>
<title>REGISTRO DISTRITO</title>
</head>
<body>
<p>SE REGISTRO EL DISTRITO <?php echo $var_nombre; ?> DE FORMA
CORRECTA.
</p>
<p><a href="formulario_registrar_curso.php" target="_parent">Formulario Registrar
Curso</a></p>
<p><a href="operaciones.php" target="_parent">Panel Principal</a></p>
</body>
</html>
172
NOTA:
Para registrar el distrito se insertara un campo Lista/Men, el cual mediante
programacin PHP se conectara a la tabla distritos.
Al seleccionar el nombre del distrito, internamente se almacenara solo el cdigo del
mismo.
173
174
175
apematerno_al,
nombres_al,
values
('$var_codigo', '$var_paterno', '$var_materno', '$var_nombre',
'$var_distritos', '$fecha_nac', '$var_telefono', '$var_correo')",$conectar);
echo mysql_error();
if (@mysql_affected_rows($conectar)){
echo "<br>Ingreso correcto.";
}
?>
<html><head><title>REGISTRO ALUMNO</title></head>
<body>
<p>SE REGISTRO EL ALUMNO <?php echo $var_nombre." ".$var_paterno."
".$var_materno; ?> DE FORMA CORRECTA.
</p>
<p><a href="formulario_registrar_alumno.php" target="_parent">Formulario Registrar
Alumno</a></p>
<p><a href="operaciones.php" target="_parent">Panel Principal</a></p>
</body>
</html>
176
177
178
NOTA:
La validacin Javascript en este caso se encuentra en la misma pgina.
<html>
<head>
<title>REGISTRO</title>
<script Language="JavaScript">
function validar(formulario1) {
if (formulario1.nombre.value.length < 1){
alert("Ingrese el codigo");
miformulario.nombre.focus();
return false;
}
if (formulario1.usuario.value.length < 1){
alert("Ingrese el usuario");
miformulario.usuario.focus();
return false;
}
if (formulario1.clave.value.length < 1){
179
180
PASO 11: Creamos la pgina para que muestre el listado de todos los
alumnos.
Le agregaremos adems 2 columnas adicionales a los campos, una para que
al darle clic aparezca el formulario de actualizacin y otra para que aparezca el
formulario que elimine el registro.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
181
182
Cdigo fuente:
<?php
include("conexion\conexion1.php");
$conectar=Conectarse();
$var_codigoalumno = $_GET['id'];
$consulta=mysql_query("SELECT codigo_al, apepaterno_al, apematerno_al,
nombres_al,
DATE_FORMAT(fechanac_al,'%d/%m/%Y'), id_distrito_al, telefono_al, correo_al
FROM alumnos WHERE codigo_al='$var_codigoalumno'",$conectar);
$resultado = mysql_fetch_array($consulta);
$res_codigo = $resultado[0];
$res_paterno = $resultado[1];
$res_materno = $resultado[2];
$res_nombres = $resultado[3];
$res_fechanac = $resultado[4];
183
184
185
Cdigo fuente:
<?php
include("conexion\conexion1.php");
$conectar=Conectarse();
$codigo = $_POST['codigo'];
$paterno = $_POST['paterno'];
$materno = $_POST['materno'];
$nombres = $_POST['nombres'];
$fechanac = $_POST['fechanac'];
$distrito = $_POST['distrito'];
$telefono = $_POST['telefono'];
$correo = $_POST['correo'];
$fechanac_data = date("Y-m-d",strtotime($fechanac));
$consultasql = "UPDATE alumnos
SET apepaterno_al = '$paterno',
apematerno_al = '$materno',
nombres_al = '$nombres',
fechanac_al = '$fechanac',
id_distrito_al = '$distrito',
telefono_al = '$telefono',
correo_al = '$correo'
WHERE codigo_al = '$codigo'";
$resultado = mysql_query($consultasql, $conectar);
echo mysql_error();
mysql_close($conectar);
?>
<html>
<head><title>ACTUALIZAR</title></head>
<body>
<p>EL ALUMNO CON CODIGO <?php echo "<B>".$codigo."</B><br>"; ?> FUE
ACTUALIZADO CORRECTAMENTE</p>
<p><b>REPORTE DE DATOS ACTUALIZADOS:</b> </p>
<TABLE width="292" height="79">
<TR>
<TD width="115">CODIGO:</TD>
<TD width="133"><?php echo $codigo; ?></TD>
</TR>
<TR>
186
187
188
189
Codigo fuente:
<?php
include("conexion\conexion1.php");
$conectar=Conectarse();
$codigo = $_POST['codigo'];
$consultasql = "DELETE FROM alumnos WHERE codigo_al = '$codigo'";
$resultado = mysql_query($consultasql, $conectar);
echo mysql_error();
mysql_close($conectar);
?>
<html>
<head><title>ELIMINAR ALUMNO</title></head>
<body>
<p>EL ALUMNO CON CODIGO <?php echo $codigo; ?> FUE ELIMINADO
CORRECTAMENTE</p>
<p><a href="listado_alumnos.php" target="_parent">Ir al listado de alumnos</a></p>
<p><a href="operaciones.php" target="_parent">Panel Principal</a></p>
</body>
</html>
190
Pagina index.php.
<html>
<head>
<title>ACCESO AL SISTEMA</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="verifica_acceso.php">
<table width="200" border="1" align="center">
<tr>
<th scope="col"><table width="200" border="1">
<tr>
<th colspan="2" scope="col">ACCESO AL SISTEMA</th>
</tr>
<tr>
<th width="83" scope="col">Usuario:</th>
<th width="101" scope="col"><label for="usuario"></label>
<input type="text" name="usuario" id="usuario" /></th>
</tr>
<tr>
<th scope="row">Clave:</th>
<td><label for="clave"></label>
<input type="password" name="clave" id="clave" /></td>
</tr>
<tr>
<th colspan="2" scope="row"><input type="submit" name="procesar"
id="procesar" value="Ingresar" /></th>
</tr>
</table></th>
</tr>
</table>
</form>
</body>
</html>
191
Cdigo fuente:
<?php
session_start();
$usuario = htmlspecialchars(strip_tags($_POST['usuario']));
$clave = htmlspecialchars(strip_tags($_POST['clave']));
include("conexion\conexion1.php");
$conectar=Conectarse();
$consultasql = "select nombre_usuario, nivel from usuarios where usuario = '$usuario'
and clave = '$clave'";
$resultado = mysql_query($consultasql, $conectar);
$filasDevueltas = mysql_num_rows($resultado);
$resul = mysql_fetch_array($resultado);
$nombreusuario = $resul[0];
$nivelusuario = $resul[1];
if ($filasDevueltas==0){
echo "Usuario no existe";
}else{
if ($nivelusuario == "1"){
$_SESSION['usuario'] = $nombreusuario;
header('Location: operaciones.php');
}else{
if ($nivelusuario == "2") {
$_SESSION['usuario'] = $nombreusuario;
header('Location: operaciones_profesores.php);
}else{
$_SESSION['usuario'] = $nombreusuario;
header('Location: operaciones_alumnos.php ');
}
}
192
PASO 13: Creamos la pagina cerrar sesin, la cual tendr un enlace desde
todas las paginas anteriores.
cerrarsesion.php
Cdigo fuente:
<?php
session_start();
session_unset();
session_destroy();
?>
<html>
<head>
<title>Cerrar sesion</title>
</head>
<body>
<h1>Acaba de cerrar su sesion de forma correcta</h1>
<p><a href = "index.php" target="_parent">Ir a la pagina principal</a></p>
</body>
</html>
NOTA:
Este formulario tiene una funcin javascript que se encarga de calcular la nota
promedio ya que este campo se encuentra de solo lectura.
193
194
195
196
PASO 15: Por ultimo, creamos las ventanas que tendrn los vnculos a los
distintos formularios que hemos creado a lo largo de esta aplicacin web.
Pagina (operaciones.php):
Cdigo fuente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin ttulo</title>
</head>
<body>
<h1><center>PANEL DE CONTROL PRINCIPAL</center></h1>
<p><b>REGISTRAR:</b></p>
<p><a href="formulario_registrar_alumno.php" target="_parent">Alumnos</a><br />
<a href="formulario_registrar_profesor.php" target="_parent">Profesores</a><br />
<a href="formulario_registrar_curso.php" target="_parent">Cursos</a><br />
<a href="formulario_registrar_distrito.php" target="_parent">Distritos</a><br />
<a href="formulario_registrar_usuario.php" target="_parent">Usuarios</a></p>
<p><b>LISTADOS:</b></p>
<p><a href="listado_alumnos.php" target="_parent">Alumnos</a><br />
Profesores<br />
197
Pagina (operaciones_profesores.php):
Cdigo fuente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin ttulo</title>
</head>
<body>
<h1><center>
OPERACIONES PROFESORES
</center></h1>
<p><b>REGISTRAR:</b></p>
<p><a href="formulario_registrar_notas.php" target="_parent">Notas</a></p>
<p><b>LISTADOS:</b></p>
<p>Alumnos</p>
<p> </p>
<p><a href="cerrarsesion.php" target="_parent">Cerrar Sesion</a></p>
</body>
</html>
198
Cdigo fuente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin ttulo</title>
</head>
<body>
<h1><center>
OPERACIONES ALUMNOS
</center></h1>
<p>Ver notas de cursos<br />
</p>
<p>Actualizar datos</p>
<p><a href="cerrarsesion.php" target="_parent">Cerrar Sesion</a></p>
</body>
</html>
NOTA:
Complete los vnculos a los formularios que necesite para que la administracin se
completa.
Ingrese registros de pruebas en todas las tablas utilizando los formularios creados en
los primeros pasos para que pueda ejecutar las consultas.
Elabore los listados de las dems tablas.
Complete los cdigos de seguridad para que un usuario de un nivel especifico pueda
cambiarse a otra ventana que no le corresponda su nivel (Utilice sesiones).
199
Sin embargo son muchas las diversas posibilidades de uso, donde esta bondad
que brinda el PHP, se le puede sacar provecho, Por ejemplo: El desarrollo de
un carrito de compras, Generacin de Software Educativos, Evaluaciones a
distancia, Compra de pasajes, etc.
session_start ()
Inicia una sesin para el usuario o contina la sesin que pudiera tener abierta
en otras pginas. Al hacer session_start() PHP internamente recibe el
identificador de sesin almacenado en la cookie o el que se enve a travs de
la URL. Si no existe este identificador se sesin, entonces se crea
automaticamente.
200
Descripcin
Session_id()
Session_destroy()
Session_unregister(variable)
NOTA:
La sesin se tiene que inicializar antes de escribir cualquier texto en la pgina. Esto es
importante y de no hacerlo as corremos el riesgo de recibir un error, porque al iniciar
la sesin se deben leer las cookies del usuario, algo que no se puede hacer si ya se
han enviado las cabeceras del HTTP.
201
Como se puede ver, al inicio del cdigo hemos inicializado la sesin y luego en
cualquier parte del cdigo podramos acceder a las variables de sesin que
tuvisemos creadas.
NOTA:
Si intentamos acceder a una variable de sesin con $_SESSION que no ha sido
creada obtendremos otro mensaje de error:
Notice: Undefined index: mivariabledesesion, que es el mismo que si intentamos
acceder a cualquier elemento de un array que no existe.
202
$_SESSION["cuenta_paginas"]
Para ver si una variable de sesin ha sido creada podemos utilizar la funcin
isset() pasndole como parmetro la variable que deseamos saber si ha sido
creada. Si no fue creada anteriormente, simplemente la creamos (inicializando
su valor a 1). Si fue creada, pues que tenemos que incrementar en 1. Eso se
consigue con este cdigo:
if (!isset($_SESSION["cuenta_paginas"])){
$_SESSION["cuenta_paginas"] = 1;
}else{
$_SESSION["cuenta_paginas"]++;
}
203
Uso de session_destroy();
El problema que veremos es la eliminacin o destruccin de sesiones. Antes
era tan fcil como poner:
Si hoy inicias una sesin en PHP 5.3.5 y luego le aplicas este mtodo para
cerrar (eliminar) tu sesin, esta no queda destruida. Es ms, las variables de
tipo $_SESSION['mi_variable'] conservan los datos que venan almacenando.
Si creas una pagina con usuarios y uno de ellos inicia sesin en tu pgina
luego cierra su sesin y se va sin haber cerrado el navegador, otro usuario en
la misma mquina podra recuperar esa sesin. Esto porque las variables de
sesin an existen y an estn almacenando la informacin del usuario
anterior.
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
204
205
sesion2.php
<?php
session_start();
?>
<html>
<head>
<title>Leo variable se sesin</title>
206
sesion3.php
<?php
session_start();
?>
<html>
<head><title>Leo variable se sesin en otra pagina</title></head>
<body>
Muestro el valor que toma una variable cualquiera junto con el
de la variable sesin: <br>
<?php
$unacualquiera = "lo que sea";
$valor_sesion = $_SESSION["var_sesion"];
echo"Vemos una variable de esta pagina <b>$unacualquiera</b>
y la variable de sesion
<b>$valor_sesion</b>";
?>
<p>
<a href = "sesion4.php">Eliminar variable de sesion</a></p>
</body>
</html>
sesion4.php
<?php
session_start();
207
PHP propone un sinfn de funciones para la gestin de archivos que van desde
las ms elementales de apertura, lectura y cierre a otras ms rebuscadas como
el clculo de espacio en el disco duro, tamao del archivo, gestin de derechos
de acceso.
NOTA:
Un archivo, tambin denominado Fichero, es una unidad de datos o informacin
almacenada en algn medio que puede ser utilizada por aplicaciones de la
computadora.
208
Cada archivo se diferencia del resto debido a que tiene un nombre propio y una
extensin que lo identifica. Esta extensin sera como el apellido y es lo que
permite diferenciar el formato del archivo y, asimismo, interpretar los caracteres
que conforman el contenido del archivo. De esta manera, un archivo de texto,
podr tener la extensin .txt (el nombre completo sera: ARCHIVO.txt); uno de
documento enriquecido, .doc, .pdf; uno de imgenes, .jpg, .gif; y lo mismo
ocurre con cada formato.
fopen()
Es una de las funciones bsicas para la manipulacin de archivos. Abre un
archivo en un cierto modo (el archivo que usted establezca) y devuelve el
recurso del puntero de archivo.
Usando este recurso se puede leer y/o escribir en el archivo, antes de cerrarlo
con la funcin fclose().
Modo de
apertura
Qu significa
r+
w+
a+
209
Funcin Fclose:
Esta funcin es muy simple: Slo cierra la lectura y/o escritura del archivo. Su
cdigo es:
<?php
fclose (fichero);
?>
NOTA:
No es necesario hacer esto cada vez que abramos un archivo, pero es til cuando
abrimos ms de uno, entonces abrimos el primero, luego lo cerramos, luego el
segundo y as.
Funcin file():
Esta funcin lee el archivo completo como una matriz (o array). Cada item en la
matriz corresponde a una linea en el archivo.
<?php
$lineas = file('datos2.txt');
foreach ($lineas as $numero => $linea) {
210
Funcin fread():
Esta funcin puede leer hasta una cantidad especificada de bytes del archivo y
devolvindolos como una cadena.
Para este ejemplo creamos el archivo data3.txt
211
Funcin Fwrite:
Esta funcin sirve para escribir en el archivo. Si modo de apertura en fopen() es
r, no har nada con el archivo, porque abre el archivo solo para lectura. Su
cdigo es:
<?php
fwrite (fichero, texto [, bytes]);
?>
212
Funcin file_exists(archivo)
Es una funcin del tipo Booleana. Como su nombre dice, ve si archivo existe. Si
existe, devuelve TRUE ( 1 ), si no, devuelve FALSE ( 0 ).
Si cambiamos el nombre del archivo por otro, por ejemplo abc.txt, mostrara el
siguiente mensaje:
213
Funcin is_writable(archivo)
Igual que is_readable() pero, envez de ver permisos de lectura, ve permisos de
escritura. Tambin puede ser is_writeable().
A continuacin veremos un ejemplo para ver si tenemos permiso de escritura
en la carpeta archivos que se encuentra creada en el servidor local:
<?php
if (!is_writable ("/archivos")) {
echo "Puedes escribir en el directorio /archivos";
}
?>
Funcin filesize(archivo):
Obtiene el tamao de archivo en bytes.
Ejemplo:
<?php
echo filesize ("datos.txt");
?>
214
215
Proceso:
Verificamos nuestra carpeta vaca.
Procesamos el formulario.
216
217
218
En 2003, MySpace
ms tarde, de 2005 a
convirti
en
el
comunicacin social
MySpace fue una
fue fundado y
2008, el sitio se
medio
de
ms visitado.
plataforma de
lanzamiento para otras aplicaciones web conocidos
como YouTube, y Slide.com! RockYou, todos los cuales
comenzaron como mdulos adicionales para los
usuarios de MySpace antes de convertirse en sus
propios sitios web en su propio derecho.
219
Twitter, por su parte, se puso en marcha en 2006. Con los aos, la popularidad
de Twitter ha aumentado de 1,6 millones de 'tweets' en 2007 con la
impresionante cifra de 340 millones de dlares por da en marzo de 2012
(equivalente a casi 4000 'tweets' por segundo).
220
NOTA:
Quin no ha utilizado el Hotmail, Facebook, Twitter?
Quin no ha comprado en Amazon, ha vendido un
producto en Mercado Libre, ha dejado un comentario
en un blog, ha entrado a la intranet de su empresa,
ha realizado una bsqueda en Google o ha realizado
una transaccin bancaria va internet?
221
Sitio web.
Un sitio web es el conjunto de una o ms
pginas web que podran estar, o no,
enlazadas entre s. El propsito principal de
un sitio web es trasmitir contenido para su
consulta. El trmino sitio web sera el correcto para referirnos a cualquier
producto o servicio que tenga presencia en Internet. La puerta de entrada a un
sitio web es la pgina de inicio o pgina principal.
Un ejemplo prctico de sitio web sera un blog, donde la pgina de inicio est
formada por la lista de los ltimos artculos publicados y que al hacer click
sobre el ttulo de cualquiera de ellos podemos ver el desarrollo de esa entrada
en una pgina aparte.
Aplicacin web.
Una aplicacin web es una herramienta
diseada y desarrollada para atender una
necesidad especfica desde Internet El uso
de una aplicacin web puede ser con fines
privados o pblicos. Para desarrollar una
aplicacin web es necesario tener
conocimientos de anlisis de informacin,
programacin, manejo de bases de datos,
tiempos
de
carga
de
resultados,
optimizacin de cdigo, anlisis estadsticos, funciones matemticas, diseo de
interfaz de usuario, y un sin fin de tareas que atender para que el
funcionamiento de la aplicacin web siempre sea el deseado.
222
223
Por ejemplo, una estacin de trabajo utilizada como cliente puede ejecutar una
aplicacin de interfaz de usuario que interroga a un servidor central de bases
de datos.
224
225
226
227
Applets de Java.
Son programas hechos en Java, que se transfieren
con las pginas web y que el navegador ejecuta en
el espacio de la pgina. Los applets son ms
difciles de programar que los scripts en Javascript
y requerirn conocimientos medios del lenguaje
Java. La principal ventaja de utilizar applets
consiste en que son independientes del navegador,
del sistema operativo y multiplataformas.
Cada sistema operativo dispone de una mquina Virtual de Java que puede
interpretar los Byte Codes y transformarlos a sentencias ejecutables en el
sistema en cuestin.
Flash.
Es un programa multimedia de Adobe que se
utiliza para crear presentaciones animadas.
Se trata de una aplicacin del lado del
cliente que es leda por los principales
navegadores. Las animaciones se realizan a
partir de vectores y de imgenes en base a
pxeles (llamadas raster graphics) y pueden
incluir audio y video. Este programa es uno
de los ms utilizados para animar sitios Web
y permitir la interactividad.
228
Ventajas:
229
JSP
Es un lenguaje para la creacin de sitios web dinmicos, acrnimo de Java
Server Pages. Est orientado a desarrollar pginas web en Java. JSP es un
lenguaje multiplataforma.
JSP fue desarrollado por Sun Microsystems. Comparte ventajas similares a las
de ASP.NET, desarrollado para la creacin de aplicaciones web potentes.
Posee un motor de pginas basado en los servlets de Java. Para su
funcionamiento se necesita tener instalado un servidor Tomcat.
Caractersticas:
Los elementos que pueden ser insertados en las pginas JSP son los
siguientes:
Cdigo: se puede incrustar cdigo Java.
Directivas: permite controlar parmetros del servlet.
Acciones: permite alterar el flujo normal de ejecucin de una pgina.
230
Desventajas:
Complejidad de aprendizaje.
PERL.
Perl (Practical Extraction and Report Language) es un lenguaje de
programacin desarrollado por Larry Wall (lwall at netlabs.com) inspirado en
otras herramientas de UNIX como son: sed, grep, awk, c-shell, para la
administracin de tareas propias de sistemas UNIX. No establece ninguna
filosofa de programacin concreta. No se puede decir que sea orientado a
objetos, modular o estructurado aunque soporta directamente todos estos
paradigmas; su punto fuerte son las labores de procesamiento de textos y
archivos. Lenguaje de programacin basado en scripts portable a casi cualquier
plataforma. Es muy utilizado para escribir CGIs. Uno de sus elementos ms
potentes son las expresiones regulares, que a partir de su versin en Perl han
sido adoptadas por otros lenguajes y plataformas como .NET o Javascript.
Ventajas:
Es un buen lenguaje pegamento. Se pueden juntar varios programas de
una forma sencilla para alcanzar una meta determinada. Los usuarios de
Windows agradecern esta propiedad ya que normalmente adolecen de un
buen lenguaje tipo script.
Es relativamente rpido para un lenguaje tipo script.
Est disponible en mltiples plataformas y sistemas operativos (UNIX, Linux
y Windows). Un programa que se escriba teniendo en cuenta la
compatibilidad puede ser escrito en una plataforma y ejecutado en otra.
El desarrollo de aplicaciones es muy rpido.
Hay una coleccin enorme de mdulos que pueden ser incorporados a
cualquier script de Perl. Estn disponibles en el CPAN (Comprehensive
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
231
232
Ventajas:
Desventajas:
Todo el trabajo lo realiza el servidor y no delega al cliente. Por tanto puede
ser ms ineficiente a medida que las solicitudes aumenten de nmero.
La legibilidad del cdigo puede verse afectada al mezclar sentencias HTML y
PHP.
La programacin orientada a objetos es an muy deficiente para
aplicaciones grandes.
Dificulta la modularizacin.
Dificulta la organizacin por capas de la aplicacin.
SEGURIDAD.
PHP es un poderoso lenguaje e intrprete, ya sea
incluido como parte de un servidor web en forma de
mdulo o ejecutado como un binario CGI separado,
es capaz de acceder a archivos, ejecutar comandos
y abrir conexiones de red en el servidor. Estas
propiedades hacen que cualquier cosa que sea
ejecutada en un servidor web sea insegura por
naturaleza.
233
Un editor de texto.
Un compilador.
Un intrprete.
Herramientas de automatizacin.
Un depurador.
Posibilidad de ofrecer un sistema de control de versiones.
Factibilidad para ayudar en la construccin de interfaces grficas de usuario.
Dreamweaver de Adobe.
Es en una potente y flexible herramienta de
desarrollo
que
inclute
numerosas
herramientas para facilitarnos el desarrollo de aplicaciones web.
Dreamweaver permite trabajar con los siguientes modelos de servidor:
ASP JavaScript
ASP VBScript
ASP.NET C#
ASP.NET VB
234
Jomla!
Joomla! es un Sistema de Gestin de Contenidos (CMS) premiado
mundialmente, que le ayuda a construir sitios web y otras aplicaciones online
potentes. Lo mejor de todo, es que Joomla es una solucin de cdigo abierto y
est disponible libremente para cualquiera que desee utilizarlo.
Joomla! se utiliza en todo el mundo para generar desde una simple pgina web
personal hasta complejas aplicaciones web corporativas. Entre los diferentes
usos que la gente da a Joomla! estn:
ESCUELA DE TECNOLOGAS DE LA INFORMACIN
235
WordPress.
WordPress es un sistema de gestin de contenido enfocado a la creacin de
blogs (sitios web peridicamente actualizados). Desarrollado en PHP y MySQL,
bajo licencia GPL y cdigo modificable, tiene como fundador a Matt Mullenweg.
236
Aunque las aplicaciones Web estn creciendo rpidamente tanto en uso como
en aceptacin, su desarrollo tiende a ser ad hoc, resultando en aplicaciones de
pobre calidad. La mayora de los desarrolladores Web ponen poca atencin en
la elicitacin y anlisis de requisitos, as como en las metodologas y procesos
de desarrollo. A dems los desarrolladores de aplicaciones confan
excesivamente en el conocimiento y experticia de los desarrolladores
individuales y sus prcticas de desarrollo individual ms bien que en las
prcticas estndar. No obstante, son las mismas metodologas de desarrollo
las que no tratan de manera adecuada y profunda los atributos de calidad.
Estas situaciones traen como consecuencia que los atributos de calidad de los
sistemas basados en la Web tales como la funcionalidad, confiabilidad,
mantenibilidad, usabilidad y portabilidad no se les da la debida consideracin
que se merecen durante el proceso de desarrollo.
237
Usabilidad
Servicios especiales.
Capacidad de correccin.
Eficiencia
Adaptabilidad.
Calidad
de una
aplicacin
web
Capacidad de
Extensibilidad.
mantenimiento
Fiabilidad
Usabilidad.
Funcionabilidad.
Fiabilidad.
Seguridad.
Eficiencia.
Mantenimiento.
238
239
Fallas de seguridad.
OWASP ha publicado su proyecto Top 10 correspondiente al ao 2013, donde
han surgido algunas modificaciones en cuanto a los riesgos de seguridad ms
crticos de aplicaciones web.
El top 10 de OWASP sobre vulnerabilidades en aplicaciones web se basa en
informacin sobre riegos provenientes de 8 firmas especializadas en seguridad
de aplicaciones. Se tienen en cuenta alrededor de 500,000 vulnerabilidades
alrededor de cientos de organizaciones y miles de aplicaciones. Asimismo,
estas vulnerabilidades son priorizadas de acuerdo al nivel de explotacin,
deteccin e impacto estimado.
De acuerdo al ranking, el top 10 de este ao (2013) qued de la siguiente
manera:
A1 Injection: Corresponde a las inyeccin de cdigo, siendo las inyecciones
SQL una de las ms comunes.
240
241
Tal
como
lo
afirma
OWASP,
las
vulnerabilidades en los sistemas siguen siendo
una problemtica y es necesario tratarla con la
atencin que lo requiere. En muchos casos,
detrs de estas vulnerabilidades existe
informacin valiosa y crtica que puede ser
utilizada con diversos fines. Desde ESET
Latinoamrica, pensando en esta necesidad,
contamos con ESET Security Services donde ofrecemos servicios de auditora
de seguridad para aquellas organizaciones que deseen evaluar el estado de su
seguridad.
242
243
Con la evolucin de las tecnologas para el desarrollo web, como por ejemplo el
gran avance de programacin en AJAX, las aplicaciones web fueron creciendo,
siendo cada da ms robustas y ofreciendo cada vez ms opciones para el
usuario. Ya queda poco de aquellas primeras aplicaciones con opciones
bsicas e interfaz poco atractiva. Hoy en da las aplicaciones web deben dar
soluciones reales a los usuarios y mostrar una interfaz que est a la altura de
las aplicaciones de escritorio, sin perder eficiencia y sin resignar performance.
Las ventajas de las aplicaciones web son bien conocidas, pero vale la pena
repasarlas. La primera y fundamental es la que ya mencionamos: el usuario no
debe instalar software adicional, slo debe tener un navegador actualizado y
una buena conexin a Internet. En relacin a esto, tambin surge que ya no se
necesitan varios GB en el disco duro para almacenar una aplicacin que no hay
que instalar. Como la aplicacin corre en el navegador, no hay problema de
compatibilidad de sistemas operativos, por lo cual es una solucin
multiplataforma. Tampoco debemos pensar en instalarla, actualizarla o qu
pasar si se rompe nuestro disco duro. Al estar la aplicacin en Internet, ella
vive en un servidor del cual se ocupar el equipo de mantenimiento, el usuario
slo deber recordar la direccin para acceder y la clave de acceso. Esto
permite resolver de una manera mucho ms sencilla y eficiente problemas
crticos y cualquier necesidad de actualizacin. Esto tambin beneficia el
trabajo en equipo que se puede realizar con personas que se encuentren en
diversos lugares del mundo sin ningn tipo de problema.
244
245