Arquitectura Cliente-Servidor en Web
Arquitectura Cliente-Servidor en Web
▪ ▪ Una clase es una plantilla de objetos, un objeto es una instancia de una clase.
múltiples valores de un mismo ▪ Cuando se crea un objeto, este adquiere todas las propiedades y métodos de
la clase, pero cada objeto puede tener diferentes valores en sus propiedades.
tipo. <?php
class Car {
public $color;
public $model;
<?php public function __construct($color, $model) {
$this->color = $color;
$this->model = $model;
$cars = }
public function message() {
return "My car is a " . $this->color . " " . $this->model . "!";
array("Volvo","BMW","Toyota"); }
}
</body>
</html>
Manejar formularios con PHP
¿Cuándo usar GET? ¿Cuándo usar POST?
▪ Los datos enviados por este método son ▪ Los datos enviados por este método son
visibles por todos. invisibles por otros.
▪ Tiene la limitación de solo soportar 2000 ▪ No tiene límite en la cantidad de data que se
caracteres. puede enviar.
▪ Es más rápido de enviar datos que POST. ▪ Es más lento de enviar datos que GET.
▪ Se debe de evitar usarlo cuando se trabaja ▪ POST soporta la carga de data binaria como
con datos sensibles como contraseñas. por ejemplo archivos .exe al servidor.
▪ Es el método preferido por los
desarrolladores para enviar datos.
Strings PHP
strlen() str_word_count()
▪ Retorna la longitud del String. ▪ Retorna la cantidad de palabras del
<?php String.
echo strlen("Hola mundo!"); // salida 12 <?php
?> echo str_word_count("Hola mundo!"); //
salida 2
?>
Strings PHP
strrev() strpos()
▪ Retorna el String al reves. ▪ Busca un texto en específico en el
<?php String. Si hay coincidencia retorna la
echo strrev("Hola mundo!"); // salida posición del primer carácter, sino
!odnum aloH retorna FALSE.
?> <?php
echo strpos("Hola mundo!“, “mundo”); //
salida 5
?>
Strings PHP
Tarea #2, segundo periodo
▪ Busque los siguientes métodos String según aparecen en la siguiente tabla.
▪ Debe de presentar una diapositiva por método.
▪ La diapositiva debe de ser de tipo de diseño “2 contenidos | Two Content”
▪ En el contenido de la izquierda debe de venir la explicación del método y la sintaxis del
método.
▪ En el contenido de la derecha debe de venir un ejemplo completo del código.
▪ Debe de subirlo en el portafolio de evidencias en la carpeta de Evidencias de conocimiento
con el nombre “Strings PHP # de la [Link]”.
▪ Fecha de entrega: 30 de junio 2023.
Números en PHP
Integer | Enteros
▪ Un integer es un número sin punto decimal. ▪ Se tienen las siguientes constantes predefinidas en PHP:
▪ PHP_INT_MAX – Muestra el integer más grande soportado
▪ En sistemas de 32 bits esta entre -2147483648 y 2147483647 ▪ PHP_INT_MIN – Muestra el integer más pequeño soportado
▪ PHP_INT_SIZE - El tamaño del integer en bytes
▪ En sistemas de 64 bits esta entre -9223372036854775808 y
▪ Se poseen unas funciones para verificar si los valores en una variable son
9223372036854775807 integer:
is_int()
▪ En caso de almacenar un número más grande será almacenado ▪
puede indicarlo.
Números en PHP
NaN
▪ NaN, significa Not a Number (No es <?php
un Número). echo is_nan(200) . "<br>";
echo is_nan(acos(1.01));
▪ Se usa para indicar operaciones
?>
matemáticas imposibles.
▪ PHP posee la siguiente función para <?php
verificar si un valor no es un número. $x = acos(8);
▪ is_nan()
var_dump($x);
?>
▪ Sin embargo, var_dump() también
puede cumplir esa función.
Números en PHP
Strings numericos
▪ PHP posee la función is_numeric() <?php
$x = 5985;
para verificar si uan variable es var_dump(is_numeric($x));
númerica. $x = "5985";
var_dump(is_numeric($x));
▪ La función retorna verdadero si la
variable es un número o un string $x = "59.85" + 100;
var_dump(is_numeric($x));
numérico y falso si no.
$x = "Hello";
var_dump(is_numeric($x));
?>
Números en PHP
<?php
Parsear tipos de datos // Parsear de float a int
$x = 23465.768;
$int_cast = (int)$x;
▪ Para parsear tipos de datos se echo $int_cast;
function prueba() {
echo SALUDO;
}
prueba();
?>
Operadores en PHP
▪ Los operadores se utilizan para realizar operaciones entre variables y valores.
▪ En PHP se dividen los operadores en los siguientes grupos:
▪ Aritméticos
▪ Asignación
▪ Comparación
▪ Incremento/Decremento
▪ Lógicos
▪ De String
▪ Arreglos
▪ Asignación condicional
Operadores en PHP
Aritméticos Asignación
Operador Nombre Ejemplo Operador Igual a … Descripción
+ Suma $x + $y x=y x=y x obtiene el valor de y
- Resta $x - $y x obtiene el valor de x sumado
x += y x=x+y
con y
* Multiplicación $x * $y
x obtiene el valor de x restado
/ División $x / $y x -= y x=x-y
con y
% Modulo $x % $y x obtiene el valor de x
x *= y x=x*y
** Potencia $x ** $y multiplicado con y
x obtiene el valor de x dividido
x /= y x=x/y
con y
x obtiene el valor del residuo
x %= y x=x%y
entre x divido con y
Operadores en PHP
Comparación
Operador Nombre Ejemplo Resultado
== Igual $x == $y Retorna verdadero si ambos son iguales
=== Idéntico $x === $y Retorna verdadero si ambos son iguales en valor y en tipo
!= No igual $x != $y Retorna verdadero si ambos no son iguales
<> No igual $x <> $y Retorna verdadero si ambos no son iguales
!== No idéntico $x !== $y Retorna verdadero si ambos no son iguales en valor o en tipo
> Mayor que $x > $y Retorna verdadero si x es mayor que y
< Menor que $x < $y Retorna verdadero si x es menor que y
>= Mayor o igual $x >= $y Retorna verdadero si x es mayor o igual que y
<= Menor o igual $x <= $y Retorna verdadero si x es menor o igual que y
<=> Spaceship $x <=> $y Retorna un número entre -1, 0 o 1. Si x es menor, igual o mayor que y, respectivamente
Operadores en PHP
Incremento / Decremento Lógicos
Operador Nombre Descripción Operador Nombre Ejemplo Resultado
Incrementa x en uno and | && And $x and $y
Retorna verdadero si
++$x Pre incremento ambos son verdaderos
y luego retorna x
Retorna x y luego Retorna verdadero si
$x++ Incremento or | || Or $x || $y alguno de los 2 es
incrementa en uno
verdadero
Decrementa en uno Retorna si y solo si
--$x Pre decremento
x y luego retorna x xor Xor $x xor $y alguno de los 2 es
Retorna x y luego verdadero
$x-- Decremento
decrementa x en uno Retorna verdadero si no
! Not !$x
es verdadero
Operadores en PHP
De String
Operador Nombre Ejemplo Resultado
. Concatenación $txt1 . $txt2 Concatenación del valor de la variable $txt1 con $txt2
$txt1 .= $txt2 Adjunta $txt2 a $txt1
.= Concatenación y asignación
Operadores en PHP
Arreglos
Operador Nombre Ejemplo Resultado
+ Unión $x +$y Unión entre el arreglo x y el y
Retorna verdadero si ambos arreglos tienen los mismos
== Igualdad $x == $y
pares de llave/valor
Retorna verdadero si ambos arreglos tienen los mismos
=== Identidad $x === $y pares de llave/valor en el mismo orden y en el mismo
tipo
!= | <> Desigualdad $x != $y | $x <> $y Retorna verdadero si x no es igual a y
!== No idéntico $x !== $y Retorna verdadero si x no es idéntico a y
Operadores en PHP
Asignación condicional
Operador Nombre Ejemplo Resultado
Retorna el valor de $x. Si expr1 es
?: Ternario $x = expr1 ? expr2 : expr3
verdadero x será expr2, sino será expr3
Retorna el valor de $x. Si expr1 existe y no
?? Coalescencia nula $x = expr1 ?? expr2 es nula x será expr1, sino existe o si es
nula x será expr2.
If … Else … Elseif en PHP
if
▪ Ejecuta un bloque de código si una <?php
condición es verdadera. $t = date("H");
if (condición) {
Código que se ejecuta si la condición es if ($t < "20") {
verdadera; echo “Tenga un buen día!";
} }
?>
If … Else … Elseif en PHP
if … else
▪ Ejecuta el bloque de código del if si una <?php
condición es verdadera y si no lo es $t = date("H");
ejecuta el bloque de código en el else.
if (condición) { if ($t < "20") {
Código que se ejecuta si la consición es echo “Tenga un buen día!";
verdadera; } else {
} else { echo “Tenga una buena noche!";
cófigo que se ejecuta si la condición es }
falsa; ?>
}
If … Else … Elseif en PHP
if … elseif … else
▪ Sentencias que ejecutan diferentes ▪ <?php
códigos si se cumplen alguna de $t = date("H");
diferentes condiciones.
if ($t < "10") {
if (condición) {
echo “Tenga Buena mañana!";
Código que se ejecuta si la condición es
} elseif ($t < "20") {
verdadera;
echo “Tenga buen día!";
} elseif (condición) {
} else {
Código que se ejecuta si la primera
echo “Tenga buena noche!";
condición es falsa pero esta es verdadera;
}
} else {
?>
Código que se ejecuta si todas las
condiciones son falsas;
}
Switch en PHP
▪ Es usado en sustitución al if … elseif … else. <?php
Permite realizar diferentes acciones basado en $favcolor = “rojo";
diferentes condiciones.
switch ($favcolor) {
switch (n) { case “rojo":
case label1: echo “Su color favorito es rojo!";
Código que se ejecuta si n=labe1; break;
break; case “azul":
case label2: echo "Su color favorito es azul!";
Código que se ejecuta si n=label2; break;
break; case “verde":
case label3: echo "Su color favorito es verde!";
Códgo que se ejecuta si n=label3; break;
break; default:
... echo "Su color favorito no es ni rojo, ni azul, ni
default: verde!";
Código que se ejecuta si n no coincide con }
ningún case; ?>
Ciclos en PHP
▪ Un ciclo es una instrucción que permite repetir un bloque de
código un número determinado de veces siempre que una
condición sea cierta.
▪ En PHP se tienen los siguientes:
▪ while
▪ do … while
▪ for
▪ foreach
Ciclos en PHP
while
▪ Ejecuta un bloque de código mientras <?php
que una determinada condición sea $x = 1;
cierta.
while (condición) { while($x <= 5) {
Código que se ejecuta; echo “El número es: $x<br>";
} $x++;
}
?>
Ciclos en PHP
do … while
▪ Ejecuta un bloque de código al menos <?php
una vez y repite lo repite mientras que $x = 1;
una determinada condición sea cierta.
do { do {
Código que se ejecuta; echo “El número es: $x <br>";
} while (condición); $x++;
} while ($x <= 5);
?>
Ciclos en PHP
for
▪ Ejecuta el bloque de código un número <?php
determinado de veces. for ($x = 0; $x <= 10; $x++) {
for (init contedor; prueba de contador; echo “El número es: $x <br>";
incrementar contador) { }
Código que se ejecuta por cada ?>
iteración;
}
Ciclos en PHP
foreach
▪ Se utiliza para hacer recorridos en un <?php
$age = array("Peter"=>"35", "Ben"=>"37",
arreglo utilizando para ello el juego de
"Joe"=>"43");
llave/valor del mismo.
foreach($age as $x => $val) {
foreach ($array as $valor) {
echo "$x = $val<br>";
Código a ejecutar; }
} ?> <?php
$colores = array(“rojo", “verde", “azul", “amarillo");
▪ PHP soporta arreglos con varios niveles, echo $carros [0][0].": En stock: “ . $carros[0][1] . ", vendidos: “ .
pero entre más niveles más difícil de $carros[0][2] . "<br>";
echo $carros [1][0].": En stock: “ . $carros[1][1] . ", vendidos: “ .
manejar. Los más comunes son los de 2 $carros[1][2] . "<br>";
dimensiones. echo $carros [3][0].": En stock: “ . $carros[3][1] . ", vendidos: “ .
$carros[3][2] . "<br>";
?>
▪ La dimensión del arreglo indica el
número de índices que se necesitan para
seleccionar un elemento.
Arreglos en PHP
Multidimensionales
▪ También se puede usar un ciclo for <?php
$carros = array(
dentro de otro ciclo for para array( "Volvo", 22, 18),
array( “BMW", 15, 13),
obtener los elementos de los array( “Saab", 5, 2),
índices del arreglo array( “Land Rover", 17, 15)
);
multidimensional (si se mantiene el
uso de 2 niveles). for ($fil = 0; $fil < 4; $fil++) {
echo "<p><b>Fila número $fil</b></p>";
echo "<ul>";
for ($col = 0; $col < 3; $col++) {
echo "<li>".$carros[$fil][$col]."</li>";
}
echo "</ul>";
}
?>
Arreglos en PHP
Ordenando arreglos
▪ Los elementos de un arreglo pueden ser ordenados alfabética o numéricamente,
de forma ascendente o descendente.
▪ Para eso se pueden utilizar algunas de estas funciones:
▪ sort() – ordena de forma ascendente
▪ rsort() – ordena de forma descendente
▪ asort() – ordena de forma ascendente, de acuerdo al valor.
▪ ksort() – ordena de forma ascendente, de acuerdo a la llave.
▪ arsort() – ordena de forma descendente, de acuerdo al valor.
▪ krsort() – ordena de forma descendente, de acuerdo a la llave.
Arreglos en PHP
sort() rsort()
▪ Se utiliza para ordenar los elementos de ▪ Se utiliza para ordenar los elementos de
un arreglo de forma ascendente. un arreglo de forma descendente.
▪ A a z, 0 a 9 ▪ 9 a 0, z a A
<?php <?php
$carros = array("Volvo", "BMW", "Toyota"); $carros = array("Volvo", "BMW", "Toyota");
sort($carros); rsort($carros);
?> ?>
<?php <?php
$numeros = array(4, 6, 2, 22, 11); $numeros = array(4, 6, 2, 22, 11);
sort($numeros); rsort($numeros);
?> ?>
Arreglos en PHP
asort() ksort()
▪ Se utiliza para ordenar los elementos de un ▪ Se utiliza para ordenar los elementos de un
arreglo de forma ascendente. arreglo de forma descendente.
▪ Utilizando los valores. ▪ 9 a 0, z a A
▪ A a z, 0 a 9 <?php
$carros = array("Volvo", "BMW", "Toyota");
<?php rsort($carros);
$edades = array("Peter"=>"35", "Ben"=>"37", ?>
"Joe"=>"43");
asort($edades); <?php
?> $numeros = array(4, 6, 2, 22, 11);
rsort($numeros);
<?php ?>
$numeros = array(4, 6, 2, 22, 11);
sort($numeros);
?>
Arreglos en PHP
sort() rsort()
▪ Se utiliza para ordenar los elementos de ▪ Se utiliza para ordenar los elementos de
un arreglo de forma ascendente. un arreglo de forma descendente.
▪ A a z, 0 a 9 ▪ 9 a 0, z a A
<?php <?php
$carros = array("Volvo", "BMW", "Toyota"); $carros = array("Volvo", "BMW", "Toyota");
sort($carros); rsort($carros);
?> ?>
<?php <?php
$numeros = array(4, 6, 2, 22, 11); $numeros = array(4, 6, 2, 22, 11);
sort($numeros); rsort($numeros);
?> ?>
Funciones en PHP
▪ Una función es un bloque de código que puede ser usado
en múltiples ocasiones en diferentes partes del código.
▪ No se ejecuta automáticamente cuando la página se
carga.
▪ Una función puede ser llamada desde otra función.
▪ Al igual que con otros lenguajes de programación. La
verdadera funcionabilidad de PHP viene de sus funciones.
Funciones en PHP
Preconstruidas Definidas por el usuario
▪ Preconstruidas: PHP cuenta con más de 1000 ▪ Para crear una función se debe utilizar la
funciones preconstruidas en adición de las palabra reservada function.
que puede crear el programador.
▪ Seguido por el nombre de la función.
▪ En este documento se cubrirán algunas. Para
más referencia se pueden visitar sitios como ▪ Entre paréntesis, de manera opcional se
[Link] o [Link]. pueden indicar los argumentos de entrada.
▪ Y seguidamente el bloque de código que se
ejecutará cuando se llame a la función entre
corchetes.
function nombreFuncion()
{
código que será ejecutado;
}
Funciones en PHP
<?php
function nombreFuncion() {
código a ser ejecutado;
}
?>
<?php
function writeMsg() {
echo “Hola mundo!";
}
suma();
echo $z;
?>
Super globales de PHP
<?php
$_SERVER
echo $_SERVER['PHP_SELF'];
▪ Almacena información sobre echo "<br>";
cabeceras, rutas y locaciones de los echo $_SERVER['SERVER_NAME'];
scripts. echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
Super globales de PHP
Elemento/Código Descripción
Returns the filename of the currently executing
$_SERVER['PHP_SELF']
script
Returns the version of the Common Gateway
$_SERVER['GATEWAY_INTERFACE']
Interface (CGI) the server is using
$_SERVER['SERVER_ADDR'] Returns the IP address of the host server
Returns the name of the host server (such as
$_SERVER['SERVER_NAME']
[Link])
Returns the server identification string (such as
$_SERVER['SERVER_SOFTWARE']
Apache/2.2.24)
Returns the name and revision of the
$_SERVER['SERVER_PROTOCOL']
information protocol (such as HTTP/1.1)
Super globales de PHP
Elemento/Código Descripción
Returns the request method used to access the
$_SERVER['REQUEST_METHOD']
page (such as POST)
Returns the timestamp of the start of the
$_SERVER['REQUEST_TIME']
request (such as 1377687496)
Returns the query string if the page is accessed
$_SERVER['QUERY_STRING']
via a query string
Returns the Accept header from the current
$_SERVER['HTTP_ACCEPT']
request
Returns the Accept_Charset header from the
$_SERVER['HTTP_ACCEPT_CHARSET']
current request (such as utf-8,ISO-8859-1)
Returns the Host header from the current
$_SERVER['HTTP_HOST']
request
Super globales de PHP
Elemento/Código Descripción
Returns the complete URL of the current page
$_SERVER['HTTP_REFERER'] (not reliable because not all user-agents
support it)
Is the script queried through a secure HTTP
$_SERVER['HTTPS']
protocol
Returns the IP address from where the user is
$_SERVER['REMOTE_ADDR']
viewing the current page
Returns the Host name from where the user is
$_SERVER['REMOTE_HOST']
viewing the current page
Returns the port being used on the user's
$_SERVER['REMOTE_PORT']
machine to communicate with the web server
Super globales de PHP
Elemento/Código Descripción
Returns the absolute pathname of the currently
$_SERVER['SCRIPT_FILENAME']
executing script
Returns the value given to the SERVER_ADMIN
directive in the web server configuration file (if
$_SERVER['SERVER_ADMIN'] your script runs on a virtual host, it will be the
value defined for that virtual host) (such as
someone@[Link])
Returns the port on the server machine being
$_SERVER['SERVER_PORT'] used by the web server for communication
(such as 80)
Returns the server version and virtual host
$_SERVER['SERVER_SIGNATURE'] name which are added to server-generated
pages
Super globales de PHP
Elemento/Código Descripción
Returns the file system based path to the
$_SERVER['PATH_TRANSLATED']
current script
$_SERVER['SCRIPT_NAME'] Returns the path of the current script
$_SERVER['SCRIPT_URI'] Returns the URI of the current page
Super globales de PHP
<form method="post" action="<?php echo
$_REQUEST $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
▪ Se utiliza para recoger datos de un formulario <input type="submit">
HTML por cualquiera de los 2 métodos GET o </form>
POST.
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// recolecta los datos del campo fname
$name = $_REQUEST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
Super globales de PHP
<form method="post" action="<?php echo
$_POST $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
▪ Se utiliza para recoger datos de un formulario <input type="submit">
HTML por medio del método POST del </form>
formulario.
▪ Este método es ampliamente utilizado para <?php
pasar variables por ser el “más seguro” pero if ($_SERVER["REQUEST_METHOD"] == "POST") {
es más lento que GET. // recolectar data del valor del input
$name = $_POST['fname'];
if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
Super globales de PHP
<body>
$_GET
<a
▪ Se utiliza para recoger datos de un href="test_get.php?subject=PHP&web=W
formulario HTML por medio del método [Link]">Test $GET</a>
GET del formulario. </body>
▪ También se utiliza para recolectar
datos desde el URL. <?php
echo "Study " . $_GET['subject'] . " at " .
▪ Este método es menos utilizado que
$_GET['web'];
POST por ser menos seguro que el
?>
anterior, pero es más rápido.
Expresiones regulares PHP
▪ Una expresión es una secuencia de caracteres que forman un patrón de búsqueda.
▪ Cuando se busca data en un texto, se puede utilizar un patrón de búsqueda para
encontrar lo que se está buscando.
▪ Una expresión regular puede ser un carácter único, o un patrón más complicado.
▪ Son usados para realizar todo tipo de búsqueda de textos y reemplazo de texto.
Expresiones regulares PHP
▪ Sintaxis
▪ En PHP las expresiones regulares son Strings compuesto por delimitadores,
un patrón y modificadores adicionales.
▪ $exp = "/w3schools/i"; - en este caso / es el delimitador, w3schools es el
patrón y i es el modificador que indica que indica que la búsqueda será no
será sensitiva.
▪ El delimitador puede ser cualquier carácter que no sea una letra, numero,
backslash (\) o espacio. Lo más común es usar el slash (/), pero nada impide
usar otros caracteres como # o |.
Expresiones regulares PHP
▪ PHPprovee una variedad de funciones que
permiten utilizar expresiones regulares.
▪ preg_match()
▪ preg_match_all()
▪ preg_replace()
Expresiones regulares PHP
<?php
preg_match()
$str = "Visit W3Schools";
▪ Retorna 1 si el patrón fue encontrado $pattern = "/w3schools/i";
en un String y 0 si no lo fue. echo preg_match($pattern, $str); //
Salida 1
?>
Expresiones regulares PHP
<?php
preg_match_all()
$str = "The rain in SPAIN falls mainly on
▪ Retorna el número de veces que un the plains.";
patrón fue encontrado en un String, el $pattern = "/ain/i";
cual también puede ser 0 echo preg_match_all($pattern, $str); //
Salida 4
?>
Expresiones regulares PHP
<?php
preg_replace()
$str = "Visita Microsoft!";
▪ Retorna un String con reemplazando $pattern = "/microsoft/i";
todas las coincidencias que hubo en el echo preg_replace($pattern,
String "W3Schools", $str); // Salida "Visita
W3Schools!"
?>
Expresiones regulares PHP
Modificadores de expresiones regulares Modificador Descripción
▪ Pueden cambiar como la búsqueda es i Hace una búsqueda no case sensitive
realizada. m Realiza una búsqueda de varias líneas (los
patrones que buscan el principio o el final de
una cadena coincidirán con el principio o el
final de cada línea)
u Permite la coincidencia correcta de patrones
codificados en UTF-8
Expresiones regulares PHP
Patrones de expresiones regulares Expresión Descripción
▪ Los paréntesis cuadrados son [abc] Encuentra un carácter entre los que están en
los paréntesis cuadrados.
utilizados para encontrar rangos de
caracteres. [^abc] Encuentra un carácter que no esté entre los
paréntesis cuadrados.
[0-9] Encuentra un carácter entre los que están en
el paréntesis.
Expresiones regulares PHP Meta carácter Descripción
Pipeline (|) Encuentra coincidencia con cualquiera de los
Meta caracteres patrones separados por | como en:
gato|perro|pez
▪ Estos son caracteres con un significado
Punto (.) Encuentra solo una instancia de cualquier
especial. carácter
Hat (^) Encuentra coincidencia al principio de un String
como en: ^Hola
$ Encuentra coincidencia al final de un String
como en: mundo$
\d Encuentra un digito
\s Encuentra un espacio vacío
\b Encuentra coincidencia al principio o al final de
un String como: \bHola o Hola\b
\uxxxx Encuentra el carácter Unicode especificado por
el número hexadecimal en xxxx
Expresiones regulares PHP
Cuantificador Descripción
Cuantificadores n+ Coindice con cualquiera Strings que contenga al
menos una n
▪ Definen cantidades n* Coincide con cualquier cadena que contenga
cero o más ocurrencias de n
n? Coincide con cualquier cadena que contenga
cero o una ocurrencia de n
n{x} Coincide con cualquier cadena que contenga una
secuencia de X n’s
n{x,y} Coincide con cualquier cadena que contenga una
secuencia de X a Y n’s
n{x,} Coincide con cualquier cadena que contenga una
secuencia de al menos X n’s
Expresiones regulares PHP
Grupos
▪ Se pueden usar paréntesis ( ) para <?php
aplicar cuantificadores a un grupo de $str = "Apples and bananas.";
patrones. $pattern = "/ba(na){2}/i";
▪ También pueden ser usados como parte echo preg_match($pattern, $str); //
del patrón a ser usado para la Salida 1
coincidencia. ?>
Manejo de formularios con PHP
▪ Las variables Super globales $_GET y $_POST son utilizadas para recolectar datos de
formularios.
▪ GET y POST crean un arreglo asociativo. En donde las llaves son los names de los
formularios y los valores son los datos que ingresa el usuario.
▪ Al ser super globales, se pueden accesar desde cualquier parte del script PHP.
▪ $_GET, es un arreglo de variables pasados via parámetros de URL.
▪ $_POST, es un arreglo de variables pasados de forma encapsulada vía HTTP POST
¿Cuándo usar?
GET POST
▪ Los datos enviados por el método GET son visibles por ▪ Los datos enviados por el método POST son invisibles
cualquiera. por otros.
▪ También tiene un límite de 2000 caracteres a pasar. ▪ No tiene límite en la cantidad de caracteres a pasar.
▪ Es posible guardar la consulta en un bookmark ya que ▪ POST soporta funcionalidades avanzadas como el
es pasado por el URL. Lo que puede ser útil en algunos poder subir archivos a un servidor.
casos.
▪ Sin embargo, como las variables no se muestran en la
▪ Puede ser usado para pasar datos no sensibles. URL no pueden ser guardas en bookmarks.
▪ Nunca se debe usar GET para pasar información
sensible.
Validación de formularios con
PHP
▪ Es importante pensar en la seguridad cuando se procesan formularios.
▪ Se debe tratar de evitar usar el método GET para enviar información a PHP. Esto
porque la data puede ser manipulada de forma malintencionada.
▪ Usar la función htmlspecialchars() puede ayudar a evitar Cross Site Scripting (XSS)
cuando se usa la variable super global $_SERVER[“PHP_SELF”].
▪ Veamos un ejemplo:
Validación de formularios con
PHP
▪ Asumamos que tenemos el siguiente formulario en una página llamada
[Link].
<form action="<?php echo $_SERVER["PHP_SELF"];?>“ method=“METHOD" >
▪ Si un usuario ingresa la siguiente url: “[Link]
el código del formulario lo traducirá como:
<form method="post" action=“[Link]”>
▪ Hasta ahí, todo bien.
Validación de formularios con
PHP
▪ Ahora asumamos que el usuario ingresa el siguiente url:
[Link] sido
hackeado')%3C/script%3E
▪ Esto será traducido en el código como:
<form method="post" action="[Link]/”><script>alert(‘haz sido
hackeado')</script>
▪ La URL inserta un script JS en el código que abrirá una ventana emergente con el
mensaje entre comillado.
▪ Se debe tener cuidado con la posibilidad que se inserten script por medio de URL ya
que estos podrían redireccionar a los usuarios a sitios maliciosos.
Validación de formularios con
PHP
▪ ¿Como se puede evitar?
▪ De tener que usar el super global $_SERVER[“PHP_SELF”] se recomienda usar la
función: htmlspecialchars(); y como parámetro ingresar el super global, obteniendo el
siguiente código:
<form method="post“ action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>”>
▪ La función convertirá cualquier carácter especial en simple texto plano HTML por lo
que si se intenta usar el exploit anterior se obtendrá esta salida:
<form method="post"
action=“[Link]/"><script>alert('hacked')</script>">
▪ Esto ahora que se produzca un error en la página pero el intento de exploit fallará.
Validación de formularios con PHP
▪ Retomando: <?php
1. Lo primero que se debe de hacer para la validación // inicialización de variables
$nom = $email = $genero = $mensaje = $url = "";
con PHP es pasar todas las variables por la función
htmlspecialchars() para evitar XSS.
if ($_SERVER["REQUEST_METHOD"] == "POST") {
2. Lo siguiente es eliminar todos los espacios en $nom = probar_entradas($_POST["nom"]);
blanco adicionales de las entradas de los usuarios, $email = test_input($_POST["email"]);
usando la función trim(). $website = test_input($_POST[“url"]);
$comment = test_input($_POST[“mensaje"]);
3. Eliminar los backslash de las entrdas de los
$gender = test_input($_POST["genero"]);
usuarios, usando la función stripslashes().
}
4. Lo siguiente es verificar que las entradas estén en el
formato correcto deseado. function probarEntradas($data) {
5. Lo último es verificar que todos los campos $data = trim($data);
requeridos hayan sido llenados. $data = stripslashes($data);
$data = htmlspecialchars($data);
▪ Para esto se puede crear una función que realice todas o return $data;
al menos la mayoría de esas verificaciones. Por }
ejemplos probarEntradas(); ?>
Campos requeridos en formularios
con PHP
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["email"])) {
empty().
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
}
la función probarEntradas()
$website = test_input($_POST["website"]);
}
if (empty($_POST["gender"])) {
</form>
Validar los campos de nombre y
correo en formularios con PHP
▪ Se puede hacer uso de las expresiones regulares para hacer este tipo
de validaciones:
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-
9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
Validar los campos de nombre y
correo en formularios con PHP
▪ En el caso de los correos electrónicos se puede
utilizar la función filter_var()
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
PHP & MySQL
PHP & MySQL
▪ Con PHP se puede conectar y manipular bases de datos.
▪ MySQL es el gestor de base de datos más popular para usar con PHP.
PHP & MySQL
¿Qué es MySQL?
▪ Sistema de base de datos usado para la web
▪ Sistema de base de datos que corre en un servidor
▪ Ideal para pequeñas y grandes aplicaciones
▪ Rápido, confiable y fácil de usar
▪ Usa el lenguaje estándar SQL
▪ Se ejecuta en múltiples plataformas
▪ Gratis de descargar y usar
▪ Desarrollado, distribuido y soportado por Oracle Corporation
PHP & MySQL
▪ Los datos en MySQL se almacenan en tablas.
▪ Una tabla es una colección de datos relacionados y consiste en columnas y filas.
▪ Se utilizan las queries SQL para que PHP puedan consultar o manipular los datos en
las tablas.
PHP & MySQL – Conectarse a la BD
▪ Antes de acceder a la data en una base de datos, se necesita primero conectar con el
servidor que hospeda dicha base de datos.
▪ En PHP hay 2 maneras de utilizar MySQL:
▪ MySQLi extension
▪ PDO (PHP Data Objects)
▪ Se puede utilizar cualquiera. La diferencia es que PDO puede ser usado para cualquier
gestor de base de datos y MySQLi solo puede ser usado para aquellos que sean
parecidos a MySQL, como MariaDB
PHP & MySQL – Conectarse a la BD
MySQLi PDO
<?php <?php
$servername = “servidor"; $servername = “servidor";
$username = “usuario"; $username = “usuario";
$password = “contraseña"; $password = “contraseña";
MySQLi PDO
<?php <?php
// Conexión a la base de datos // Conexión a la base de datos
$include(“[Link]”); $include(“[Link]”);
$conn->close();
?>
PHP & MySQL – Insertar data
▪ Por lo general la creación de base de datos y tablas no se hará con PHP sino desde la
misma base de datos.
▪ Es la inserción de datos que se suele hacer a través de PHP haciendo uso de los datos que
el usuario pasa a través de formularios en HTML.
▪ Sin embargo, para esta operación se necesita que exista una base de datos operacional y
una tabla en donde insertar dichos datos.
▪ Hay unas reglas a seguir:
▪ La consulta SQL debe ir entre comillas.
▪ Los Strings de SQL deben ir entre comillas para el SQL (utilizar 2 sistemas de comillas)
▪ Los valores numéricos no necesitan ir entre comillas
▪ La palabra Null no debe ir entre comillas
PHP & MySQL – Insertar data
<?php <?php
// Conexión a la base de datos // Conexión a la base de datos
include(conexió[Link]); $include(“[Link]”);
// Check connection
//Inserción de los datos
$sql = "INSERT INTO Visitas (nombre, apellido, correo)
// sql to create table VALUES ('John', 'Doe', 'john@[Link]')";
$sql = "INSERT INTO Visitas (nombre, apellido, correo) $conn->exec($sql);
VALUES ('John', 'Doe', 'john@[Link]')"; echo “Nuevo registro<br>";
} catch(PDOException $e) {
if ($conn->query($sql) === TRUE) { echo $sql . "<br>" . $e->getMessage();
echo “Nuevo registro"; }
} else {
echo “Error en el registro: “.$sql.”<br>”.$conn->error; $conn = null;
} ?>
$conn->close();
?>
PHP & MySQL – Obtener el ultimo ID
▪ Se puede sacar información de las tablas una vez hecho el ingreso.
▪ Por ejemplo. Normalmente los IDs se registran de forma automática utilizando la
función Auto_Increment de SQL.
▪ Se puede obtener ese último ID generado utilizando el método insert_.
PHP & MySQL – Obtener el ultimo ID
<?php <?php
// Conexión a la base de datos // Conexión a la base de datos
include(conexió[Link]); $include(“[Link]”);
// Check connection
//Inserción de los datos
$sql = "INSERT INTO MyGuests (nombre, apellido, correo)
// sql to create table VALUES ('John', 'Doe', 'john@[Link]')";
$sql = "INSERT INTO Visitas (nombre, apellido, correo) $conn->exec($sql);
VALUES ('John', 'Doe', 'john@[Link]')"; $last_id = $conn->lastInsertId();
echo “Nuevo registro. El último ID es: " . $last_id;
if ($conn->query($sql) === TRUE) { } catch(PDOException $e) {
$last_id = $conn->insert_id; echo $sql . "<br>" . $e->getMessage();
echo “Nuevo registro. El último ID es “.$last_id; }
} else {
echo “Error en el registro: “.$sql.”<br>”.$conn->error; $conn = null;
} ?>
$conn->close();
?>
PHP & MySQL – Insertar registros
multiples
▪ Se puede hacer una inserción de registros múltiples utilizando la función
multi_query() en el caso de MySQLi.
▪ En el caso de PDO se debe hacer la función exec() múltiples veces junto con las
funciones beginTrasaction() y commit().
PHP & MySQL – Insertar registros
múltiples
<?php <?php
// Conexión a la base de datos // Conexión a la base de datos
include(conexió[Link]); $include(“[Link]”);
// Check connection
//Creación de la base de datos
// Iniciar la transacción
// sql to create table $conn->beginTransaction();
$sql = "INSERT INTO Visitas (nombre, apellido, correo) // Sentencias SQL
VALUES ('John', 'Doe', 'john@[Link]')"; $conn->exec("INSERT INTO Visitas (nombre, apellido, correo)
VALUES ('John', 'Doe', 'john@[Link]')");
if ($conn->multi_query($sql) === TRUE) { $conn->exec("INSERT INTO Visitas (nombre, apellido, correo)
echo “Nuevos registros"; VALUES ('Mary', 'Moe', 'mary@[Link]')");
} else { $conn->exec("INSERT INTO Visitas (nombre, apellido, correo)
echo “Error en el registro: “.$sql.”<br>”.$conn->error; VALUES ('Julie', 'Dooley', 'julie@[Link]')");
}
// Realizar la transacción
$conn->close(); $conn->commit();
?> echo “Nuevos registros <br>";
} catch(PDOException $e) {
// hace un vuelta atras si algo pasa
$conn->rollback();
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
PHP & MySQL - Select
▪ La sentencia Select se utiliza para consultar información en una o varias tablas en la
base de datos.
▪ Se puede usar el wildcard asteristo (*) para seleccionar todas las columnas o indicar
que columnas y en que orden se quiere mostrar la data.
PHP & MySQL - Select
MySQLi PDO
<?php <?php
// Conectar con la base de datos // Conectar con la base de datos
includo(“[Link]”); include(“[Link]”);
// Consulta SQL // Consulta SQL
$sql = "SELECT id, nombre, apellido FROM Visitas"; $sql = "SELECT id, nombre, apellido FROM Visitas";
$result = $conn->query($sql); $result = $conn->query($sql);