Introducción a la programación en internet

146
Introducción a la programación en internet Conceptos de aplicaciones Web La diferencia entre escritorio y web.

Transcript of Introducción a la programación en internet

Introducción a la programación en internet

Conceptos de aplicaciones WebLa diferencia entre escritorio y web.

Aplicación Desktop

• También llamadas de Escritorio, es aquella que está instalada en la computadora del usuario, que es ejecutada directamente por el sistema operativo, cuyo rendimiento depende de las especificaciones de la computadora.

Ventajas

• Habitualmente su ejecución no requiere comunicación con el exterior, sino que se realiza en forma local.

• Son más robustas y estables • En tiempo de respuesta en muy rápido• Pueden ser muy seguras

Desventajas

• Su acceso se limita al ordenador donde están instaladas.

• Son dependientes del sistema operativo que utiliza la computadora.

• Requieren instalación personalizada.• Requieren actualizaciones personalizadas. • Suelen tener requerimientos especiales de

software y librerías.

Aplicación Web

• También llamadas Online, es aquella que está instalada en un Servidor y su ejecución requiere disponer de una computadora con conexión a Internet y de un Navegador.

Ventajas

• Portabilidad: se ejecutan en cualquier equipo de computo• La información que manejan es accesible a través de

Internet• Son aplicaciones muy ligeras, el navegador no tiene el

programa, por consiguiente el navegador no debe ser muy pesado.

• Consumen muy pocos recursos• Son fáciles de actualizar.• Su funcionalidad es independiente del sistema operativo • No hay problemas de incompatibilidad entre versiones,

porque el usuario trabaja con la misma.

Desventajas

• Es necesaria una conexión a Internet.• La comunicación con el servidor que ejecuta la

aplicación establece una dependencia a una buena conexión a Internet.

• El servidor debe tener las prestaciones necesarias para la ejecutar la aplicación de manera fluida.

• El tiempo de ejecución, puede ser lento dependiendo de las características de la computadora y de la conexión a Internet.

El usuario desde cualquier parte del mundo y desde cualquier dispositivo (PC, laptop, mobile), desea ver donde será el próximo @BeerTwit.

1.-El usuario tiene que ingresar la URL de la página en su navegador (*1). El navegador por detrás se encargará de hacer un request (solicitud) al servidor Web usando el protocolo de comunicación HTTP (*2) (internet), y en este caso usará el método GET, porque sólo quiere obtener información

• El servidor Web recibe el request y envía un response (sólo html) al navegador. Los navegadores no entienden el código ASP, PHP, o JSP, ellos sólo muestran contenido en html (*3), es por eso que todos los servidores Web después de procesar un request devuelven sólo html (que puede incluir Javascript (*4)), el html generado debe ser un formulario en html, para que el usuario pueda enviar su información. Por otro lado si el usuario ha iniciado sesión con anterioridad es posible que su sesión este activa, y no tenga que iniciar sesión nuevamente.

• El usuario llena su información, user y password, y hace clic en el famoso botón “Sign in”. El navegador por detrás recolectará esta información, y en este caso que se desea enviar esa información al servidor debe estar usando el método POST. Todos los lenguajes usan POST para enviar información a una página, ya sea ASP.NET, Php, JSP, etc (*5). En el caso especial de ASP.NET cuando están desarrollando por defecto todos los formularios se envían usando POST, pueden hacer “View Source” de una página en el navegador y verán que el formulario html tiene el método POST. Pueden ver también esto usando la herramienta Fiddler. Con GET también se puede enviar variables, pero no es técnicamente enviar información, es mas bien, un obtener información con estos parámetros.

• El request llega al servidor Web, y se ejecutará el código de servidor Php, Jsp, o ASP, que se conectará con la base para verificar si existe el usuario y si el password coincide con el enviado por el usuario.

• Si el usuario y el password son validos, el código de servidor (login.php, login.jsp, o login.aspx), redireccionará el request a otra página showUpdates.php, la cual se conecta nuevamente a la base de datos para traer todos los updates de los amigos del usuario, después de procesar la página, el servidor envía el response (sólo html) al usuario.

• El usuario ve en una página las últimas actualizaciones de sus amigos, y parece que esta semana no habrá @BeerTwit, así que tendrá que inventar alguna excusa para generar uno nuevo.

Introducción a XAMPP

• XAMPP es un servidor independiente de plataforma, software libre, que consiste principalmente en la base de datos MySQL, el servidor web Apache y los intérpretes para lenguajes de script: PHP y Perl. El nombre proviene del acrónimo de X (para cualquiera de los diferentes sistemas operativos), Apache, MySQL, PHP, Perl.

• El programa está liberado bajo la licencia GNU y actúa como un servidor web libre, fácil de usar y capaz de interpretar páginas dinámicas. Actualmente XAMPP está disponible para Microsoft Windows, GNU/Linux, Solaris y MacOS X.

¿Qué es PHP?

• PHP (acrónimo dePHP: HypertextPreprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para desarrollo web y que puede ser incrustado en HTML.

• Una respuesta corta y concisa, pero, ¿qué significa realmente? Un ejemplo nos aclarará las cosas:

• En lugar de usar muchos comandos para mostar HTML (como en C o Perl), páginas PHP contienen HTML con código incluido en el mismo que hace "algo" (en este caso, mostrar "Hola ¡soy un script PHP!). El código PHP está entre medio de etiquetas de comienzo y final especiales<?php y ?> que nos permitirán entrar y salir del "modo PHP".

• Lo que distingue a PHP de algo lado-cliente como Javascript, es que el código es ejecutado en el servidor, generando HTML y enviándolo al cliente. El cliente recibirá los resultados de ejecutar el script, sin ninguna posibilidad de determinar qué código ha producido el resultado recibido. El servidor web puede ser incluso configurado para que procese todos los archivos HTML con PHP y entonces no hay manera que los usuarios puedan saber que tienes debajo de la manga.

<html> <head> <title>Ejemplo PHP</title> </head> <body> <?php phpinfo() ?> </body></html>

Arquitectura cliente-servidor• La arquitectura cliente-servidores un modelo de aplicación

distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, quien le da respuesta. Esta idea también se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

• En esta arquitectura la capacidad de proceso está repartida entre los clientes y los servidores, aunque son más importantes las ventajas de tipo organizativo debidas a la centralización de la gestión de la información y la separación de responsabilidades, lo que facilita y clarifica el diseño del sistema.

• La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.

• Una disposición muy común son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando así el grado de distribución del sistema.

• La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.

• La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes están conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposición de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en él se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso público y los que son de uso restringido, los archivos que son de sólo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se esté utilizando en una red mixta.

Características

En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus características son:

• Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).

• Espera y recibe las respuestas del servidor.• Por lo general, puede conectarse a varios servidores a la vez.• Normalmente interactúa directamente con los usuarios finales

mediante una interfaz gráfica de usuario.• Al contratar un servicio de redes, se debe tener en cuenta la

velocidad de conexión que le otorga al cliente y el tipo de cable que utiliza, por ejemplo : cable de cobre ronda entre 1 ms y 50 ms.

Al receptor de la solicitud enviada por el cliente se conoce como servidor. Sus características son:

• Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).

• Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.

• Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado).

• No es frecuente que interactúen directamente con los usuarios finales.

Protocolo HTTPHTTP es un protocolo de transferencia de hipertexto que se usa en la Web. HTTP es una sigla que significa HyperText Transfer Protocol, o Protocolo de

Transferencia de Hipertexto. Este protocolo fue desarrollado por las instituciones internacionales W3C y IETF y se usa en todo tipo de transacciones a través de Internet.

El HTTP facilita la definición de la sintaxis y semántica que utilizan los distintos

softwares web – tanto clientes, como servidores y proxis – para interactuar entre sí. Este protocolo opera por petición y respuesta entre el cliente y el servidor. A menudo las peticiones tienen que ver con archivos, ejecución de un programa, consulta a una base de datos, traducción y otras funcionalidades. Toda la información que opera en la Web mediante este protocolo es identificada mediante el URL o dirección.

La típica transacción de protocolo HTTP se compone de un encabezado seguido por

una línea en blanco y luego un dato. Este encabezado define la acción requerida por el servidor.

• Desde su creación, el HTTP evolucionó en diversas versiones. Entre ellas, la 0.9, la 1.0, la 1.1 y la 1.2.El protocolo de este tipo opera con códigos de respuesta de tres dígitos, que comunican si conexión fue rechazada, si se realizó con éxito, si ha sido redirigida hacia otro URL, si existe un error por parte del cliente, o bien, por parte del servidor.

• Las aplicaciones y navegadores web tienden a complementar la acción del HTTP como ocurre, por ejemplo, con las denominadas “cookies”, que permiten almacenar información de la sesión, función de la que no dispone este protocolo, ya que opera sin estado.

• Hoy en día, muchas de las direcciones de URL requieren la inclusión del protocolo “http://” para su correcto funcionamiento. Este protocolo es usualmente seguido del típico código “www” y luego por la dirección específica del sitio web que se desea visitar

