PHP 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 33

Aplicaciones Web

[email protected]

Dr. Leonardo Chancay García 1


¿Qué es PHP?
• "PHP: Hypertext Preprocessor"
• Lenguaje interpretado de alto nivel, embebido en páginas HTML y
ejecutado en el servidor.
• Antes de empezar a programas en PHP: ¿Cómo funciona la solicitud
de páginas en un navegador?

Dr. Leonardo Chancay García 2


Comunicación entre el cliente y el servidor
sin PHP:
1. Escribimos en la barra del navegador la dirección
2. El web browser (navegador) envía el mensaje a través de Internet a la computadora, por
ejemplo www.lanacion.com/pagina1.htm solicitando la página (archivo) pagina1.htm
3. El web server (servidor web, que puede ser el Apache, IIS, etc.) que es un programa que
se ejecuta en la máquina www.lanacion.com, recibe el mensaje y lee el archivo
solicitado desde el disco duro.
4. El servidor web envía el archivo solicitado por el navegador tal cual está en el disco
duro.
5. El navegador muestra en pantalla el archivo que envió el servidor web.

Este proceso siempre es el mismo cuando hablamos de


páginas estáticas (páginas que no cambian).
El archivo cambia si el administrador de ese sitio web edite el
contenido del archivo pagina1.htm y haga modificaciones.

Dr. Leonardo Chancay García 3


Comunicación entre el cliente y el servidor
con PHP:
1. Escribimos en la barra del navegador la dirección y el archivo a solicitar.
2. El web browser (navegador) envía el mensaje a través de Internet a la
computadora llamada www.lanacion.com solicitando la página (archivo)
pagina1.php
3. El web server (servidor web), recibe el mensaje y al ver que la extension es
"php" solicita al interprete de PHP (que es otro programa que se ejecuta en el
servidor web) que le envíe el archivo.
4. El intérprete PHP lee desde el disco el archivo pagina1.php
5. El intérprete PHP ejecuta los comandos contenidos en el archivo, se comunica
con un gestor de base de datos (MySql, MariaDB, Oracle, Informix, SQL Server,
etc.)
6. Luego de ejecutar el programa contenido en el archivo envía éste al servidor web
que envía la página al cliente que la había solicitado.
7. El navegador muestra en pantalla el archivo que envió el servidor web.

Dr. Leonardo Chancay García 4


La salida de los resultados normalmente es la
pantalla, en PHP la salida es la página HTML (luego
ésta viaja por internet y llega al cliente que la solicitó)

Dr. Leonardo Chancay García 5


* Herramientas

• Instalación del entorno XAMPP.- Actualmente


XAMPP es el entorno más popular de desarrollo con
PHP. Este software contiene todo lo que necesitamos
para probar en forma local en nuestro equipo los
programas que codifiquemos en PHP.
• Descargar XAMPP de la siguiente página: https://
www.apachefriends.org/es/index.html
• Existe otro entorno popular llamado WAMPSERVER
que nos instala y administra PHP, MySQL y Apache. Si
ya lo tiene instalado y ya está habituado a trabajar
con él, no es necesario que instale el XAMPP.
• El entorno de WAMPSERVER lo puede descargar del
sitio: http://www.wampserver.com/en/

Dr. Leonardo Chancay García 6


Hola mundo

<html>

<head></head>

<body>
<?php
echo "Hola Mundo";
?>
</body>

</html>

Dr. Leonardo Chancay García 7


Ejemplo 2
• Una página esté disponible sólo los 10 primeros días del mes si la fecha es
menor o igual a 10, en caso contrario mostraremos un mensaje de sitio fuera
de servicio

<html>

<head></head>

<body> • función date y requerir sólo el día:


