01 Programación Server-Side - Intro PHP
01 Programación Server-Side - Intro PHP
Introducción a PHP
Introducción
R
E
PA
S
Arquitectura Cliente - Servidor
O
Las aplicaciones web funcionan sobre un esquema
cliente-servidor.
En este tipo de interacción, el usuario (cliente) realiza
peticiones (request) a un programa remoto (servidor), quien
le devolverá a cambio una respuesta (response).
CLIENTE
SERVIDOR
Diagrama de componentes
R
E
PA
S
O
Programación Server-Side
2022 - https://www.wappalyzer.com/categories/programming-languages
PHP
PHP
<?php
.php
…
?>
EL ARCHIVO DEBE TENER EL CÓDIGO DEBE ESTAR
LA EXTENSIÓN PHP ENTRE LOS TAGS PHP
PHP: Sintaxis
VARIABLES
● PHP es un lenguaje débilmente tipado: el tipo se define
por el contexto en el que es usada. (Apartir de versiones 7
puede agregar tipos)
● Se definen implícitamente: no hay que declararlas
● El nombre siempre empieza con $
<?php
$aBool = true; // boolean
$name = "Juan"; // string
$lastName = "Perez"; // string
$cont = 12; // integer
echo "$name, $lastName"; // outputs "Juan, Perez"
?>
DOC: https://www.php.net/manual/es/language.variables.basics.php
PHP: Constantes
CONSTANTES
Como el nombre sugiere, este valor no puede variar durante
la ejecución del script.
<?php
define("SALUDO", "Hello world.");
echo SALUDO; // outputs "Hello world."
?>
DOC: https://www.php.net/manual/es/language.constants.php
PHP: Arreglos
Arreglos indexados
Pueden ser creados usando el constructor array().
<?php
$cars = ["Volvo", "BMW", "Toyota"];
// Asignación manual
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";
Arreglos asociativos
Se construyen indicando pares clave => valor separados
por coma como argumento.
<?php
$edades = array(
"juan" => 35,
"nico" => 17,
"julia" => 23
); /**v2: $edades = [“juan” => 35, “nico” => 17,
“julia”=> 23] **/
echo ‘<ul>’;
echo ‘<li>’.$edades["juan"].’</li>’; //imprime 35
echo ‘<li>’.$edades["julia"].’</li>’; //imprime 23
DOC: https://www.php.net/manual/es/language.types.array.php
echo ‘</ul>’;
PHP: Arreglos
echo $user->name;
echo $user->edad; DOC: https://www.php.net/manual/es/reserved.classes.php
PHP: Estructuras de control
} $cars[2] = "Toyota";
$count = count($cars);
WHILE
$i = 0; FOREACH
while ($i < $count) {
foreach ($cars as $car) {
echo "<li>" . $cars[$i] . "</li>";
echo "<li>".$car.</li>";
$i++;
}
}
PHP: Estructuras de control
FOR
for ($i = 0; $i < $count; $i++) { MALAS
echo "<li>" . $cars[$i] . "</li>";
PRÁCTICAS
} Las resolveremos
más adelante
WHILE
$i = 0;
FOREACH
while ($i < $count) {
foreach ($cars as $car) {
echo "<li>" . $cars[$i] . "</li>";
echo "<li>".$car.</li>";
$i++;
}
}
PHP: Strings
<?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();
?>
index.php
Es el archivo con el script PHP que Apache elige ejecutar por
defecto.
require 'file_name.php'
Es igual a include excepto que en caso de fallo producirá un
error fatal de nivel E_COMPILE_ERROR.
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.
require_once
settings.php
require/include require/include
personas.php musica.php
require/include require/include
index.php
Ejercicio - Diario Digital (Parte 2)
met
hod
Partes de un Formulario Web
method=
● Método GET
<form method="GET">
El método GET envía la información codificada del usuario en HTTP request,
directamente en la URL.
localhost/index.php?variable1=valor1&variable2=valor2&...
● Método POST
<form method="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.
PHP: Variables $_GET y $_POST
formulario.html
<html>
<form action="ejemploget.php" method="get">
<input type="text" name="nombre" />
<input type="text" name="edad" />
<input type="submit">
</form>
ejemploget.php
<?php
if(isset($_GET['nombre'])) {
$usuario = $_GET['nombre'];
$edad = $_GET['edad'];
echo "<p>Usuario: " . $usuario . "</p>";
echo "<p>Edad: " . $edad . "</p>";
}
?>
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
formulario.html
<html>
<form action="ejemplopost.php" method="post">
<input type="text" name="nombre" />
<input type="text" name="edad" />
<input type="submit">
</form>
ejemplopost.php
<?php
if(isset($_POST['nombre'])) {
$usuario = $_POST['nombre'];
$edad = $_POST['edad'];
echo "<p>Usuario: " . $usuario . "</p>";
echo "<p>Edad: " . $edad . "</p>";
}
?>
Ejercicio
POR GET
http://localhost/web2/edad.php?usuario=juan
POR POST
http://localhost/web2/edad.php
PHP: Variables $_REQUEST
ejemploRequest.php
<?php
if(isset($_REQUEST['nombre'])){
$nombre = $_REQUEST['nombre'];
echo "Nombre: " . $nombre . "<br/>";
}
?>
Links
JAVASCRIPT
1. Asignar un Event Handler para enviar el formulario vía Ajax:
document.querySelector('input[type=submit]').addEventListener('click', function(e) {
…
});
MALA PRACTICA!!!!
document.querySelector('#formulario').addEventListener('submit', function(e) {
e.preventDefault(); //detiene el envío normal
...
});
Formularios
JAVASCRIPT
2. Obtener la información del formulario:
let user = document.querySelector("input[name=user]").value;
let pass = document.querySelector("input[name=password]").value;
Usamos FormData
Los objetos FormData permiten compilar un conjunto de pares clave/valor
para enviar mediante XMLHttpRequest (fetch).
JAVASCRIPT
fetch('ejemplo.php', {
Tambien podemos usar
method: 'post', this.action y this.method
body: data, para tomar los valores del form
})
.then(response => response.text()) // el servidor nos devuelve HTML
.then(html => {
document.querySelector('#container').innerHTML = html;
})
.catch(error => console.log(error));
});
Como hacer Debug en el servidor
● Configurar Debugger
○ Más adelante
● Usar echo
○ Para variables simples
echo "Valor de la variable var: $var";
● Usar var_dump:
○ Para variables complejas como arreglos, objetos, etc
var_dump($var);
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/dow
nloads/013147149X_book.pdf