Protocolo TCP/IP• El nombre TCP/IP proviene de dos de los protocolos más importantes de

la familia de protocolos Internet, el Transmission Control Protocol (TCP) y el Internet Protocol (IP).

• La principal virtud de TCP/IP estriba en que esta diseñada para enlazar ordenadores de diferentes tipos, incluyendo PCs, minis y mainframes que ejecuten sistemas operativos distintos sobre redes de área local y redes de área extensa y, por tanto, permite la conexión de equipos distantes geográficamente.

• Internet se encuentra estrechamente unida a un sistema de protocolo de comunicación denominado TCP/IP (Transmission Control Protocol/ Internet Protocol), que se utiliza para transferir datos en Internet además en muchas redes de área local.

QUE ES TCP/IP Y COMO FUNCIONA?• TCP/IP es el nombre de un protocolo de conexión de redes. Un protocolo es un

conjunto de reglas a las que se tiene que atener todas las compañías y productos de software con él fin de que todos sus productos sean compatibles entre ellos. Estas reglas aseguran que una máquina que ejecuta la versión TCP/IP de Digital Equipment pueda hablar con un PC Compaq que ejecuta TCP/IP.

• TCP/IP es un protocolo abierto, lo que significa que se publican todos los aspectos concretos del protocolo y cualquiera los puede implementar.

• TCP/IP está diseñado para ser un componente de una red, principalmente la parte del software. Todas las partes del protocolo de la familia TCP/IP tienen unas tareas asignadas como enviar correo electrónico, proporcionar un servicio de acceso remoto, transferir ficheros, asignar rutas a los mensajes o gestionar caídas de la red.

• Una red TCP/IP transfiere datos mediante el ensamblaje de bloque de datos en paquetes. Cada paquete comienza con una cabecera que contiene información de control, tal como la dirección del destino, seguida de los datos. Cuando se envía un archivo a través de una red TCP/IP, su contenido se envía utilizando una serie de paquetes diferentes.

ARQUITECTURA DE NIVELES DE TCP / IP• Cuando se diseñó TCP/IP los comités establecidos para crear la familia de protocolos

consideraron todos los servicios que se tenían que proporcionar.

La distribución por niveles se utiliza en muchos sistemas de software; una referencia común es la arquitectura ideal del protocolo de conexión de redes desarrollada por la International OrganizationforStandardization, denominada ISO, aunque en realidad debería decir IOS, ISO desarrollo el modelo de referencia Open SystemsInterconnection (OSI), o Interconexión de Sistemas abiertos que consta de siete niveles.

• APLICACIÓN• PRESENTACION• SESION• TRANSPORTE• RED• ENLACE DE DATOS• FISICO • El modelo de referencia OSI se desarrolló para aislar los componentes comunes del sistema

del software en niveles. Cada nivel es independiente del resto.

• Cada nivel en el modelo de referencia OSI tiene una tarea especifica que desempeñar. El objetivo de una arquitectura por niveles es agrupar servicios afines, a la vez que conseguir que sean independientes de los demás. Las tareas son un poco abstractas, porque el modelo OSI es simplemente eso, un modelo. No esta diseñado para ser un modelo real, sino un modelo para que lo sigan sistemas como TCP/IP.

El enfoque OSI por niveles es el que utiliza TCP/IP, aunque con una ligera modificación. Los niveles son similares, aunque TCP/IP agrupa varios de los niveles OSI en un único nivel TCP/IP. Esto se realiza principalmente porque era el mejor método de implementar los servicios TCP/IP.

• Una condición que se necesita para permitir que la arquitectura por niveles funcione adecuadamente es que cada nivel debe saber lo que recibe de un nivel por encima o por debajo. Para simplificar esta tarea, cada nivel añade un bloque de datos al principio y al final del mensaje que indica que nivel está implicado, además del resto de información que los otros niveles y la máquina que lo va a recibir necesitan para manejar el mensaje de forma adecuada. Los datos dentro del mensaje se ignoran. Esto se denomina encapsulación, ya que cada nivel añade una cápsula de información en torno a los datos originales.

• APLICACIÓN• TRANSPORTE• INTERNET• INTERFACE DE RED• FÍSICO

Los niveles TCP/IP

• Cada nivel lleva a cabo su propia encapsulación añadiendo cabecera y bloques finales que reciben del nivel superior, lo que tiene como resultado seis conjuntos de cabeceras y bloques finales en el momento en que un mensaje llega a la red. Todas estas cabeceras y bloques finales se pasan a la red (como por ejemplo Ethernet o Netware) que puede añadir incluso más información al principio o al final

LOS COMPONENTES DE TCP/IP

Conjunto de Protocolos TCP/IP :

Todos estos servicios conforman TCP/IP, creando un protocolo potente y eficaz de red. Los diferentes protocolos dentro de TCP/IP se mantienen de forma regular por un conjunto de estándares que son parte de la organización de Internet.

Los protocolos de transporte controlan el movimiento de datos entre dos maquinas.

• « TCP (Transmission Control Protocol). Protocolo de Control de Transmisión. Un servicio basado en una conexión, lo que significa que las máquinas que envían y reciben datos están conectadas y se comunican entre ellas en todo momento.

• « UDP (UserDatagramProtocol). Protocolo de Datagramas a nivel de Usuario. Un servicio sin conexión, lo que significa que los datos se envían o reciben estén en contacto entre ellas.

• Los protocolos de rutas gestionan el direccionamiento de los datos y determinan el mejor medio de llegar la destino. También pueden gestionar la forma en que se dividen los mensajes extensos y se vuelven a unir en el destino.

« IP (Internet Protocol). Protocolo de Internet. Gestiona la transmisión actual de datos.

« ICMP (Internet Control Message Protocol).Protocolo de Control de

Mensajes de Internet. Gestiona los mensajes de estado para IP, como errores o cambios en el hardware de red que afecten a las rutas.

« RIP (RoutingInformationProtocol). Protocolo de Información de

Rutas. Uno de los varios protocolos que determinan el mejor método de ruta para entregar un mensaje.

« OSPF (Open Shortest Path First).AbrePrimero el Path Mas Corto.Un

protocolo alternativo para determinar la ruta

Las direcciones de red las gestionan servicios y es el medio por el que se identifican las maquinas, tanto por su nombre y número único.

« ARP (AddressResolutionProtocol). Protocolo de Resolución de Direcciones. Determina las direcciones numéricas únicas de las máquinas en la red.

« DNS (DomainNameSystem). Sistema de Nombres de Dominio. Determina las direcciones numéricas desde los nombres de máquinas.

« RARP (Reverse Address Resolution Protocol).Protocolo de Resolución Inversa de Direcciones. Determina las direcciones de las máquinas en la red, pero en sentido inverso al de ARP.

Los servicios de usuario son las aplicaciones que un usuario (o maquina) pueden utilizar.

« BOOTP (BootProtocol). Protocolo de Arranque, como su propio nombre lo indica, inicializa una máquina de red al leer la información de arranque de un servidor.

« FTP (File Transfer Protocol), el Protocolo de Transferencia de Ficheros transfiere ficheros de una máquina a otra.

« TELNET permite accesos remotos, lo que significa que un usuario en una máquina puede conectarse a otra y comportarse como si estuviera sentado delante del teclado de la máquina remota.

Los protocolos de pasarela ayudan a que la red comunique información de ruta y estado además de gestionar datos para redes locales.

« EGP (Exterior Gateway Protocol). Protocolo de Pasarela Externo, transfiere información de ruta para redes externas.

« GGP (Gateway-to-Gateway Protocol).Protocolo de Pasarela a pasarela, transfiere información de ruta entre pasarelas.

« IGP (Interior Gateway Protocol). Protocolo de Pasarela Interno, transfiere información de ruta para redes internas.

Los otros protocolos son servicios que no se adaptan a las categorías, pero proporcionan servicios importantes en una red.

« NFS (Network File System). Sistema de Ficheros de Red, permite que los directorios en una máquina se monten en otra y que un usuario puede acceder a ellos como si estos se encontraran en la máquina local.

« NIS (Network InformationService). Servicio de Información de Red, mantiene las cuentas de usuario en todas las redes, simplificando el mantenimiento de los logins y passwords.

« RPC (RemoteProcedureCall). Llamada de Procedimiento Remota, permite que aplicaciones remotas se comuniquen entre ellas de una manera sencilla y eficaz.

« SMTP (Simple Mail Transfer Protocol).Protocolo Simple de Transferencia de Correo, es un protocolo dedicado que transfiere correo electrónico entre máquinas.

« SNMP (Simple Network Management Protocol).Protocol Simple de Gestión de Redes, es un servicio del administrador que envía mensajes de estado sobre la red y los dispositivos unidos a ésta

SERVICIOS BÁSICOS TCP/IP

Sin haber instalado ningún software especial en el sistema de su computadora, podrá empezar inmediatamente a proporcionar ciertos servicios TCP/IP básicos en la red. Existen tres formas de proporcionar servicios TCP/IP, que trataremos en este orden :