<?php
$dia = date("d"); $dia=date(“d”);
if ($dia <= 10) {
echo "sitio activo";
} else {
echo "sitio fuera de servicio";
}
• Si queremos la fecha entera
?>
</body>
$fecha=date(“d/m/Y")

</html>

Dr. Leonardo Chancay García 8


Problema propuesto
• Sabiendo que la función rand nos retorna un valor aleatorio entre un
rango de dos enteros:
$num=rand(1,100);
• En la variable $num se almacena un valor entero que la computadora
genera en forma aleatoria entre 1 y 100.

• Hacer un programa que lo muestre por pantalla al valor generado.


Además, mostrar si es menor o igual a 50, o si es mayor.
• Para imprimir el contenido de una variable también utilizamos el
comando echo:
echo $num;

Dr. Leonardo Chancay García 9


Solución
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
$num = rand(1, 100);
echo $num;
echo "<br>";
if ($num <= 50) {
echo "El número es menor o igual a 50.";
} else {
echo "El número es mayor a 50.";
}
?>
</body>
</html>

Dr. Leonardo Chancay García 10


Tipos de variables
• Nombres de variables comienzan con el caracter $

• Las variables se declaran cuando se le asigna un valor


$dia = 24; //Se declara una variable de tipo integer.
$sueldo = 758.43; //Se declara una variable de tipo double.
$nombre = "juan"; //Se declara una variable de tipo string.
$exite = true; //Se declara una variable boolean.

• Comentarios con //

Dr. Leonardo Chancay García 11


<html>

<head>
<title>Problema</title> echo "Variable entera:";

</head> echo $dia;

<body> echo "<br>";

<?php echo "Variable double:";

$dia = 24; //Se declara una variable de tipo integer. echo $sueldo;

$sueldo = 758.43; //Se declara una variable de tipo double. echo "<br>";

$nombre = "juan"; //Se declara una variable de tipo string. echo "Variable string:";

$exite = true; //Se declara una variable boolean. echo $nombre;

echo "<br>";
echo "Variable boolean:";
echo $exite;
?>
</body>
</html>

Dr. Leonardo Chancay García 12


Variables de tipo string
• Para concatenar string empleamos el operador . (punto)
$cadena1="Hola";
$cadena2="Mundo";
echo $cadena1." ".$cadena2;

$dia=10;
$fecha="Hoy es $dia";
echo $fecha;

$nombre='juan carlos’; Veremos que en muchos casos se utiliza el concepto de sustitución de


variables dentro de un string en PHP por lo que nos acostumbraremos en un principio a utilizar las
comillas dobles para definir los string en nuestros programas.

Dr. Leonardo Chancay García 13


Ejemplos
<html>
<html>
<head>
<head>
<title>Problema</title>
<title>Problema</title>
</head>
<body> </head>

<?php <body>
$cadena1 = "diego"; <?php
$cadena2 = "juan"; $nota1 = 10;
$cadena3 = "ana";
$nota2 = 7;
$todo = $cadena1 . $cadena2 . $cadena3 .
"<br>"; $nota3 = 8;

echo $todo; echo "Juan aprobó la materia con las notas $nota1,
$nota2 y $nota3";
$edad1 = 24;
?>
echo $cadena1 . " tiene $edad1 de edad";
?> </body>

</body> </html>
</html>

Dr. Leonardo Chancay García 14


Formularios
<html>
• Una actividad fundamental en PHP es la recolección
de datos de un formulario HTML. <head>
<title>Formulario de entrada del dato</title>
• El proceso para el manejo de formularios requiere </head>
generalmente dos páginas:
<body>
• una que implementa el formulario, <form method="post" action="pagina2.php">
Ingrese su nombre:
• una que procesa los datos cargados en el <input type="text" name="nombre">
formulario. <br>
<input type="submit" value="confirmar">
• El elemento <form> y </form> nos permite definir </form>
</body>
un formulario en la página.
</html>
• Este elemento tiene dos propiedades que debemos
inicializar obligatoriamente: action y method.

Dr. Leonardo Chancay García 15


GET y POST
• $_GET y $_POST son variables superglobales que forman arrays de keys y values,
donde los keys son los nombres del formulario (atributo "name") y los values son
los datos de entrada de los usuarios. El hecho de que sean superglobals hace que
sean accesibles desde el script independientemente del ámbito.
• $_GET es un array de variables que se pasan al script a través de los parámetros
de URL. La información que se envía es visible para todo el mundo y tiene
limitada la cantidad de información que se puede enviar a 2000 caracteres. Las
URLs con los datos enviados pueden guardarse en marcadores, lo que puede ser
útil en ciertos casos. $_GET sólo se emplea para el envío de información reducida
y no sensible.
• $_POST es un array de variables que se pasan al script a través del método HTTP
POST. La información que se envía no es visible para los demás ya que los
nombres y variables van embebidas en el body del HTTP request. No tiene límites
en la cantidad de información a enviar. Soporta datos de entrada multi-part
binary a la hora se subir archivos al servidor (lo que permite subir múltiples
archivos a la vez).

Dr. Leonardo Chancay García 16


Tipos de elementos
Los 10 tipos de elementos más importantes para los formularios HTML con PHP son:

Elemento Descripción
input type="text" Caja de texto

input type="password" Caja de texto donde se muestran asteriscos en lugar de los caracteres escritos
input type="checkbox" Cajas seleccionables que permite escoger múltiples opciones
input type="radio" Cajas seleccionables en grupos que sólo permiten escoger una opción
input type="submit" Botón para enviar el formulario
input type="file" Cajas de texto y botón que permite subir archivos
input type="hidden" Elemento escondido. Especialmente útil para tokens de seguridad
option Una opción posible dentro de un elemento element
select Lista de opciones de elementos option
textarea Texto multilínea

Dr. Leonardo Chancay García 17


Validación
• La validación de formularios es algo fundamental ya que previene
posibles ataques de intrusos, además de asegurar que los datos que
se reciben son realmente del tipo de dato deseado.
• Existen dos formas de validación de formularios: en el lado del cliente
y en el lado del servidor. En el lado del cliente la validación suele ser
mediante JavaScript, es más rápida y evita enviar más trabajo al
servidor. En el lado del servidor se emplea PHP para verificar que se
envían valores correctos, es más seguro pero es más lento y da un
poco de trabajo al servidor.

consultar: código como hacer validaciones a los formularios

Dr. Leonardo Chancay García 18


Ejemplo
El siguiente es un formulario con los siguiente datos: Nombre, Contraseña,
Educacion, Nacionalidad, Idiomas, Email y Sitio web:

<h2>Formulario:</h2>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
Nombre:
<input type="text" name="nombre" maxlength="50"><br>
Contraseña:
<input type="password" name="password"><br>
Educacion:
<select name="educacion">
<option value="sin-estudios">Sin estudios</option>
<option value="educacion-obligatoria" selected="selected">Educación Obligatoria</option>
<option value="formacion-profesional">Formación profesional</option>
<option value="universidad">Universidad</option>
</select> <br> continua…
Dr. Leonardo Chancay García 19
Nacionalidad:
<input type="radio" name="nacionalidad" value="hispana">Hispana</input>
<input type="radio" name="nacionalidad" value="otra">Otra</input><br>
Idiomas:
<input type="checkbox" name="idiomas[]" value="español" checked="checked">Español</input>
<input type="checkbox" name="idiomas[]" value="inglés">Inglés</input>
<input type="checkbox" name="idiomas[]" value="francés">Francés</input>
<input type="checkbox" name="idiomas[]" value="aleman">Alemán</input><br>
Email:
<input type="text" name="email"><br>
Sitio Web:
<input type="text" name="sitioweb"><br>
// Botón de enviar
<input type="submit" name="submit" value="Enviar">
</form>
</body>
</html>

Dr. Leonardo Chancay García 20


Aspectos más característicos:
• El atributo maxlength limita el número de caracteres para una caja de texto.
• Contraseña es del ypo password, lo que permite ocultar los caracteres con * cuando
se escribe.
• Educación es un elemento select, que permite seleccionar opXons en una lista. El
texto en el atributo value es el que se enviará a través del formulario. El atributo
selected permite mostrar el seleccionado por defecto.
• Nacionalidad es del ypo radio, los elementos radio del mismo grupo han de tener un
único atributo name y sólo se puede seleccionar uno.
• Los idiomas están en un elemento checkbox, que permite enviar varios datos en
forma de array si se indica en el atributo name con corchetes. Se puede añadir un
atributo checked como seleccionado por defecto.
• En acXon se ha puesto _<?php echo htmlespecialchars($_SERVER["PHPSELF"]); ?>.
$_SERVER["PHP_SELF"] es una superglobal que devuelve el nombre del archivo en el
que se encuentra el formulario, lo que hace que los datos se envíen al mismo archivo,
en lugar de llevarlos a otro archivo para tratarlos. Si se emplea esta forma de indicar el
archivo para acXon, es necesario usar la función htmlespecialchars(), que convierte
caracteres especiales en enydades HTML previniendo posibles ataques Cross-site
Scripyng.

Dr. Leonardo Chancay García 21


Formularios
<html>
<head>
<title>Formulario de entrada del dato</title> <html>

</head> <head>
<title>Captura de datos del form</title>
<body>
</head>
<form method="post" action="pagina2.php">
<body>
Ingrese su nombre:
<?php
<input type="text" name="nombre"> echo "El nombre ingresado es:";
<br> echo $_REQUEST['nombre'];
<input type="submit" value="confirmar"> ?>

</form> </body>
</html>
</body>
</html>
pagina2.php
pagina1.php

Dr. Leonardo Chancay García 22


Problema
Confeccionar un formulario que solicite la carga de un nombre de persona y su edad, luego
mostrar en otra página si es mayor de edad (si la edad es mayor o igual a 18)

<html> <html>
<head> <head>
<title>Problema</title> <title>Problema</title>
</head> </head>
<body> <body>
<form method="post" action="pagina2.php"> <?php
Ingrese el nombre: echo $_REQUEST['nombre'];
<input type="text" name="nombre"> echo "<br>";
<br> if ($_REQUEST['edad'] >= 18) {
Ingrese la edad: echo "Es mayor de edad";
<input type="text" name="edad"> } else {
<br> echo "No es mayor de edad";
<input type="submit" value="confirmar"> }
</form> ?>
</body> </body>
</html> pagina1.php </html> pagina2.php

Dr. Leonardo Chancay García 23


Formularios
Controles radio. Cuando agrupamos un conjunto de controles radio solo uno de ellos puede estar
seleccionado y si seleccionamos otro se desmarca el actual
<html> <html>
<head> <head>
<title>Problema</title> <title>Problema</title>
</head>
</head>
<body>
<body>
<form action="pagina2.php" method="post">
<?php
Ingrese primer valor:
<input type="text" name="valor1">
if ($_REQUEST['radio1'] == "suma") {

<br> $suma = $_REQUEST['valor1'] + $_REQUEST['valor2'];


Ingrese segundo valor: echo "La suma es:" . $suma;
<input type="text" name="valor2"> } else {
<br> if ($_REQUEST['radio1'] == "resta") {
<input type="radio" name="radio1" value="suma">sumar $resta = $_REQUEST['valor1'] - $_REQUEST['valor2'];
<br>
echo "La resta es:" . $resta;
<input type="radio" name="radio1" value="resta">restar
}
<br>
}
<input type="submit" name="operar">
</form>
?>

</body> </body>
pagina1.php </html> pagina2.php
</html>

Dr. Leonardo Chancay García 24


Ejercicio
• Solicitar que se ingrese por teclado el nombre de una persona y
disponer tres controles de tipo radio que nos permitan seleccionar si
la persona:
1-no tiene estudios,
2-estudios primarios y
3-estudios secundarios.
• En la página que procesa el formulario mostrar el nombre de la
persona y un mensaje indicando el tipo de estudios que posee.

Dr. Leonardo Chancay García 25


Solución <html>
<html>
<head>
<head>
<title>Problema</title> <title>Problema</title>
</head> </head>
<body> <body>
<form action="pagina2.php" method="post"> <?php
Ingrese Nombre: echo $_REQUEST['nombre'];
<input type="text" name="nombre"> echo "<br>";
<br>
if ($_REQUEST['radio1'] == "sin") {
Estudios:
echo "Sin estudios.";
<br>
}
<input type="radio" name="radio1" value="sin">Sin estudios
<br> if ($_REQUEST['radio1'] == "primario") {
<input type="radio" name="radio1" value="primario">Estudios primarios echo "Estudios primarios.";
<br> }
<input type="radio" name="radio1" value="secundario">Estudios secundarios if ($_REQUEST['radio1'] == "secundario") {
<br> echo "Estudios secundarios.";
<input type="submit" value="Confirmar"> }
</form>
?>
</body>
</body>
</html>
</html>
pagina1.php pagina2.php

Dr. Leonardo Chancay García 26


FORMULARIO (control checkbox)
<html> <html>
<head> <head>
<title>Problema</title> <title>Problema</title>
</head> </head>
<body>
<body>
<form action="pagina2.php" method="post">
<?php
Ingrese primer valor:
if (isset($_REQUEST['check1'])) {
<input type="text" name="valor1">
$suma = $_REQUEST['valor1'] +
<br>
$_REQUEST['valor2'];
Ingrese segundo valor:
echo "La suma es:" . $suma . "<br>";
<input type="text" name="valor2">
}
<br>
if (isset($_REQUEST['check2'])) {
<input type="checkbox" name="check1">sumar
<br> $resta = $_REQUEST['valor1'] -
$_REQUEST['valor2'];
<input type="checkbox" name="check2">restar
echo "La resta es:" . $resta;
<br>
}
<input type="submit" name="operar">
?>
</form>
</body> </body>

</html>
pagina1.php </html> pagina2.php

Dr. Leonardo Chancay García 27


FORMULARIO (control select)
<html> Lo nuevo que aparece en este formulario es el control de tipo select.
<head>
<html>
<title>Problema</title>
<head>
</head>
<title>Problema</title>
<body>
</head>
<form action="pagina2.php" method="post">
<body>
Ingrese primer valor:
<?php
<input type="text" name="valor1">
if ($_REQUEST['operacion'] == "suma") {
<br>
$suma = $_REQUEST['valor1'] +
Ingrese segundo valor: $_REQUEST['valor2'];
<input type="text" name="valor2"> echo "La suma es:" . $suma;
<br> } else {
<select name="operacion"> if ($_REQUEST['operacion'] == "resta") {
<option value="suma">sumar</option> $resta = $_REQUEST['valor1'] -
$_REQUEST['valor2'];
<option value="resta">restar</option>
echo "La resta es:" . $resta;
</select>
}
<br>
}
<input type="submit" name="operar">
?>
</form>
</body>
</body>
</html>
</html>
pagina1.php pagina2.php

Dr. Leonardo Chancay García 28


Ejercicio
• Hacer un formulario que solicite el ingreso del nombre de una
persona y un control select, en este último permitir la selección de los
ingresos mensuales de la persona:
• 1-1000,
• 1001-3000,
• >3000
• En la página que procesa el formulario mostrar un mensaje si debe
pagar impuestos a las ganancias si supera 3000

Dr. Leonardo Chancay García 29


Solución
<html>
<head> <html>
<title>Problema</title> <head>
</head> <title>Problema</title>
<body> </head>
<form method="post" action="pagina2.php"> <body>

Ingrese el nombre: <?php

<input type="text" name="nombre"> echo $_REQUEST['nombre'];


if ($_REQUEST['ingresos'] == 3) {
<br>
echo " debe pagar impuestos.";
Seleccione en que rango se ubica sus ingresos:
} else {
<select name="ingresos">
echo " no debe pagar impuestos a las ganancias.";
<option value="1">1-1000</option>
}
<option value="2">1001-3000</option>
?>
<option value="3">>3000</option>
</body>
</select>
</html>
<br>
<input type="submit" value="confirmar">
</form>
</body>
</html> pagina1.php pagina2.php

Dr. Leonardo Chancay García 30


FORMULARIO (control textarea)
El control HTML "textarea" se diferencia del "text" en que permite el ingreso de muchas líneas.

<html> <html>
<head> <head>
<title>Problema</title> <title>Problema</title>
</head>
</head>
<body>
<body>
<form action="pagina2.php" method="post">
<?php
Ingrese nombre:<input type="text"
name="nombre"><br> echo "El nombre ingresado:" .
Ingrese su curriculum:<br> $_REQUEST['nombre'];

<textarea name="curriculum"></textarea> echo "<br>";


<br> echo "El curriculum:" .
$_REQUEST['curriculum'];
<input type="submit" value="Confirmar">
</form>
?>

</body> </body>
</html> </html>
pagina1.php pagina2.php

Dr. Leonardo Chancay García 31


Ejercicio
• Confeccionar una página que muestre un contrato dentro de un textarea, disponer
puntos suspensivos donde el operador debe ingresar un texto. La página que procesa el
formulario sólo debe mostrar el contrato con las modificaciones que hizo el operador.
• Ej. de un contrato puede ser:
En la ciudad de [........], se acuerda entre la Empresa [..........]
representada por el Sr. [..............] en su carácter de Apoderado,
con domicilio en la calle [..............] y el Sr. [..............],
futuro empleado con domicilio en [..............], celebrar el presente
contrato a Plazo Fijo, de acuerdo a la normativa vigente de los
artículos 90,92,93,94, 95 y concordantes de la Ley de Contrato de Trabajo N° 20.744.

Dr. Leonardo Chancay García 32


Solución
<html> <html>
<head> <head>
<title>Problema</title> <title>Problema</title>
</head>
</head>
<body>
<body>
<form action="pagina2.php" method="post">
<?php
Completar contrato:<br>
echo $_REQUEST['contrato'];
<textarea name="contrato" rows="8" cols="80">
En la ciudad de [........], se acuerda entre la Empresa ?>
[..........] representada por el Sr. [..............] en su carácter
de Apoderado, con domicilio en la calle [..............] y el Sr.
[..............], futuro empleado con domicilio en [..............], </body>
celebrar el presente contrato a Plazo Fijo, de acuerdo a
la normativa vigente de los artículos 90,92,93,94, 95 y
concordantes de la Ley de Contrato de Trabajo N° 20.744.
</html>
</textarea>
<br>
<input type="submit" value="Confirmar">
</form>
</body>
</html> pagina1.php pagina2.php

Dr. Leonardo Chancay García 33

También podría gustarte