SlideShare una empresa de Scribd logo
Programación Server-Side
Introducción a PHP|
Arquitectura Cliente - Servidor
Las aplicaciones web funcionan sobre un esquema
cliente-servidor.
Introducción
R
EPA
SO
Arquitectura Cliente - Servidor
En este tipo de interacción, el usuario (client) realiza peticiones
(http request) a un programa remoto (server), quien le
devolverá a cambio una respuesta (http response).
Introducción
R
EPA
SO
PÁGINA ESTÁTICA
CLIENTE
SERVIDOR
R
EPA
SO
PÁGINA
DINÁMICA
CLIENTE
SERVIDOR
R
EPA
SO
La programación server-side es el componente principal de lo
sitios dinámicos, donde un servidor recibe las solicitudes de los
clientes, para luego procesarlas y devolver una respuesta.
● El cliente recibe HTML/JSON pero no sabe cómo fue
producido.
● Requiere un servidor que procese las solicitudes
● Para procesar las solicitudes se escribe un “programa”
utilizando algún lenguaje de programación.
Programación Server-Side
Lenguajes server-side (Market Leaders)
2023 - https://www.wappalyzer.com/categories/programming-languages
PHP
PHP
PHP (Hypertext Preprocessor)
Lenguaje server-side de código abierto muy popular
especialmente adecuado para el desarrollo web.
● Lenguaje de programación interpretado y orientado a
objetos.
● Diseñado para producir sitios y aplicaciones web
dinámicas.
● El código es procesado por el intérprete PHP que genera
la página web resultante.
Ejecución de código PHP
Ejecución de código PHP
Más adelante habrá una BBDD
PHP: ¿Cómo se empieza?
CREAR UN ARCHIVO PHP
.php
EL ARCHIVO DEBE TENER
LA EXTENSIÓN PHP
INCLUIR LOS TAGS DE
INICIO Y CIERRE
<?php
…
?>
EL CÓDIGO DEBE ESTAR
ENTRE LOS TAGS PHP
PHP: Sintaxis
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello PHP!</title>
</head>
<body>
<?php
$titulo = "Hello World!!!";
echo "<h1>" . $titulo . "<h1>";
?>
</body>
</html>
index.php
...
<body>
<h1> Hello
World!!! </h1>
</body>
...
AL CLIENTE LE LLEGA
¿Como hacemos
“andar” nuestro
archivo (script)
PHP?
PHP
Si creo un archivo de extension php y lo abro en el
navegador con doble click. ¿Qué pasa?
Servidor WEB
Tenemos que “servir” nuestros archivos usando un
servidor web:
● XAMPP - Apache usa por default la carpeta ‘htdocs’ para servir
archivos (en windows c:xampphtdocs).
● Ponemos los archivos donde el servidor pueda verlos y usamos
nuestra dirección local (localhost/127.0.0.1). Apache traduce la ruta
relativa de la URL a la estructura de carpetas que tenemos en el
servidor.
Al poner en la URL /web2/
busca C:xampphtdocsweb2
Funciona!
● Si el archivo es un PHP y el módulo de PHP está
instalado, Apache ejecuta el script PHP
automáticamente
● Lo que genera el script es lo que se envía al navegador
Pero... ¿no era que iba a un servidor?
Cuando estoy desarrollando, todos los componentes
están en mi PC.
PHP: El lenguaje
PHP: Estructuras de datos
En PHP (como en cualquier lenguaje) tenemos las mismas
estructuras de datos básicas para almacenar
información en memoria:
● VARIABLES
● CONSTANTES
● ARREGLOS INDEXADOS
● ARREGLOS ASOCIATIVOS
● OBJETOS
● Y varias más…
PHP: Variables
VARIABLES
● Las variables en php siempre empiezan con $
● Se definen implícitamente: no hay que declararlas
<?php
$name = "Juan";
echo $name; // outputs "Juan"
?>
DOC: https://www.php.net/manual/es/language.variables.basics.php
PHP: Variables
TIPOS DE VARIABLES
PHP es un lenguaje débilmente tipado: el tipo se define por
el contexto en el que es usada.
<?php
$isValid = true; // boolean
$name = "Juan"; // string
$cont = 12; // integer
// imprime la concatenación de dos variables
echo "$name edad: $lastName"; // outputs "Juan edad:
12"
?> DOC: https://www.php.net/manual/es/language.types.intro.php
PHP: Constantes
CONSTANTES
Como el nombre sugiere, este valor no puede variar
durante la ejecución del script.
● Se usa el método define(nombre, valor)
● Para leerlas, usamos el nombre sin ‘$’
<?php
define("SALUDO", "Hello world.");
echo SALUDO; // outputs "Hello world."
?>
DOC: https://www.php.net/manual/es/language.constants.php
PHP: Arreglos
Arreglos indexados
Es un arreglo ordenado en el cual se requiere especificar
la posición en la que se encuentra cada uno de los datos.
<?php
$cars = ["Volvo", "BMW", "Toyota"];
// Asignación manual
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
$count = count($cars); // 3 (int)
?> DOC: https://www.php.net/manual/es/language.types.array.php
PHP: Arreglos
Arreglos asociativos
A diferencia de los arreglas indexados, los asociativos que
tienen claves con nombres específicos
<?php
$edades = [
"juan" => 35,
"nico" => 17,
"julia" => 23
]
echo $edades["juan"].’</li>’; //imprime 35
echo $edades["julia"].’</li>’; //imprime 23
?>
DOC: https://www.php.net/manual/es/language.types.array.php
PHP: Arreglos
Operaciones sobre arreglos
● Insertar un elemento al final
○ array_push($arreglo, $valor)
○ $arreglo[] = $valor; // sintaxis nuevo
● Insertar un elemento al final
○ array_unshift($arreglo, $valor)
● Eliminar el último elemento del array
○ array_pop($arreglo)
Todas las operaciones en: http://php.net/manual/es/ref.array.php
PHP: Objetos
stdClass (Clase Estándar)
- Es una clase predefinida en php, que no tiene atributos ni
métodos. Se pueden agregar atributos cuando
querramos.
- Podemos verlo como un JSON en Javascript
<?php
$user = new stdClass();
$user->name = 'Lucía';
$user->age = 28;
echo $user->name;
echo $user->age;
DOC: https://www.php.net/manual/es/reserved.classes.php
PHP: Estructuras de control
IF
<?php
if($a > $b){
echo "a es mayor que b";
} else {
echo "a NO es mayor que b";
}
SWITCH
<?php
switch($i){
case 0:
echo "i es igual a 0";
break;
case 1:
echo "i es igual 1";
break;
default:
echo "i es distinto a 0 y 1";
break;
}
?>
● if, else, elseif, switch
● while, do-while, for
● foreach
● break, continue
PHP: Estructuras de control
FOREACH
foreach ($cars as $car)
{
echo "<li> $car
WHILE
$i = 0;
while ($i < $count) {
echo "<li> $cars[$i] </li>";
$i++;
}
// Arreglo indexado
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
$count =
count($cars);
FOR
for ($i = 0; $i < $count; $i++) {
echo "<li> $cars[$i] </li>";
}
PHP: Estructuras de control
FOR
for ($i = 0; $i < $count; $i++) {
echo "<li> $cars[$i] </li>";
}
MALAS
PRÁCTICAS
¿HTML CON
PHP?
Las resolveremos
más adelante
PHP: Strings
Concatenación de cadenas de texto
Por operador
● . concatena strings
→
● .= concatena strings al final
→
Por interpolación
<?php
$bar = "Mundo";
$foo = "Hola " . $bar;
$foo .= "!";
echo $foo; //outputs Hola
Mundo!
?>
<?php
$alguien = 'David';
$donde = 'Aqui';
echo "$donde estuvo
$alguien";
?>
Ejercicio - Diario Digital
Hagamos un diario digital renderizado desde el
servidor:
●Se debe crear un home que liste una
grilla de noticias dinámicas.
●Las noticias deben ser leídas de un
arreglo asociativo o de objetos
●Debe además tener una sección de
“nosotros” (about)
Programación Server-Side - Intro PHP.pptx
Funciones
PHP: Funciones
Una función puede ser definida empleando una sintaxis
como la siguiente:
<?php
/**
* Calcular el promedio de los valores de un
arreglo
**/
function promedioEdad($edades){
$promedio = array_sum($edades) /
count($edades);
return $promedio;
}
https://www.php.net/manual/es/functions.user-defined.php
PHP: Ámbitos
<?php
$a = 1; /* ámbito global */
function test() {
echo $a; /* referencia a una variable del ámbito local
*/
}
test();
?>
¿Qué pasa cuando ejecuto este script?
¿Cómo usar las globales? ¿Es una buena práctica?
PHP: Ámbitos (solución)
<?php
$a = 1; /* ámbito global */
function test() {
GLOBAL $a;
echo $a;
}
test();
?>
¿Cómo usar las globales? ¿Es una buena práctica?
● Se puede indicar que $a es global, con ”global $a” o
accediendo directamente con “$GLOBALS['a']”.
● Usar variables globales es mala práctica!
Una aplicación web: muchos
archivos
Ejecución de archivos
index.php
Es el archivo con el script PHP que Apache elige ejecutar
por defecto.
● Si se quiere ejecutar otro archivo desde el browser,
cada uno tiene su propia URL.
● Los archivos se pueden incluir entre sí para organizar
el código.
PHP: Include
localidades.php
<?php
$prov = 'BA';
$ciudad = 'Tandil';
?>
test.php
<?php
include 'localidades.php';
echo "Origen $ciudad $prov"; //Origen Tan
BA
?>
include 'file_name.php'
Incluye el archivo especificado. Todas las funciones y
variables definidas en el archivo pueden ser accedidas por
quien lo incluye.
PHP: Require
require 'file_name.php'
Es igual a include excepto que en caso de fallo
producirá un error fatal de nivel E_COMPILE_ERROR.
● Se detiene el script mientras que include sólo
emitirá una advertencia (E_WARNING) lo cual permite
continuar el script.
● Algunas posibles causas de fallos son:
○El archivo no existe
○El archivo no es accesible (permisos)
PHP include_once, require_once
require_once 'file_name.php'
Es idéntica a require salvo que PHP verificará si el archivo
ya ha sido incluido y si es así, no se incluye de nuevo.
Sucede lo mismo con la sentencia include_once.
index.php
musica.php
settings.php
personas.php
require
require
require require
Ejercicio - Diario Digital (Parte 2)
Hagamos un diario digital renderizado desde el
servidor:
●Agregue la posibilidad de ver una noticia cuando el
usuario hace click en cualquiera de las noticias de la
grilla.
Programación Server-Side - Intro PHP.pptx
Enviar datos desde un cliente al
servidor
Enviar datos al servidor
En las páginas web, los clientes no solo obtienen el elemento
deseado del servidor, sino que también pueden hacer una
petición (request) para enviar información al servidor.
Por ejemplo:
- El texto de búsqueda que el usuario ha escrito en el motor
de búsqueda
- El contenido de un formulario web
- El identificador de un video que quieren mirar
Métodos HTTP
Dos de los métodos HTTP más utilizados con los que el
navegador puede enviar información al servidor son:
● Método GET
El método GET envía la información codificada del usuario en HTTP
request, directamente en la URL.
localhost/noticia.php?id=2
● Método POST
Con el método HTTP POST también se codifica la información, pero ésta
se envía a través del body del HTTP Request, por lo que no aparece en la
URL.
Comunicación cliente servidor
Cómo enviar datos por POST y GET?
1. Utilizando un formulario HTML
Se utiliza un formulario HTML para que el
usuario introduzca los datos y se envían
todos juntos al servidor.
2. Usando query strings (solo GET):
Se construyen URL’s con parámetros y por
lo general se usan para navegar entre
páginas,
1. Usar un formulario HTML para enviar datos
Uno de los mecanismos más naturales para enviar datos
al servidor es mediante un FORMULARIO HTML
● Son uno de los principales puntos de
interacción entre un usuario y un sitio
web o aplicación.
● Permiten a los usuarios la
introducción de datos, que
generalmente se envían a un servidor
web para su procesamiento y
almacenamiento
Partes de un Formulario Web
El atributo action define la ubicación
(URL) donde se envían los datos del
formulario..
El atributo method define con qué
método HTTP se envían los datos
(generalmente get o post).
El atributo name identificará, en el lado
servidor, a los datos ingresados por el
usuario en el control. Se envia siempre
un par clave/valor por cada elemento
El formulario debe tener al menos un
elemento type=”submit” que enviará
el formulario entero a la url
correspondiente.
method=
2. Usar query strings para enviar parámetros
GET
Se puede utilizar el método GET para armar
URL’s dinámicas que obtienen información
específica según ciertos parámetros. Son
conocidas como query string y se pueden
armar sin usar un formulario.
<a href="profile.php?id=20">John Doe</a> -----> link
al perfil del usuario con el id 20
<a href="products.php?page=2">Página 2</a> -----> link
a la página dos de la lista de productos
PHP: Variables $_GET y $_POST
¿Cómo accedemos a los valores enviados
desde el cliente?
En PHP existen arreglos asociativos que se utilizan para
recuperar la información enviada al servidor:
$_GET se usa para recuperar datos enviados por GET
$_POST se usa para recuperar datos enviados por POST
PHP: Ejemplo $_GET
● Cuando se envía el formulario, la URL contiene los datos
enviados.
● El request se verá como:
http://localhost/web2/ejemploget.php?nombre=Carolina&edad=24
ejemploget.php
<?php
if(isset($_GET['nombre'])) {
$usuario = $_GET['nombre'];
$edad = $_GET['edad'];
echo "<p>Usuario: " . $usuario .
"</p>";
echo "<p>Edad: " . $edad . "</p>";
formulario.html
<html>
<form action="ejemploget.php"
method="get">
<input type="text" name="nombre" />
<input type="text" name="edad" />
<input type="submit">
</form>
PHP: Ejemplo $_POST
● Cuando se envía el formulario, la URL NO CONTIENE los datos
enviados. Estos se envían con el Request HTTP.
● El request se verá como:
http://localhost/web2/ejemplopost.php
ejemplopost.php
<?php
if(isset($_POST['nombre'])) {
$usuario = $_POST['nombre'];
$edad = $_POST['edad'];
echo "<p>Usuario: " . $usuario . "</p
echo "<p>Edad: " . $edad . "</p>";
}
formulario.html
<html>
<form action="ejemplopost.php" method="post">
<input type="text" name="nombre" />
<input type="text" name="edad" />
<input type="submit">
</form>
Ejercicio
Hagamos una página que nos muestre el nombre y la
edad de un usuario obtenidas desde un formulario.
¿Cómo se verán las URL?
POR GET
http://localhost/web2/datos.php?nombre=juan&edad=20
POR POST
http://localhost/web2/datos.php
PHP: Variables $_REQUEST
● Existe tambien $_REQUEST
● Contiene todo el contenido de $_POST y $_GET
● Se puede usar cuando esperamos parámetros por
ambos métodos.
ejemploRequest.php
<?php
if(isset($_REQUEST['nombre'])){
$nombre = $_REQUEST['nombre'];
echo "Nombre: " . $nombre .
"<br/>";
}
?>
Pregunta rápida
¿Qué método usarían para enviar una contraseña?
PHP: GET vs POST
¿Cuándo usar uno u
otro?
Ejercicio - Diario Digital (Parte 3)
Hagamos un diario digital renderizado desde el
servidor:
●Agregue un formulario de inscripción al newsletter.
Más Información
● PHP - www.php.net
● Manual de PHP - https://secure.php.net/manual/es/
● XAMPP - https://www.apachefriends.org/es/index.html
● PHP The Right Way - http://www.phptherightway.com/
● PHP 5 Power Programming -
http://ptgmedia.pearsoncmg.com/images/013147149X
/downloads/013147149X_book.pdf

Más contenido relacionado

ODP
Introducción a PHP5
PPT
Introduccion al PHP para principiantes y estudiantes
PDF
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PDF
Introducción a php
PPTX
Introducción a programación con PHP
PDF
Guia programacionwebbasicophp
PDF
MAnual de php básico
Introducción a PHP5
Introduccion al PHP para principiantes y estudiantes
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
Introducción a php
Introducción a programación con PHP
Guia programacionwebbasicophp
MAnual de php básico

Similar a Programación Server-Side - Intro PHP.pptx (20)

PDF
4.Programación con PHP y MySQL
DOCX
Tutorial php basico
PDF
33 php
PDF
Curso php-my sql-clase-2
DOCX
PPTX
PPTX
Php 6 y Mysql
PDF
Curso php y_mysql
PPTX
Introducción a PHP
PPT
Manual+php+básico
PPTX
PPTX
3 Introducción al lenguaje PHP
PDF
PDF
1 intro php
PDF
Lenguaje de Programación PHP
PPT
252620901-Taller-de-PHPpara bachillerato tecnico.ppt
DOC
Php
4.Programación con PHP y MySQL
Tutorial php basico
33 php
Curso php-my sql-clase-2
Php 6 y Mysql
Curso php y_mysql
Introducción a PHP
Manual+php+básico
3 Introducción al lenguaje PHP
1 intro php
Lenguaje de Programación PHP
252620901-Taller-de-PHPpara bachillerato tecnico.ppt
Php
Publicidad

Último (6)

PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
sistemas de informacion.................
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
AutoCAD Herramientas para el futuro, Juan Fandiño
sistemas de informacion.................
Conceptos basicos de Base de Datos y sus propiedades
Derechos_de_Autor_y_Creative_Commons.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Su punto de partida en la IA: Microsoft 365 Copilot Chat
Publicidad

Programación Server-Side - Intro PHP.pptx

  • 2. Arquitectura Cliente - Servidor Las aplicaciones web funcionan sobre un esquema cliente-servidor. Introducción R EPA SO
  • 3. Arquitectura Cliente - Servidor En este tipo de interacción, el usuario (client) realiza peticiones (http request) a un programa remoto (server), quien le devolverá a cambio una respuesta (http response). Introducción R EPA SO
  • 6. La programación server-side es el componente principal de lo sitios dinámicos, donde un servidor recibe las solicitudes de los clientes, para luego procesarlas y devolver una respuesta. ● El cliente recibe HTML/JSON pero no sabe cómo fue producido. ● Requiere un servidor que procese las solicitudes ● Para procesar las solicitudes se escribe un “programa” utilizando algún lenguaje de programación. Programación Server-Side
  • 7. Lenguajes server-side (Market Leaders) 2023 - https://www.wappalyzer.com/categories/programming-languages
  • 8. PHP
  • 9. PHP PHP (Hypertext Preprocessor) Lenguaje server-side de código abierto muy popular especialmente adecuado para el desarrollo web. ● Lenguaje de programación interpretado y orientado a objetos. ● Diseñado para producir sitios y aplicaciones web dinámicas. ● El código es procesado por el intérprete PHP que genera la página web resultante.
  • 13. PHP: ¿Cómo se empieza? CREAR UN ARCHIVO PHP .php EL ARCHIVO DEBE TENER LA EXTENSIÓN PHP INCLUIR LOS TAGS DE INICIO Y CIERRE <?php … ?> EL CÓDIGO DEBE ESTAR ENTRE LOS TAGS PHP
  • 14. PHP: Sintaxis <!DOCTYPE html> <html lang="en"> <head> <title>Hello PHP!</title> </head> <body> <?php $titulo = "Hello World!!!"; echo "<h1>" . $titulo . "<h1>"; ?> </body> </html> index.php ... <body> <h1> Hello World!!! </h1> </body> ... AL CLIENTE LE LLEGA
  • 16. PHP Si creo un archivo de extension php y lo abro en el navegador con doble click. ¿Qué pasa?
  • 17. Servidor WEB Tenemos que “servir” nuestros archivos usando un servidor web: ● XAMPP - Apache usa por default la carpeta ‘htdocs’ para servir archivos (en windows c:xampphtdocs). ● Ponemos los archivos donde el servidor pueda verlos y usamos nuestra dirección local (localhost/127.0.0.1). Apache traduce la ruta relativa de la URL a la estructura de carpetas que tenemos en el servidor. Al poner en la URL /web2/ busca C:xampphtdocsweb2
  • 18. Funciona! ● Si el archivo es un PHP y el módulo de PHP está instalado, Apache ejecuta el script PHP automáticamente ● Lo que genera el script es lo que se envía al navegador
  • 19. Pero... ¿no era que iba a un servidor? Cuando estoy desarrollando, todos los componentes están en mi PC.
  • 21. PHP: Estructuras de datos En PHP (como en cualquier lenguaje) tenemos las mismas estructuras de datos básicas para almacenar información en memoria: ● VARIABLES ● CONSTANTES ● ARREGLOS INDEXADOS ● ARREGLOS ASOCIATIVOS ● OBJETOS ● Y varias más…
  • 22. PHP: Variables VARIABLES ● Las variables en php siempre empiezan con $ ● Se definen implícitamente: no hay que declararlas <?php $name = "Juan"; echo $name; // outputs "Juan" ?> DOC: https://www.php.net/manual/es/language.variables.basics.php
  • 23. PHP: Variables TIPOS DE VARIABLES PHP es un lenguaje débilmente tipado: el tipo se define por el contexto en el que es usada. <?php $isValid = true; // boolean $name = "Juan"; // string $cont = 12; // integer // imprime la concatenación de dos variables echo "$name edad: $lastName"; // outputs "Juan edad: 12" ?> DOC: https://www.php.net/manual/es/language.types.intro.php
  • 24. PHP: Constantes CONSTANTES Como el nombre sugiere, este valor no puede variar durante la ejecución del script. ● Se usa el método define(nombre, valor) ● Para leerlas, usamos el nombre sin ‘$’ <?php define("SALUDO", "Hello world."); echo SALUDO; // outputs "Hello world." ?> DOC: https://www.php.net/manual/es/language.constants.php
  • 25. PHP: Arreglos Arreglos indexados Es un arreglo ordenado en el cual se requiere especificar la posición en la que se encuentra cada uno de los datos. <?php $cars = ["Volvo", "BMW", "Toyota"]; // Asignación manual $cars[0] = "Volvo"; $cars[1] = "BMW"; $cars[2] = "Toyota"; $count = count($cars); // 3 (int) ?> DOC: https://www.php.net/manual/es/language.types.array.php
  • 26. PHP: Arreglos Arreglos asociativos A diferencia de los arreglas indexados, los asociativos que tienen claves con nombres específicos <?php $edades = [ "juan" => 35, "nico" => 17, "julia" => 23 ] echo $edades["juan"].’</li>’; //imprime 35 echo $edades["julia"].’</li>’; //imprime 23 ?> DOC: https://www.php.net/manual/es/language.types.array.php
  • 27. PHP: Arreglos Operaciones sobre arreglos ● Insertar un elemento al final ○ array_push($arreglo, $valor) ○ $arreglo[] = $valor; // sintaxis nuevo ● Insertar un elemento al final ○ array_unshift($arreglo, $valor) ● Eliminar el último elemento del array ○ array_pop($arreglo) Todas las operaciones en: http://php.net/manual/es/ref.array.php
  • 28. PHP: Objetos stdClass (Clase Estándar) - Es una clase predefinida en php, que no tiene atributos ni métodos. Se pueden agregar atributos cuando querramos. - Podemos verlo como un JSON en Javascript <?php $user = new stdClass(); $user->name = 'Lucía'; $user->age = 28; echo $user->name; echo $user->age; DOC: https://www.php.net/manual/es/reserved.classes.php
  • 29. PHP: Estructuras de control IF <?php if($a > $b){ echo "a es mayor que b"; } else { echo "a NO es mayor que b"; } SWITCH <?php switch($i){ case 0: echo "i es igual a 0"; break; case 1: echo "i es igual 1"; break; default: echo "i es distinto a 0 y 1"; break; } ?> ● if, else, elseif, switch ● while, do-while, for ● foreach ● break, continue
  • 30. PHP: Estructuras de control FOREACH foreach ($cars as $car) { echo "<li> $car WHILE $i = 0; while ($i < $count) { echo "<li> $cars[$i] </li>"; $i++; } // Arreglo indexado $cars[0] = "Volvo"; $cars[1] = "BMW"; $cars[2] = "Toyota"; $count = count($cars); FOR for ($i = 0; $i < $count; $i++) { echo "<li> $cars[$i] </li>"; }
  • 31. PHP: Estructuras de control FOR for ($i = 0; $i < $count; $i++) { echo "<li> $cars[$i] </li>"; } MALAS PRÁCTICAS ¿HTML CON PHP? Las resolveremos más adelante
  • 32. PHP: Strings Concatenación de cadenas de texto Por operador ● . concatena strings → ● .= concatena strings al final → Por interpolación <?php $bar = "Mundo"; $foo = "Hola " . $bar; $foo .= "!"; echo $foo; //outputs Hola Mundo! ?> <?php $alguien = 'David'; $donde = 'Aqui'; echo "$donde estuvo $alguien"; ?>
  • 33. Ejercicio - Diario Digital Hagamos un diario digital renderizado desde el servidor: ●Se debe crear un home que liste una grilla de noticias dinámicas. ●Las noticias deben ser leídas de un arreglo asociativo o de objetos ●Debe además tener una sección de “nosotros” (about)
  • 36. PHP: Funciones Una función puede ser definida empleando una sintaxis como la siguiente: <?php /** * Calcular el promedio de los valores de un arreglo **/ function promedioEdad($edades){ $promedio = array_sum($edades) / count($edades); return $promedio; } https://www.php.net/manual/es/functions.user-defined.php
  • 37. PHP: Ámbitos <?php $a = 1; /* ámbito global */ function test() { echo $a; /* referencia a una variable del ámbito local */ } test(); ?> ¿Qué pasa cuando ejecuto este script? ¿Cómo usar las globales? ¿Es una buena práctica?
  • 38. PHP: Ámbitos (solución) <?php $a = 1; /* ámbito global */ function test() { GLOBAL $a; echo $a; } test(); ?> ¿Cómo usar las globales? ¿Es una buena práctica? ● Se puede indicar que $a es global, con ”global $a” o accediendo directamente con “$GLOBALS['a']”. ● Usar variables globales es mala práctica!
  • 39. Una aplicación web: muchos archivos
  • 40. Ejecución de archivos index.php Es el archivo con el script PHP que Apache elige ejecutar por defecto. ● Si se quiere ejecutar otro archivo desde el browser, cada uno tiene su propia URL. ● Los archivos se pueden incluir entre sí para organizar el código.
  • 41. PHP: Include localidades.php <?php $prov = 'BA'; $ciudad = 'Tandil'; ?> test.php <?php include 'localidades.php'; echo "Origen $ciudad $prov"; //Origen Tan BA ?> include 'file_name.php' Incluye el archivo especificado. Todas las funciones y variables definidas en el archivo pueden ser accedidas por quien lo incluye.
  • 42. PHP: Require require 'file_name.php' Es igual a include excepto que en caso de fallo producirá un error fatal de nivel E_COMPILE_ERROR. ● Se detiene el script mientras que include sólo emitirá una advertencia (E_WARNING) lo cual permite continuar el script. ● Algunas posibles causas de fallos son: ○El archivo no existe ○El archivo no es accesible (permisos)
  • 43. PHP include_once, require_once require_once 'file_name.php' Es idéntica a require salvo que PHP verificará si el archivo ya ha sido incluido y si es así, no se incluye de nuevo. Sucede lo mismo con la sentencia include_once. index.php musica.php settings.php personas.php require require require require
  • 44. Ejercicio - Diario Digital (Parte 2) Hagamos un diario digital renderizado desde el servidor: ●Agregue la posibilidad de ver una noticia cuando el usuario hace click en cualquiera de las noticias de la grilla.
  • 46. Enviar datos desde un cliente al servidor
  • 47. Enviar datos al servidor En las páginas web, los clientes no solo obtienen el elemento deseado del servidor, sino que también pueden hacer una petición (request) para enviar información al servidor. Por ejemplo: - El texto de búsqueda que el usuario ha escrito en el motor de búsqueda - El contenido de un formulario web - El identificador de un video que quieren mirar
  • 48. Métodos HTTP Dos de los métodos HTTP más utilizados con los que el navegador puede enviar información al servidor son: ● Método GET El método GET envía la información codificada del usuario en HTTP request, directamente en la URL. localhost/noticia.php?id=2 ● Método POST Con el método HTTP POST también se codifica la información, pero ésta se envía a través del body del HTTP Request, por lo que no aparece en la URL.
  • 49. Comunicación cliente servidor Cómo enviar datos por POST y GET? 1. Utilizando un formulario HTML Se utiliza un formulario HTML para que el usuario introduzca los datos y se envían todos juntos al servidor. 2. Usando query strings (solo GET): Se construyen URL’s con parámetros y por lo general se usan para navegar entre páginas,
  • 50. 1. Usar un formulario HTML para enviar datos Uno de los mecanismos más naturales para enviar datos al servidor es mediante un FORMULARIO HTML ● Son uno de los principales puntos de interacción entre un usuario y un sitio web o aplicación. ● Permiten a los usuarios la introducción de datos, que generalmente se envían a un servidor web para su procesamiento y almacenamiento
  • 51. Partes de un Formulario Web El atributo action define la ubicación (URL) donde se envían los datos del formulario.. El atributo method define con qué método HTTP se envían los datos (generalmente get o post). El atributo name identificará, en el lado servidor, a los datos ingresados por el usuario en el control. Se envia siempre un par clave/valor por cada elemento El formulario debe tener al menos un elemento type=”submit” que enviará el formulario entero a la url correspondiente. method=
  • 52. 2. Usar query strings para enviar parámetros GET Se puede utilizar el método GET para armar URL’s dinámicas que obtienen información específica según ciertos parámetros. Son conocidas como query string y se pueden armar sin usar un formulario. <a href="profile.php?id=20">John Doe</a> -----> link al perfil del usuario con el id 20 <a href="products.php?page=2">Página 2</a> -----> link a la página dos de la lista de productos
  • 53. PHP: Variables $_GET y $_POST ¿Cómo accedemos a los valores enviados desde el cliente? En PHP existen arreglos asociativos que se utilizan para recuperar la información enviada al servidor: $_GET se usa para recuperar datos enviados por GET $_POST se usa para recuperar datos enviados por POST
  • 54. PHP: Ejemplo $_GET ● Cuando se envía el formulario, la URL contiene los datos enviados. ● El request se verá como: http://localhost/web2/ejemploget.php?nombre=Carolina&edad=24 ejemploget.php <?php if(isset($_GET['nombre'])) { $usuario = $_GET['nombre']; $edad = $_GET['edad']; echo "<p>Usuario: " . $usuario . "</p>"; echo "<p>Edad: " . $edad . "</p>"; formulario.html <html> <form action="ejemploget.php" method="get"> <input type="text" name="nombre" /> <input type="text" name="edad" /> <input type="submit"> </form>
  • 55. PHP: Ejemplo $_POST ● Cuando se envía el formulario, la URL NO CONTIENE los datos enviados. Estos se envían con el Request HTTP. ● El request se verá como: http://localhost/web2/ejemplopost.php ejemplopost.php <?php if(isset($_POST['nombre'])) { $usuario = $_POST['nombre']; $edad = $_POST['edad']; echo "<p>Usuario: " . $usuario . "</p echo "<p>Edad: " . $edad . "</p>"; } formulario.html <html> <form action="ejemplopost.php" method="post"> <input type="text" name="nombre" /> <input type="text" name="edad" /> <input type="submit"> </form>
  • 56. Ejercicio Hagamos una página que nos muestre el nombre y la edad de un usuario obtenidas desde un formulario. ¿Cómo se verán las URL? POR GET http://localhost/web2/datos.php?nombre=juan&edad=20 POR POST http://localhost/web2/datos.php
  • 57. PHP: Variables $_REQUEST ● Existe tambien $_REQUEST ● Contiene todo el contenido de $_POST y $_GET ● Se puede usar cuando esperamos parámetros por ambos métodos. ejemploRequest.php <?php if(isset($_REQUEST['nombre'])){ $nombre = $_REQUEST['nombre']; echo "Nombre: " . $nombre . "<br/>"; } ?>
  • 58. Pregunta rápida ¿Qué método usarían para enviar una contraseña?
  • 59. PHP: GET vs POST ¿Cuándo usar uno u otro?
  • 60. Ejercicio - Diario Digital (Parte 3) Hagamos un diario digital renderizado desde el servidor: ●Agregue un formulario de inscripción al newsletter.
  • 61. Más Información ● PHP - www.php.net ● Manual de PHP - https://secure.php.net/manual/es/ ● XAMPP - https://www.apachefriends.org/es/index.html ● PHP The Right Way - http://www.phptherightway.com/ ● PHP 5 Power Programming - http://ptgmedia.pearsoncmg.com/images/013147149X /downloads/013147149X_book.pdf

Notas del editor

  • #4: Ejemplo en compu
  • #6: Ruby on Rails (Ruby) Python PHP Java .NET node.js (Server-side Javascript)
  • #24: CONSTANTES CASE-INSENSITIVES <?php define("GREETING", "Welcome to W3Schools.com!", true); echo greeting; ?>
  • #27: Union: $result = array_merge($array1, $array2);
  • #33: Solución: edad.php <html> <head> <meta charset="UTF-8"> </head> <body> <?php $edades = array( "juan" => 35, "nico" => 32, "julia" => 23 ); $usuario = $_GET['usuario']; echo $usuario . " tiene " . $edades[$usuario] . " años"; ?> </body>
  • #44: Solución: edad.php <html> <head> <meta charset="UTF-8"> </head> <body> <?php $edades = array( "juan" => 35, "nico" => 32, "julia" => 23 ); $usuario = $_GET['usuario']; echo $usuario . " tiene " . $edades[$usuario] . " años"; ?> </body>
  • #49: Solución: edad.php <html> <head> <meta charset="UTF-8"> </head> <body> <?php $edades = array( "juan" => 35, "nico" => 32, "julia" => 23 ); $usuario = $_GET['usuario']; echo $usuario . " tiene " . $edades[$usuario] . " años"; ?> </body>
  • #56: Solución: edad.php <html> <head> <meta charset="UTF-8"> </head> <body> <?php $edades = array( "juan" => 35, "nico" => 32, "julia" => 23 ); $usuario = $_GET['usuario']; echo $usuario . " tiene " . $edades[$usuario] . " años"; ?> </body>
  • #60: Solución: edad.php <html> <head> <meta charset="UTF-8"> </head> <body> <?php $edades = array( "juan" => 35, "nico" => 32, "julia" => 23 ); $usuario = $_GET['usuario']; echo $usuario . " tiene " . $edades[$usuario] . " años"; ?> </body>