• Sistemas operativos cliente y servicios TCP/IP que estos proporcionan por defecto.

• Extensiones que se pueden hacer en el sistema operativo cliente con el fin de proporcionar servicios adicionales,

• Soluciones se servidor dedicado• Es posible que, para sus necesidades, solo requiera los que

suministra a los que se pueda añadir fácilmente a los sistemas operativos del cliente.

SERVICIOS BÁSICOS AL CLIENTE

• Dado que los sistemas operativos Mac y Windows 95/98 se consideran ambos "clientes", proporcionan un número limitado de servicios por defecto, Si bien existen programas que pueden dar información de sistemas operativos. Mac y Windows, éstos están limitados generalmente en velocidad y en el número de clientes que pueden manejar. Por otro lado, Linux se usa frecuentemente como sistema operativo cliente y servidor.

SERVICIOS PREDETERMINADOS DE MAC OS

• Mac Os, por defecto, incluye un solo cliente TCP/IP; un navegador Web. Sin embargo, tiene la capacidad de proporcionar la funcionalidad de un servidor Web y de un servidor de archivos básico.

USO DE WEB FILE SHARING EN SISTEMAS OPERATIVOS MAC

• Web File Sharing es, un método para compartir archivos desde el Macintosh al exterior de una conexión TCP/IP usando el protocolo HTTP. Hay dos modos de funcionamiento de Web File Sharing , el modo de servidor Web y el modo de <buscador> Web. En le primero Web File Sharing actúa como servidor Web normal. Puede seleccionar una página HTLM en su computadora y se servirá cuando la gente se conecte a ella. Una de las características más atractivas del modo de servidor Web es que puede traducir instantáneamente archivos de texto sencillo a paginas Web.

• El sistema operativo Mac, por defecto, no incluye ninguna otra posibilidad de servidor TCP/IP con el sistema instalado. Lo que tiene integrado es la opción de compartir archivos llamada Apple Talk (o Ethernet Talk), que permite usar Apple Talk por el TCP/IP. Se trata de un producto de servidor que no forma parte del sistema operativo Mac estándar.

SERVICIOS BASICOS PARA WINDOWS 95/98

• Windows se encuentra en el extremo opuesto de Mac Os; incluye varios clientes TCP/IP pero ninguna posibilidad predeterminada de dar servicio a plataformas cruzadas. Dependiendo de la versión del sistema operativo que tenga, puede ser que haya una función servidora de Web que se parezca a la de Mac OS. Sin embargo la instalación predeterminada de Windows 95 no incluye esta característica. Cuando se instala el protocolo TCP/IP, Windows también instala varias aplicaciones TCP/IP que son útiles. Telnet, ping, netstat, traceroute, Internet Explorer y ARP se instalan todas ellas como parte del paquete TCP/IP predeterminado para redes en Windows. Desde un punto de vista del cliente, se trata de un excelente colección de utilidades que se pueden usar para diagnosticar problemas de conexión de la red. Dado que Windows 95 y 98 están diseñados para ser clientes, esta situación es perfectamente aceptable.

• Windows no proporciona por defecto un servicio TCP/IP, pero es de valor limitado en una red de plataforma cruzada; la opción de compartir archivos SMB de Windows, SMB es un sistema servidor de archivos propio de la plataforma Windows. Pero con la ayuda del protocolo de transporte NetBios puede ejecutarse sobre TCP/IP. Existen clientes de sistemas operativos Mac y Linux, pero requieren software adicional para funcionar. Si está ejecutando una red solo para Windows, no habrá problema

DIRECCIONES IP

• Longitud de 32 bits.• Identifica a las redes y a los nodos conectados

a ellas.

Subredes en IP

* Las Subredes son redes físicas distintas que comparten una misma dirección IP.

* Deben identificarse una de otra usando una máscara de subred.

* La máscara de subred es de cuatro bytes y para obtener el número de subred se realiza un operación AND lógica entre ella y la dirección IP de algún equipo.

* La máscara de subred deberá ser la misma para todos los equipos de la red IP.

Subredes en Direcciones IP

• Ejemplo• Supóngase que la dirección IP de un equipo es

148.206.257.2• La máscara de subred es 255.255.255.0* El equipo por tanto está en la subred

148.206.257.0

Funcionamiento de una aplicación Web

• Una aplicación Web es un conjunto de páginas Web estáticas y dinámicas. Una página Web estática es aquélla que no cambia cuando un usuario la solicita: el servidor Web envía la página alnavegador Web solicitante sin modificarla. Por el contrario, el servidor modifica las páginas Web dinámicas antes de enviarlas al navegador solicitante. La naturaleza cambiante de este tipo de página es la que le da el nombre de dinámica .Por ejemplo, podría diseñar una página para que mostrara los resultados del programa de salud y dejara cierta información fuera (como el nombre del empleado y sus resultados) para calcularla cuando la página la solicite un empleado en particular

Procesamiento de páginas Web estáticas

• Un sitio Web estático consta de un conjunto de páginas y de archivos HTML relacionadosalojados en unequipo que ejecutaun servidor Web.Un servidor Web es un software que suministra páginas Web en respuesta a laspeticiones de losnavegadores Web. La petición de una página se genera cuando el usuario hace clic en un vínculode una página Web, elige un marcador en un navegador o introduce un URL en el cuadro detexto Dirección del navegador.El contenido final de una página Web estática lo determina el diseñador de la página y no cambiacuando se solicita la página. He aquí un ejemplo:

<html><head><title>Página informativa</title></head><body><h1>Acerca</h1><p>Ford es un

fabricante líder de automóviles.</p></body></html>

• El diseñador escribe todas y cada una de las líneas de código HTML de la página antes decolocarla en el servidor. El código HTML no cambia una vez colocado en el servidor y por ello,este tipo de páginas se denomina página estática.

• Cuando el servidor Web recibe una petición de una página estática, el servidor lee la solicitud, localiza la página y la envía al navegador solicitante, como se muestra en la siguiente figura:

Procesamiento de páginas dinámicas

• Cuando un servidor Web recibe una petición para mostrar una página Web estática, el servidor la envía directamente al navegador que la solicita. Cuando el servidor Web recibe una petición para mostrar una página dinámica, sin embargo, reacciona de distinta forma: transfiere la página a un software especial encargado de finalizar la página. Este software especial se denomina servidor de aplicaciones. El servidor de aplicaciones lee el código de la página, finaliza la página en función de las instrucciones del código y elimina el código de la página. El resultado es una página estática que el servidor de aplicaciones devuelve al servidor Web, que a su vez la envía al navegador solicitante. Lo único que el navegador recibe cuando llega la página es código HTML puro. A continuación se incluye una vista de este proceso:

Creación de una aplicación WebEtiquetas de PHP

• Cuando PHP interpreta un fichero, busca las etiquetas de apertura y cierre, que son <?php y ?>, y que indican a PHP dónde empezar y finalizar la interpretación del código. Este mecanismo permite a PHP ser incrustado en todo tipo de documentos, ya que todo lo que esté fuera de las etiquetas de PHP será ignorado por el intérprete.

• PHP también permite las etiquetas abreviadas <? y ?> (las cuales están desaconsejadas debido a que sólo están disponibles si se habilitan con la directiva short_open_tagdel fichero de configuración php.ini, o si PHP se configuró con la opción--enable-short-tags .

• Si un fichero contiene código PHP puro, es preferible omitir la etiqueta de cierre de PHP al final del fichero. Esto impide que se añadan espacios en blanco o nuevas líneas después de la etiqueta de cierre de PHP, los cuales pueden causar efectos no deseados debido a que PHP iniciará la salida del buffer cuando no había intención por parte del programador de enviar ninguna salida en ese punto del script.

<?phpecho "Hola mundo";

// ... más código

echo "Última sentencia";

Salir de HTML• Cualquier cosa fuera del par de etiquetas de apertura y cierre es

ignorado por el intérprete de PHP, el cual permite que los ficheros de PHP tengan contenido mixto. Esto permite que PHP sea embebido en documentos HTML para, por ejemplo, crear plantillas.

<p>Esto va a ser ignorado por PHP y mostrado por el navegador.</p><?php echo 'Mientras que esto va a ser interpretado.'; ?><p>Esto también será ignorado por PHP y mostrado por el navegador.</p>

• Esto funciona como se espera, porque cuando PHP intercepta las etiquetas de cierre ?>, simplemente comienza a imprimir cualquier cosa que encuentre (a excepción de un una nueva línea inmediatamente despuéshasta que dé con otra etiqueta de apertura a menos que se encuentre en mitad de una sentencia condicional, en cuyo caso el intérprete determinará el resultado de la condición antes de tomar una decisión de qué es lo que tiene que saltar. Vea el siguiente ejemplo.

Usar estructuras con condiciones

Ejemplo #1 Salida avanzada usando condiciones <?php if ($expresión == true): ?>

Esto se mostrará si la expresión es verdadera.<?php else: ?> En caso contrario se mostrará esto.<?php endif; ?>

• En este ejemplo, PHP saltará los bloques donde la condición no se cumpla, incluso si están fuera de las etiquetas de apertura/cierre de PHP, PHP los saltará según la condición, ya que el intérprete saltará por encima de los bloques contenidos dentro de una condición que no se cumpla.

• Para imprimir bloques de texto grandes, es más eficiente abandonar el modo intérprete de PHP que enviar todo el texto a través de echo o print.

Existen cuatro tipos de pares de etiquetas de apertura y de cierre que se pueden usar en PHP. Dos de estas, <?php ?> y <script language="php"></script>, siempre están disponibles. Las otras dos son las etiquetas abreviadas y las etiquetas estilo ASP, que se pueden activar o desactivar desde el fichero de configuración php.ini Aunque algunas personas encuentran las etiquetas abreviadas y las etiquetas estilo ASP más convenientes, son menos portables y generalmente no se recomiendan.

Nota: Observe también que si se está incrustando PHP dentro de

XML o XHTML necesitará usar las etiquetas <?php ?> para seguir los estándares.

Ejemplo #2 Etiquetas de apertura y de cierre de PHP1. <?

php echo 'si se quiere mostrar documentos XHTML o XML, debe hacerse así'; ?>

2. <script language="php"> echo 'algunos editores (como FrontPage) no les gusta las instruciones de proceso'; </script>

3. <? echo 'esta es la forma más simple, una instrución de procesado SGML'; ?>

<?= expresión ?> Esto es una forma abreviada de "<? echo expresión ?>“4. <% echo 'Quizá use de forma opcional etiquetas de estilo ASP'; %>

<%= $variable; # Esto es una forma abreviada de "<% echo . . ." %>

• Las etiquetas vistas en los ejemplos uno y dos están siempre disponibles; el ejemplo uno es el más común y recomendado de los dos.

• Las etiquetas abreviadas (ejemplo tres) están solo disponibles cuando se activan mediante la directiva short_open_tag del fichero de configuración php.ini o si PHP se configuró con la opción --enable-short-tags .

Separación de instrucciones• Como en C o en Perl, PHP requiere que las instrucciones terminen en

punto y coma al final de cada sentencia. La etiqueta de cierre de un bloque de código de PHP automáticamente implica un punto y coma; no es necesario usar un punto y coma para cerrar la última línea de un bloque de PHP. La etiqueta de cierre del bloque incluirá la nueva línea final inmediata si está presente.

<?php echo 'Esto es una prueba';?>

<?php echo 'Esto es una prueba' ?>

<?php echo 'Hemos omitido la última etiqueta de cierre';

Comentarios

PHP soporta comentarios 'C', 'C++' y etilo consola Unix (estilo Perl). Por ejemplo:

<?php echo 'Esto es una prueba'; // Esto es un comentario estilo c++ de una sola línea /* Esto es un comentario multi-línea y otra lína de comentarios */ echo 'Esto es otra pruba'; echo 'Una prueba final'; # Esto es un comentario estilo consola de una sola línea?>

• Los comentarios del estilo "una sola línea" solo comentan hasta el final de la línea o del bloque actual de código de PHP, lo primero que suceda. Esto implica que el código HTML después de // ... ?> o # ... ?> SERÁ impreso: ?> sale del modo PHP y vuelve al modo HTML, por lo que // o # no pueden influir en eso. Si la directiva de configuración asp_tags está activada, actúa igual que // %> y # %>. Sin embargo, la etiqueta </script> no sale del modo PHP en un comentario de una sola línea.

<h1>Esto es un <?php # echo 'simple';?> ejemplo</h1><p>El encabezado anterior dirá 'Esto es un ejemplo'.</p>

Los comentarios al estilo 'C' finalizan con el primer */ que se encuentre. Asegúrese de no anidar comentarios al estilo 'C'. Es muy fácil cometer este error cuando se intenta comentar un bloque grande de código.

<?php /* echo 'Esto es una prueba'; /* Este comentario causará un problema*/ */?>

Crear aplicación

• Para crear una aplicación en PHP, se puede utilizar cualquier procesador de texto, ej. Bloc de notas o utilizar una aplicación más robusta, ejemplo Dreamweaver 8 o las diferentes versiones del mismo. En la siguiente imagen se muestra la caratula de la aplicación

Se elige la opción de PHP y aparece la siguiente pantalla

Dreamweaver tiene la opción de Código, Dividir y Diseño. Nos posicionamos en la opción de Código, y se visualiza el siguiente código

Se guarda el archivo con extensión .PHP. Para poder visualizar la aplicación el Apache tiene una carpeta predefinida donde se deben guardar las aplicaciones

Se puede crear una carpeta y guardar la página web. Para poder visualizarla se posiciona en el navegador predefinido y se escribe locahost o 127.0.0.1 /en nombre de la aplicación.

Para poder ver el código fuente en cualquier navegador, se tiene una opción para visualizar el código fuente de la aplicación. Ejemplo el código resultante se muestra en la siguiente imagen.

Agregar controles a un formulario• Para agregar controles a un formulario, se puede realizar de diferentes

formas. Las más comunes es utilizando el bloc de notas donde se puede realizar páginas o aplicaciones Web a pie, esto quiere decir escribirlas línea por línea ejemplo.

• La otra forma es por medio del programa Dreamweaver (cualquier versión) y se muestra en la siguiente imagen.

• Para agregar más controles solamente se deben tanto escribir, como arrastrar en el programa Dreamweaver. Una ventaja al utilizar esta herramienta es, al momento de estar escribiendo los diferentes controles o complementos se puede visualizar el modo diseño. Otra ventaja es cuando se empieza a declarar los diferentes atributos se tiene una función de autoayuda.

• Nota: Para poder interactuar con los controles o que en su defecto los mismo nos proporcionen datos, se necesitan la etiqueta <FORM></FORM>

Organizar controles en un formulario

La forma de organizar los controles de un formulario es utilizando tablas en html que son fáciles de diseñar. Ejemplo Prueba_de_formulario.php

Formularios WebLas páginas php. Hemos visto como crear una página web, darle formato y añadirle funcionalidades. Una

página web puede hacer muchas más cosas, puede mostrar los datos que obtiene es ese instante de una Base de Datos que reside en un servidor de Internet, puede comunicarse con otras webs, puede utilizar mapas, información del tiempo, etc.

En definitiva, una página web puede mostrar información actualizada cada vez que se ejecuta. Es lo que se conoce como páginas dinámicas, en contraposición a las páginas estáticas, que siempre muestran la misma información.

Para crear páginas dinámicas hay que emplear un lenguaje de programación web, como Java, .NET, o PHP. Si quieres ver las diferencias entre estos lenguajes visita este tema avanzado.

Los lenguajes scripts son lenguajes que no necesitan ser compilados Una máquina servidor es capaz de interpretar el código fuente y ejecutarlo, lo que hace de los lenguajes script la mejor solución para programación en entornos web.

Existen muchos lenguajes script (PHP, ASP, .NET, JSP, Perl, Phyton...) que nos permiten crear webs dinámicas, desde páginas simples hasta potentes aplicaciones web. Todos los lenguajes tienen sus pros y sus contras, por lo que no hay ninguno que sea claramente mejor que el resto.

Vamos comentar los tres más empleados: ASP, JSP y PHP.

• ASPActive Server Pages (ASP) es un lenguaje script

propiedad de Microsoft.Su estructura se asemeja al lenguaje de programación Visual Basic. Es útil para crear aplicaciones web sencillas, normalmente con bases de datos de Access.

El principal inconveniente que presenta es que sólo funciona en servidores Windows, y no en otros sistemas operativos como Linux. Nos referimos sólo al servidor que aloja la página, no al sistema operativo de quien la visita.

JSPJava Server Pages (JSP) es un lenguaje que permite utilizar código Java en scripts.La tecnología fue creada por Sun Microsystems, y más tarde liberada para su uso general.Es un lenguaje potente, que dispone de una gran comunidad por estar basado en Java. Es muy utilizado por empresas o corporaciones para sus sitios web y aplicaciones.La mayoría de los servidores se pueden adaptar para utilizar Java, por lo que la aplicación puede ser exportada a muchas plataformas.Normalmente, se utilizan bases de datos MySQL.

PHPPHP Hypertext Pre-processor (PHP) es el lenguaje script más utilizado en la web, ya que es sencillo de aprender y está diseñado expresamente para su uso en web. Esto hace que tenga una gran comunidad de usuarios, lo que facilita encontrar ejemplos e información utilizando cualquier buscador.Puede ser ejecutado en la mayoría de sistemas operativos, y utiliza cualquier gestor de bases de datos, aunque el más usado es MySQL.Es ideal para webs sencillas y de bajo costo, pero también se pueden crear aplicaciones complejas, sobre todo si se le añaden librerías, la mayoría gratuitas.Es además la opción más económica.

¿Qué es un formulario web?• Un formulario web dentro de una página web permite al usuario introducir datos los

cuales son enviados a un servidor para ser procesados. Los formularios web se parecen a los formularios de papel porque los internautas llenan dichos formularios usando casillas de selección, botones de opción, o campos de texto. Por ejemplo, los formularios web pueden ser usados para introducir datos de envío o datos de una tarjeta de crédito con el objetivo de solicitar un producto o bien ser utilizada para solicitar datos (p. ej., al buscar en un motor de búsqueda).

• Además de servir como plantillas para nueva información, los formularios web también pueden ser usados para consultar y mostrar información existente en forma similar a los formularios decombinación de correspondencia, incorporando las mismas ventajas. La separación entre la estructura y los datos subyacentes de un mensaje permite a ambos variar independientemente. El uso de formularios webs para este propósito evita los problemas asociados con la creación explícita de páginas web separadas para cada registro en una base de datos.

• Los formularios web están definidos en lenguajes de programación como HTML, Perl, Java o .NET. Las implementaciones de estos lenguajes usualmente invocan automáticamente los idiomas de la interfaz de usuario y otras de sus características, tales como el diseño estructural, y tema, minimizando el tiempo, el costo y el tiempo de programación

• Los formularios web están definidos en lenguajes de programación como HTML, Perl, Java o .NET. Las implementaciones de estos lenguajes usualmente invocan automáticamente los idiomas de la interfaz de usuario y otras de sus características, tales como el diseño estructural, y tema, minimizando el tiempo, el costo y el tiempo de programación.

• Los formularios pueden ser combinados con varios scripts

para permitir a los programadores crear sitios web dinámicos. Esto incluye tanto lenguajes del lado del servidor como lenguajes del lado del cliente.

Lado del cliente

• El estándar de facto en lo que a scripts para webs del lado del cliente respecta es JavaScript. Utilizar JavaScript en el DOM es el método más utilizado para generar HTML dinámico que permite creación y modificación dinámica de una página web dentro del navegador.

• Aunque los lenguajes del lado del cliente que son usados en conjunto con los formularios son limitados, estos comúnmente pueden servir para hacer una prevalidación de los datos del formulario y/o preparar dichos datos para enviarlos al programa del lado del servidor.

Lado del servidor• Los programas del lado del servidor pueden hacer un vasto

ordenamiento de tareas para crear sitios web dinámicos — desde la autenticación de un usuario través de, por ejemplo, LDAP para enviar y guardar información en una base de datos, hasta verificar la ortografía de un documento al enviar un correo electrónico — a diferencia de lo que podría hacer un programa del lado del cliente.

• La mayoría de las peticiones de los programas del lado del servidor deben pasar por la interfaz de entrada común (CGI) del servidor web para ejecutar el programa que realiza las tareas.

• La ventaja del lado del servidor sobre el lado del cliente es la concentración de la funcionalidad en un solo computador (el servidor), en vez de depender de la implementación en cada navegador de todas las funciones involucradas.

• Este mismo problema es tremendamente evidente para cualquier programador que escribe código JavaScript para múltiples navegadores.

Crear un formulario web.El objeto form El objeto form debe estar contenido entre las

etiquetas <form> y </form>En principio la sintaxis básica para referirnos a un formulario sería:

<form name="nombre_formulario" action="" method="POST"

target="_blank">.......campos....</form>

De todas formas, iremos viendo la aplicación de este tipo de sintaxis con los próximos ejemplos y a medida que avancemos.

propiedad descripción

name es el nombre único del formulario.

actiones el lugar al cual se envía el formulario para ser procesado. El action define la URL a la cual se envía dicho formulario.

method

método de envío de los datos insertados en un formulario. El method puede ser:GET = envía los datos en una cadena "visible". Conveniente para enviar pocos datos.POST = envía los datos en forma "invisible". Conveniente para enviar una gran cantidad de datos.

target

define la ventana o marco (frame) en la que se mostrarán o procesarán los resultados

del formulario.

El valor es el mismo que el utilizado en HTML (blank, self, top, nombre_marco, etc..)

método descripción

submit envía el formulario.

reset restablece el formulario a los valores por defecto.

Sintaxis básica <form name="nombre_formulario" action="procesar.php" method="POST" target="_blank">.......campos....</form> Métodos del objeto formEl objeto form posee dos métodos:

Sintaxisbásica <form name="nombre_formulario" action="procesar.php" method="POST" target="_blank">.......campos....<input type="submit" value="enviarformulario"><input type="reset" value="borrar"></form>

Uso de Formularios• Otra de las características más importantes de PHP es que

gestiona formularios HTML. El conceptobásicoque es importante entender es que cualquier elemento de los formularios estará disponible automáticamente en su código PHP. Ejemplos sobre cómo usar formularios HTML con PHP. Observemos un ejemplo:

Ejemplo Un formulario HTML simple <formaction="accion.php" method="post"><p>Su nombre: <input type="text" name="nombre" /></p><p>Su edad: <input type="text" name="edad" /></p><p><input type="submit" /></p></form>

No hay nada especial en este formulario, es solamente HTML sin ninguna clase de etiquetas especiales de ningún tipo. Cuando el usuario rellena éste formulario y oprime el botón Submit, una página titulada accion.phpes llamada. En estearchivoencontraráalgoasí:

Ejemplo Imprimir información desde nuestro formulario Hola<?phpecho “$_POST['nombre'])”;?>.

Usted tiene <?phpecho “$_POST['edad']”;?>años de edad.

Un ejemplo del resultado de esta secuencia de comandos puede ser: Hola José. Usted tiene 22 años de edad.

Controles básicos

Etiqueta <INPUT> <input> La etiqueta<input>es la que controla la mayoría de los posibles

controles de un formulario en Html. El tipo de control lo indicaremos mediante el atributo type.

Esta etiqueta no lleva etiqueta de cierre. Veamos cómo se usa y sus atributos:

El resto de atributos dependen del tipo de control por lo que los estudiaremos por separado para los distintos tipos:

Menús desplegables

<select>,<option>y<optgroup> Otro tipo de controles son los menúes desplegables. Estos

permiten seleccionar una o varias opciones de una lista. Un menú desplegable se crea con la etiqueta<select>y dentro

de ella crearemos cada elemento de la lista con<option>. La tercera etiqueta,<optgroup>, sirve para agrupar los elementos de la lista cuando es necesario.

Veamos cómo se utilizan estas etiquetas:

Desarrollo de aplicaciones web Aplicación de controles HTML

WEB

De Validación

Del Usuario

2.2 Gestión del estado

Procesamiento de cadenas

El lenguaje PHP ofrece una serie de herramientas para el procesamiento de cadenas, que es muy utilizado en mostrar datos con un cierto formato o en almacenar en una base de datos información de una manera determinada. A continuación se detallan algunas funciones para el manejo de cadenas:

Funciones echo y print()Estas dos instrucciones se utilizan para mostrar una o varias cadenas en la

pantalla. Generalmente se ha venido utilizando la instrucción echo en los ejemplos realizados, pero también es posible utilizar la función print(), con la diferencia de que en esta función, la cadena a imprimir debe estar entre paréntesis, cosa que con la instrucción echo, no es necesario.

Ejemplo:echo $Nombre;print ($Domicilio);Funcion: printf()

Esta función es similar a la función print(), pero permite dar un cierto formato a lo que se desea imprimir. La Sintaxis de esta función es:

printf("Formato", $cadena);Formato debe ser una letra permitida.$cadena es la variable a imprimir.

• Los tipos de formatos permitidos, son los siguientes:

Letra de Formato Especificación de lo que realiza

B Expresa a la variable como número binario

C Expresa a la variable como carácter ASCII

d Expresa a la variable como número decimal

f Expresa a la variable como número de punto flotante

o Expresa a la variable como número octal

s Expresa a la variable como un string (cadena)

x Expresa a la variable como número hexadecimal en minúsculas

X Expresa a la variable como número hexadecimal en Mayúsculas

Para establecer que la letra es un formato de impresión, se debe colocar delante de ella el signo de porcentaje (%).

Ejemplo 1:Este ejemplo almacena el valor del sueldo en la variable $Sueldo, y

luego lo muestra de diferente forma:<Html><Title> Ejemplo1-Printf.php </Title><Body><?Php $Sueldo = 2947.3262; printf($Sueldo . "<Br>"); printf("%f", $Sueldo); printf("<Br>"); printf("$ %7.2f",$Sueldo); printf("<Br>");?></Body></Html>

• Ejemplo 2: • Asignar a una variable, una determinada cadena y posteriormente mostrarla en todos los formatos descriptos.• <Html>

<Title> Ejemplo2-Formatos.php </Title><Body><?Php $cadena = "76.9 minutos"; printf("Resultado en formato binario: "); printf("%b", $cadena); printf("<Br>"); printf("Resultado según la tabla ASCII: "); printf("%c", $cadena); printf("<Br>"); printf("Resultado en formato decimal: "); printf("%d", $cadena); printf("<Br>"); printf("Resultado en formato float: "); printf("%f", $cadena); printf("<Br>"); printf("Resultado en formato octal: "); printf("%o", $cadena); printf("<Br>"); printf("Resultado en formato string: "); printf("%s", $cadena); printf("<Br>"); printf("Resultado en formato hexadecimal (minúscula): "); printf("%x", $cadena); printf("<Br>"); printf("Resultado en formato hexadecimal (mayúscula): "); printf("%X", $cadena);?></Body></Html>

Funcion: sprintf()

Es similar a la función printf, con la diferencia de que no imprime el resultado en el navegador, sino que se utiliza para almacenar una cadena en una variable.

La sintaxis es la siguiente: variable = sprintf ("Formato", cadena);

En este caso, sprintf, devuelve en la variable el valor de la cadena transformado de acuerdo al Formatoindicado. El Formato puede ser cualquier letra de las descriptas para la función printf.

Ejemplo 3IDEM al ejemplo 2 utilizando sprintf.<Html><Title> Ejemplo3-Sprintf.php </Title><Body><?Php $cadena = "76.9 minutos"; // Transformacion a binario $variable = sprintf("%b<Br>",$cadena); // Transformación a caracteres $variable .= sprintf("%c<Br>", $cadena); // Transformación a decimal $variable .= sprintf("%d<Br>", $cadena); // Transformación a float $variable .= sprintf("%f<Br>", $cadena); // Transformación a octal: "); $variable .= sprintf("%o<Br>", $cadena); // Transformación a string $variable .= sprintf("%s<Br>", $cadena); // Transformación a hexadecimal (minúscula) $variable .= sprintf("%x<Br>", $cadena); // Transformación a hexadecimal (mayúscula) $variable .= sprintf("%X<Br>", $cadena); echo $variable;?></Body></Html>

Funcion: strtoupper() Esta función permite transformar una cadena a mayúsculas.

Ejemplo 4: Almacenar una frase en una variable y posteriormente mostrarla en mayúsculas.

<Html><Title> Ejemplo4-StrToUpper.php </Title><Body><?Php $frase = "Hoy es un día soleado."; echo "<H3>"; echo "Frase ingresada: " . $frase; echo "<Br><Br>"; echo "Frase en Mayúsculas: " .strtoupper($frase);?></Body></Html>

Funcion: strtolower()Es la inversa de la función anterior, es decir que transforma una cadena en minúsculas.

Ejemplo 5:

Almacenar una frase en una variable y posteriormente mostrarla en minúsculas.<Html><Title> Ejejemplo5-StroLower.php </Title><Body><?Php $frase = "ESTE APUNTE ES DE PHP"; echo "<H3>"; echo "Frase ingresada: " . $frase; echo "<Br><Br>"; echo "Frase en Minúsculas: " .strtolower($frase); ?></Body></Html>

Funcion: ucwords() Convierte el primer carácter de cada palabra en mayúsculas.

Ejemplo 6: Inicializar una variable con el nombre y apellido de una persona y posteriormente mostrarla con

sus primeros caracteres en mayúsculas.<Html><Title> Ejemplo6-UcWords.php </Title><Body><?Php $nombre = "marcelorodriguez"; echo "<H3>"; echo "Cadena original: " . $nombre; echo "<Br><Br>"; echo "Cadena convertida: " .ucwords($nombre); ?></Body></Htm>

Funcion: trim() Mediante esta función, se eliminan los espacios en blanco al inicio y al final de una cadena..

También elimina los caracteres de control: “\n”, “\r”, “\t” y “\0”.Ejemplo 7:

<Html><Title> Ejemplo7-Trim.php </Title><Body><?Php $profesion = "\n\r\tTécnico Constructor \n\n"; echo "<H3>"; echo "Cadena original: " . $profesion; echo "<Br><Br>"; echo "Cadena convertida: " .trim($profesion); ?></Body></Html>

Al ejecutar este ejemplo, no se observarán diferencias al visualizarlo en el navegador, pero si se observarán diferencias si se visualiza el código generado por el programa.

Funciones: ltrim() y chop()

Funcionan de forma similar a trim(), con la

diferencia de que ltrim(), elimina espacios en blanco al principio de la cadena, mientras que chop(), elimina espacios en blanco al final de la cadena.

Funcion: strlen() Esta función permite obtener la longitud de una cadena de caracteres pasada como parámetro.Ejemplo 8: Almacenar en una variable una cadena de caracteres y luego mostrar la cantidad de caracteres

que la constituyen.<Html>

<Title> Ejemplo8-Strlen.php </Title><Body><?Php $cadena = "PHP es un lenguaje de programación."; echo "<H3>"; echo "Cadena : " . $cadena; echo "<Br><Br>"; echo "Cantidad de caracteres: " .strlen($cadena); ?></Body></Html>

Funcion: chr()

• La función chr() recibe un valor numérico y devuelve el carácter de la tabla ASCII que le corresponde• Ejemplo 9: • Imprimir la tabla ASCII desde el código 30 en adelante.

• <Html><Title> Ejemplo9-Chr.php </Title><Body><?Php echo "<H3>"; echo "<Table border=2 align=Center width=100%>"; $c=30; for ($i=1; $i<24; $i++) { echo "<tr>"; for ($j=1; $j<=10; $j++) { echo "<th align=Center>" . $c . "</th>"; echo "<td align=Center>". chr($c) . "</td>"; $c++; } echo "</tr>"; } echo "</Table>" ; ?></Body></Html>

Funcion: ord()

Es la función inversa a la chr(), es decir que dado un carácter como parámetro, la función ord(), devuelve el valor del código que le corresponde.

Ejemplo 10: Asignar a una variable un carácter y posteriormente mostrar el código que le

corresponde:<Html><Title> Ejemplo10-Ord.php </Title><Body><?Php echo "<H3>"; $c = "L"; echo "El caracter: $c tiene como código: " .ord($c);?></Body></Html>

Funcion: number_format()

La función number_format permite dar un formato deseado a un valor numérico determinado. La sintaxis es la siguiente:

number_format(variable Numerica, Cantidad De Decimales, “Separador de decimales”, “Separador de Miles”) ;

Ejemplo 11: Dado un cierto valor numérico, imprimirlo con dos decimales separados por una coma, mostrando también los

miles separados por puntos.<Html>

<Title> Ejercicio11-NumberFormat.php </Title><Body><?Php echo "<H3>"; $valor = 8546921546.4875; echo "El valor corresponde a: "; echo number_format($valor,2,",",".");?></Body></Html>

Funcion: substr()

• Permite extraer una porción de texto de la cadena pasada como parámetro. Su sintaxis es la siguiente:• substr(cadenaOriginal, lugarInicial, cantidadDeCaracteres)• cadenaOriginal: Es la cadena de donde se extraerá el texto.

lugarInicial: Representa la posición desde donde se comenzarán a extraer el texto.CantidadDeCaracteres: Indica cuantos caracteres se extraerán. (Opcional).

• Ejemplo 12:• <Html>

<Title> Ejemplo12-Subsrt.php </Title><Body><?Php echo "<H3>"; $cadena = "Alicia Martinez"; echo "Cadena Original: " . $cadena; echo "<Br>"; echo "Tres primeros caracteres: "; echo substr($cadena,0,3); echo "<Br>"; echo "Seis caracteres a partir del octavo: "; echo substr($cadena,7,6); echo "<Br>"; echo "Cuatros caracteres comenzando desde el último: "; echo substr($cadena,-4);?></Body></Html>

Funcion: ereg() Permite buscar una cadena dentro de otra cadena, devolviendo un valor verdadero si encontró coincidencia, de lo contrario,

devuelve falso.Ejemplo 13:<Html>

<Title> Ejemplo13-Erg.php </Title><Body><?Php echo "<H3>"; $cadena = "Carlos Javier Robles"; echo "Cadena Original: " . $cadena; echo "<Br>"; $clave = "Javier"; echo "<Br>"; if (ereg($clave, $cadena)) { echo "La palabra $clave existe en $cadena"; } else { echo "La palabra $clave No existe es $cadena"; }?></Body></Html>

Funcion: eregi()

Es similar a la función anterior, con la diferencia de que eregi() ignora las mayúsculas y minúsculas.Funcion: ereg_replace() Esta función ereg_replace permite buscar una cadena dentro de otra y reemplazar la cadena encontrada con una cadena definida.La sintaxis es la siguiente:nuevaCadena = ereg_replace(claveBuscada,

nuevoDato, cadenaOriginal);

Ejemplo 14: En el ejemplo anterior, buscar y reemplazar el nombre Javier por Martín.<Html>

<Title> Ejemplo14-EregReplace.php </Title><Body><?Php echo "<H3>"; $cadena = "Carlos Javier Robles"; echo "Cadena Original: " . $cadena; echo "<Br>"; $clave = "Javier"; $nuevoNombre = "Martín"; $nuevaCadena = ereg_replace($clave, $nuevoNombre, $cadena); echo "<Br>"; echo "Nuevo Nombre: " . $nuevaCadena ;?></Body></Html>

Funcion: eregi_replace() Es similar a la función anterior, con la diferencia de que eregi_replace() no tiene en cuenta las mayúsculas y minúsculas.Funcion: split() Permite separar una cadena de caracteres, pasándole como parámetro el carácter que actuará como separador. La cadena separada es almacenada en un arreglo. La sintaxis es la siguiente:vector = split(caracter, cadena, cantidadDeElementos)carácter: Es el carácter que actuará como separador.

cadena: Es la cadena original.cantidadDeElementos: Es opcional, y determina cuantos elemento contendrá el vector generado. En caso de no indicarse, ajusta la cantidad automáticamente.

Ejemplo 15: Dada una cadena de caracteres, generar un arreglo (vector) que contenga como elementos a cada una de las palabras de la cadena.<Html>

<Title> Ejemplo15-Split.php </Title><Body><?Php echo "<H3>"; $cadena = "El invierno es muy frío"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; $separador = " "; $v = split($separador, $cadena); $cantidad = count($v); for ($i=0; $i<$cantidad; $i++) { echo "Elemento [$i]: $v[$i] <Br>"; }?></Body></Html>

Ejemplo 16: Idem al anterior, pero guardando únicamente tres elementos en el vector.<Html>

<Title> Ejemplo16-Split.php </Title><Body><?Php echo "<H3>"; $cadena = "El invierno es muy frío"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; $separador = " "; $v = split($separador, $cadena, 3); $cantidad = count($v); for ($i=0; $i<$cantidad; $i++) { echo "Elemento [$i]: $v[$i] <Br>"; }?></Body></Html>

Funcion: ucfirst() Permite pasar a mayúscula el primer carácter de una cadena. La función ucfirst() es útil

cuando se desea imprimir nombres propios.Ejemplo 17:<Title> Ejemplo17-Ucfirst.php </Title>

<Body><?Php echo "<H3>"; $cadena = "alejandra"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; echo "Cadena procesada: " .ucfirst($cadena); echo "<Br><Br>";?></Body></Html>

Funcion: ucwords() Permite cambiar a mayúsculas el primer carácter de todas las palabras de una cadena.Ejemplo 18:<Title> Ejemplo18-Ucwords.php </Title>

<Body><?Php echo "<H3>"; $cadena = "javier es buen alumno"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; echo "Cadena procesada: " .ucwords($cadena); echo "<Br><Br>";?></Body></Html>

Funcion: strcmp()

Compara dos string (cadenas).

Ejemplo: strcmp(<string1>,<string2>)Retorna cero si las dos cadenas son exactamente iguales.

Retorna mayor a cero si <string1> es mayor alfabéticamente.Retorna menor a cero en caso contrario$cadena1="lorena";$cadena2="analia";if (strcmp($cadena1,$cadena2)>0){ echo $cadena1." es mayor alfabéticamente que ".$cadena2;}

De todos modos para comparar si dos string son iguales está permitido utilizar el operador == if ($cadena1=="lorena"){ echo 'La variable $cadena1 almacena la cadena lorena';}

Se imprime: La variable $cadena1 almacena la cadena lorena (Recordar que si utilizamos las comillas simples, las variables no se sustituyen por el contenido de las mismas)

La función strcmp es sensible a mayúsculas y minúsculas, si queremos ver si dos cadenas son iguales insensible a mayúsculas y minúsculas debemos emplear la función strcasecmp.

Funcion: strpos() • Esta función devuelve la posición que se encuentra en una cadena fuente una cadena clave. La sintaxis es la siguiente:• $Pos = strpos(cadenaFuente, cadenaClave, comienzo);• cadenaFuente: Es la cadena que será recorrida.

cadenaClave: Es la cadena buscada.comienzo: Es opcional, y determina de que posición comenzará a explorar. Si se ignora, comienza desde el principio, posición cero.

• Ejemplo 19: • Almacenar en una cadena, una frase y luego una palabra clave a buscar su posición. Imprimir la posición que le corresponde.• <Html>

<Title> Ejemplo19-Strpos.php </Title><Body><?Php echo "<H3>"; $cadena = "En un ecosistema conviven diversos tipos de organismos"; $clave = "eco"; echo "Cadena Original: " . $cadena; echo "<Br><Br>"; echo "Clave buscada: " . $clave; echo "<Br><Br>"; $p = strpos($cadena, $clave); if ($p!="") { echo "La clave se encuentra en la posición: $p" ; } else { echo "No existe la clave en la cadena fuente"; }?></Body></Html>

VARIABLES EN PHP

• Las variables en PHP son representadas con un signo de dólar ($) seguido por el nombre de la variable. El nombre de la variable es sensible a minúsculas y mayúsculas. Es decir, las siguientes declaraciones de variables son distintas entre ellas:

• $variable, $Variable, $variAble, $VariAble, etc. representan a distintas variables.• Recordar que una variable es un espacio de la memoria del ordenador (en este

caso del servidor) a la que asignamos un contenido que a grandes rasgos puede ser un valor numérico (sólo números, con su valor de cálculo) o alfanumérico (sólo texto o texto con números).

• • Para declarar un nombre de variable válido, éste tiene que empezar con una letra

(o si no empieza con una letra, tendrá que hacerlo con un carácter de subrayado), seguido de cualquier número de letras, números y caracteres de subrayado. Veamos algunos ejemplos:

Posible nombre de variable Validez

$4variable Nombre de variable inválido.

$_4variable Nombre de variable válido.

$variable4 Nombre de variable válido.

$otra Nombre de variable válido.

$1_otra Nombre de variable inválido.

$variable_de_nombre_muy_largo Nombre de variable válido.

$ABC Nombre de variable válido.

$ A B C Nombre de variable inválido.

$A_y_B_x_C Nombre de variable válido.

Cuando el intérprete PHP detecta un error en la sintaxis al declarar una variable, cuando tratamos de accecer a la página php nos aparecerá un mensaje de error. Por ejemplo si en un archivo php incluimos una línea como $ A B C = 5; donde el nombre de variable es inválido ya que tiene espacios intermedios, nos aparecerá un mensaje de error:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE

or '$' in /home/miraiz/domains/midominio.com/public_html/prueba.php on line 3. Este mensaje nos informa de que hay un problema en el archivo php y nos indica la línea donde el intérprete considera que está el problema.

DIFERENCIAS ENTRE LOS OPERADORES DE ASIGNACIÓN E IGUALDAD

• • Asignación (=)• • El operador de asignación es "=". Se podría pensar que es

como un "igual a". No lo es. El operador igual en programación no tiene el mismo sentido que en matemáticas. En programación, significa que el valor de la expresión de la derecha se establece en el operando de la izquierda.

• • Veamos un ejemplo donde todo quedará mucho más claro.

<?php

$a = 3; // asignamos el valor 3 a la variable $a

$b = "cadena"; // asignamos el valor "cadena" a la variable $b

?>

Igualdad (==) El comparador de igualdad es ==. Como su

propio nombre indica, sirve para comparar dos valores o variables y no para asignar valores. Este operador devuelve el resultado de la operación lógica de 'igual a tal y como podemos apreciar en el siguiente ejemplo.

<?php

$a = 3;

$b = 3;

$a == $b; // El resultado de la comparación es TRUE porque $a es igual a $b

$a = 3;

$b = 4;

$a == $b; // El resultado de la comparación es FALSE porque $a no es igual a $b

?>

TIPOS DE DATOS

En PHP no es necesario indicar el tipo de datos al que pertenece una variable, sino que son asumidos directamente por el intérprete PHP, que es el encargado de interpretar el código.

Ahora veremos en una tabla los distintos tipos

de datos que se pueden usar en PHP.

TIPO DE DATO DEFINICIÓN

integer

Los integers, o enteros, pueden tener distintos valores numéricos enteros que se expresan con diferentes notaciones.

$variable = 18; // Número entero positivo

$variable = -18; // Número entero negativo

$variable = 0x12; // Notación hexadecimal, es igual a 18 decimales

float o double

Este tipo de datos son los números de punto flotante a los que normalmente llamamos “números decimales”, por ejemplo, 9.876. La sintaxis para utilizarlos es bastante simple:

$variable = 9.876;

string

El tipo de datos string, también conocido como cadena de caracteres, se expresa con la siguiente sintaxis:

$variable = "Yo soy una cadena";

boolean

Se trata de un tipo lógico. Sus posibles valores son TRUE o FALSE.

$variable = true;

$variable = false;

INSTRUCCIÓN ECHO Esta instrucción PHP hace que se muestre por

pantalla un texto, una variable, o una combinación de texto y variables. Crea un archivo php con el siguiente código, ponle un nombre como usoDeEcho.php y súbelo al servidor.

<?phpecho "salida por pantalla. ";$a = 5;echo $a;echo " El valor de a es $a.";?>

• Se define a un arreglo como un grupo de elementos relacionados entre sí por medio de índices. Los arreglos pueden ser de una o más dimensiones, los de una dimensión, son llamados comúnmente"vectores".

•A diferencia con el lenguaje C, en PHP, un vector puede tener elementos de distintos tipos.Para hacer referencia a un elemento del vector, se utiliza un índice, que indica la dirección en donde se encuentra un determinado valor. El índice en un arreglo comienza siempre por cero. (Mas adelante se verá que el índice de un vector, no necesariamente debe ser un número entero, sino que también puede ser un texto).

• EjemploPráctico1:• Almacenar los nombres de los días de la semana en un vector y luego imprimirlos uno debajo de otro.• <Html>

<Title> Ejmeplo1 </Title><Body><?PHP // Inicializacion del Vector

• $dia[0] = "Domingo"; $dia[1] = "Lunes"; $dia[2] = "Martes"; $dia[3] = "Miércoles"; $dia[4] = "Jueves"; $dia[5] = "Viernes"; $dia[6] = "Sábado";

• // Impresion del vector• for($i=0; $i<7; $i++)

{ echo ($dia[$i] . "<Br>") ; } ?></Body></Html>

• Comentario:

• Se inicializa el vector indicando el número que le corresponde a cada posición entre corchetes [ ] y asignando el valor que se desea almacenar en dicha posición.• Un vector, en PHP, puede contener elementos de distintos tipos de datos, es decir, un elemento puede ser un número entero, otro una cadena, otro un número con

decimales, etc.Un modelo de este caso se puede observar en el siguiente ejemplo.

Ejemplo Práctico 2: Almacenar en un vector los datos personales de un empleado y luego mostrarlos en pantalla.<Html>

<Title> Ejemplo 2 </Title><Body><?PHP // Inicializacion del Vector

$Empleado[0] = 4371; $Empleado[1] = "Martinez Leandro"; $Empleado[2] = "27.643.742"; $Empleado[3] = 1429.54; $Empleado[4] = "Arquitecto";

// Impresion del vector echo ("Legajo: " . $Empleado[0] . "<Br>");

echo ("Nombre: " . $Empleado[1] . "<Br>"); echo ("DNI : " . $Empleado[2] . "<Br>"); echo ("Sueldo: " . $Empleado[3] . "<Br>"); echo ("Profesion: " . $Empleado[4] . "<Br>"); ?></Body></Html>

Existen varias maneras de inicializar vectores en PHP. A continuación se describen algunos ejemplos. Pais[] = "Argentina";

Pais[] = "Uruguay"; Pais[] = "Brasil"; Pais[] = "Chile";

En este caso se observa que no es necesario colocar el número de índice, ya que PHP lo asigna automáticamente para cada valor, comenzando siempre desde cero. Otra forma de inicializar un vector, es a través del constructor array, como se muestra en el siguiente ejemplo:

Pais =array("Argentina","Uruguay","Brasil","Chile");También se puede definir un arreglo asociando explícitamente el índice a un valor, como se indica a continuación: $Frutas = array(0 => "Manzana",

1 => "Naranja", 2 => "Pera", 3 => "Ananá");

Además, los índices, pueden no ser obligatoriamente consecutivos, ni tampoco comenzar de cero, ni tampoco ser un número. (Ver ejemplos más adelante).Se puede conocer la cantidad de elementos que tiene un vector, para ello se utiliza la funcióncount(vector). Esta función acepta como parámetro el nombre del vector y devuelve la cantidad de elementos del mismo.

Ejemplo Práctico 3:

Cargar en un vector artículos de librería y luego imprimir la cantidad de ellos.<Html>

<Title> Ejemplo 3 </Title><Body><?PHP // Inicializacion del Vector $Articulos =array("Lápis","Goma","Hoja","Tinta");

// Impresion del vector $Cantidad = count($Articulos);

echo ("La cantidad de Artículos son: " . $Cantidad); ?>

</Body></Html>

Un vector en PHP puede tener elementos en cualquier posición, por lo tanto, se puede cargar un vector con posiciones no consecutivas, sino en forma totalmente aleatoria. Para poder recorrer este tipo de vectores se utilizan las funciones next() y prev().

Ejemplo Práctico 4: Cargar los nombres de personas en cualquier posición. <Html><Title> Ejemplo 4 </Title><Body><?PHP // Inicializacion del Vector

$Nombre[10] = "Marcelo"; $Nombre[20] = "Alicia"; $Nombre[15] = "Alejandra"; $Nombre[35] = "Mario"; $Nombre[12] = "Alberto";

// Impresion del vector reset($Nombre);

echo ("<H2>" . "Vector de Nombres"); echo ("<H3>" . "<Hr>"); do { // Buscar Posicion especificada $i = key($Nombre);

// Buscar Contenido en esa posicion $Valor = current($Nombre); echo ("Posición: " . $i . " - "); echo ("Contenido: " . $Valor); echo ("<Br>"); } while (next($Nombre)); ?></Body></Html>

Comentario:Aquí se observa que los nombres fueron cargados en posiciones aleatorias. Con la funciónreset(), se logra llevar el puntero al principio del vector y para poder encontrar la posición de un elemento se utiliza la

función key(), la cual acepta como parámetro el vector y devuelve la posición. Luego para poder obtener el contenido en esa posición se utiliza la función current(), que acepta el vector y devuelve el valor almacenado. La función next() avanza el puntero a la posición siguiente, si se ha llegado al final del vector, esta función devuelve false.

En caso de querer imprimir los datos del vector en forma invertida, solamente se debe cambiar la instrucción reset($Nombre) por: end($Nombre) y la instucción: while (next($Nombre)) por : while (prev($Nombre)).

Como se dijo anteriormente, las funciones next() y prev() devuelven false al llegar al final y principio del vector respectivamente, pero tambien devuelven false cuando el valor de un elemento es cero. La función end() lleva el puntero al final del vector y con la función prev(), se retrocede el puntero hasta el anterior. Cuando se llegó al principio del vector, la función prev() devuelve false y sale del ciclo.Otra forma de recorrer un vector de estas característica es utilizando las funciones list() y each(), de la siguiente manera:

Ejemplo Práctico 5:•

Cargar Legajos de personas con sus respectivos Nombres• <Html>

<Title> Ejemplo5.php </Title><Body><?Php // Inicializacion del Vector

• $Nombre[100] = "Javier"; $Nombre[200] = "Cintia"; $Nombre[150] = "Ricardo"; $Nombre[350] = "Raúl"; $Nombre[120] = "Guillermo";

• // Impresion del vector• reset($Nombre);• echo "<H2>"."Vector de Nombres";

echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Nombre)) { echo "Legajo: " . $i ." - "; echo "Nombre: " . $Valor; echo "<Br>"; } ?></Body></Html>

• La función list(), almacena en los parámetros ($i, $Valor), el índice y el valor devuelto por la función each(), que tiene como parámetro el vector puesto en juego. Además, la función list(), avanza automáticamente el puntero al siguiente elemento del vector, y en caso de que el vector haya llegado al final, la función devuelve false.

• Vectores con índice de Texto• Un vector en PHP, no solamente debe contener índice numérico, sino también, puede ser una letra o un texto.

• Ejemplo Práctico 6: • Cargar en un vector algunas ciudades del

mundo, de manera que el índice del vector contenga los tres primeros caracteres de la ciudad almacenada.

<Html><Title> Ejemplo 6.php </Title><Body><?Php // Inicializacion del Vector $Ciudad = array("Par" => "Paris", "Lon" => "Londres", "Ate" => "Atenas", "Ber" => "Berlin", "Lim" => "Lima");

echo "<H2>"."Vector de Ciudades"; echo "<H3>"."<Hr>"; while (list($i,$Valor)=each($Ciudad)) { echo "Posición: " . $i ." - "; echo "Contenido: " . $Valor; echo "<Br>"; } ?></Body></Html>

•Las variables a nivel de sesión.•Guardar información en el equipo cliente: cookies.•La QueryString•2.3 Acceso a datos•2.3.1 Introducción al acceso a datos•El acceso a datos desde sitios web.•Conectar con Microsoft SQL.•Conectar con Microsoft Access.•Mostrar información de una base de datos en un formulario web.•2.3.2 Manejo de datos•Conectar a una base de datos•Mostrar datos en un formulario•Crear formularios de entrada•Cadenas de conexión•Actualizar datos mediante controles•2.3.3 XML•¿Qué es XML?•Accesar datos en XML•3. Tópicos avanzados•3.1 Master Pages.•3.2 Seguridad•Principios básicos.•El acceso anónimo.•Autentificación •La creación de usuarios y roles.•Las normas de acceso.•Controles web para la autentificación.

•3.3 Web Parts.•Introducción a las ASP.NET Web Part.•Crear una página con Web Parts.•Cambiar la apariencia y la disposición en tiempo de ejecución.•Agregar Web Parts en tiempo de ejecución.•3.4 Manejo de imágenes.•El control FileUpload