Programación Web
Programación Web
class Car {
array("Volvo","BMW","Toyota"); }
public function message() {
return "My car is a " . $this->color . " " . $this->model . "!";
var_dump($cars); }
}
$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 utilizan echo $int_cast;
?>
Matemáticas en PHP
Al igual que en cualquier otro lenguaje, PHP tiene un set de
funciones que permiten realizar tareas matemáticas en números de
cualquier tipo.
Matemáticas en PHP
Función pi()
Esta función retorna el valor de PI, <?php
3.1415926535898 echo(pi()); // retorna 3.1415926535898
?>
Matemáticas en PHP
Función min() y max()
Para encontrar el valor mínimo y máximo <?php
de una lista de argumentos se pueden echo(min(0, 150, 30, 20, -8, -200)); //
utilizar las siguientes funciones: retorna -200
min() = retorna el menor valor de una lista de echo(max(0, 150, 30, 20, -8, -200)); //
argumentos. retorna 150
max() = retorna el mayor valor de una lista de ?>
argumentos
Matemáticas en PHP
Función abs()
Esta función retorna el valor absoluto <?php
(positivo) de un número. echo(abs(-6.7)); // retorna 6.7
?>
Matemáticas en PHP
Función sqrt()
Esta función retorna la raíz cuadrada de un <?php
número. echo(sqrt(64)); // retorna 8
?>
Matemáticas en PHP
Función round()
Esta función redondea un número tipo float <?php
aplicando la regla de redondeo echo(round(0.60)); // retorna 1
convencional devolviendo un integer. echo(round(0.49)); // retorna 0
?>
Matemáticas en PHP
Números aleatorios
La función rand() genera un número <?php
aleatorio entre el rango de números enteros. echo(rand());
Para obtener más control se pueden agregar ?>
2 parámetros indicando el rango mínimo y <?php
máximo del número a generar. echo(rand(10, 100));
?>
Matemáticas en PHP
Función pow()
Esta función el cálculo de la potencia de un <?php
número recibiendo como parámetro la base echo(pow(2,4) . "<br>"); // retorna 16
y el exponente. echo(pow(-2,4) . "<br>"); // retorna 16
echo(pow(-2,-4) . "<br>"); // retorna 0.0625
echo(pow(-2,-3.2)); // retorna NaN
?>
Matemáticas en PHP
Tarea #3, segundo periodo
Busque las siguientes funciones matemáticas 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 “Matemáticas en PHP # de la lista.pptx”.
Fecha de entrega: 21 de julio 2023.
Constantes en PHP
Las constantes son una estructura de datos que, como las variables reserven un espacio en
memoria para almacenar un único valor.
A diferencia de las variables, las constantes una vez definidas su valor no puede ser modificado.
Se declaran de manera diferente que las variables.
Un nombre valido para una constante inicia con una letra o por convención un guion bajo (_).
No se usa el signo de dólar ($) delante del nombre de una constante.
Constantes en PHP
Para crear una constante en PHP se utiliza la <?php
función define() // Con el case-insensitive en false
define(“SALUDO", “Esto es PHP!!!");
define(nombre, valor, case-insensitive),
echo SALUDO;
donde: ?>
nombre = al nombre de la constante.
<?php
valor = el valor que tomara la constante
// Con el case-insensitive en true
case-insensitive = opcional, indicar si la define(“SALUDO", “Esto es PHP!!!", true);
constante no será case sensitive, por defecto echo saludo;
está en false. ?>
Constantes en PHP
En PHP7 o superior se pueden crear <?php
constantes que almacenen arreglos. define("carros", [
"Alfa Romeo",
Se utiliza igual la función define()
"BMW",
"Toyota"
]);
echo carros[0];
?>
Constantes en PHP
Las constantes son por defecto globales. <?php
define(“SALUDO", "Welcome to
Se pueden utilizar en todo el script.
W3Schools.com!");
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 con
* Multiplicación $x * $y x += y x=x+y
y
/ División $x / $y x -= y x=x-y x obtiene el valor de x restado con y
% Modulo $x % $y x obtiene el valor de x multiplicado
x *= y x=x*y
** Potencia $x ** $y con y
x obtiene el valor de x dividido con
x /= y x=x/y
y
x obtiene el valor del residuo entre x
x %= y x=x%y
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 y Retorna verdadero si ambos
++$x Pre incremento and | && And $x and $y
luego retorna x son verdaderos
Retorna x y luego Retorna verdadero si alguno
$x++ Incremento or | || Or $x || $y
de los 2 es verdadero
incrementa en uno
Retorna si y solo si alguno
Decrementa en uno x y xor Xor $x xor $y
de los 2 es verdadero
--$x Pre decremento
luego retorna x
Retorna verdadero si no es
Retorna x y luego ! Not !$x
$x-- Decremento verdadero
decrementa x en uno
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 pares
== Igualdad $x == $y
de llave/valor
Retorna verdadero si ambos arreglos tienen los mismos pares
=== Identidad $x === $y
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 verdadero x
?: Ternario $x = expr1 ? expr2 : expr3
será expr2, sino será expr3
Retorna el valor de $x. Si expr1 existe y no es
?? Coalescencia nula $x = expr1 ?? expr2 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") {
echo “Tenga un buen día!";
verdadera;
} }
?>
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 ejecuta $t = date("H");
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 códigos si se <?php
cumplen alguna de diferentes condiciones. $t = date("H");
if (condición) {
Código que se ejecuta si la condición es if ($t < "10") {
verdadera; echo “Tenga Buena mañana!";
} elseif (condición) { } elseif ($t < "20") {
Código que se ejecuta si la primera condición es echo “Tenga buen día!";
falsa pero esta es verdadera;
} else {
} else {
echo “Tenga buena noche!";
Código que se ejecuta si todas las condiciones son
falsas; }
} ?>
Switch en PHP
Es usado en sustitución al if … elseif … else. Permite <?php
realizar diferentes acciones basado en diferentes $favcolor = “rojo";
condiciones.
switch (n) { switch ($favcolor) {
case label1: case “rojo":
Código que se ejecuta si n=labe1; echo “Su color favorito es rojo!";
break; break;
case label2: case “azul":
Código que se ejecuta si n=label2; echo "Su color favorito es azul!";
break; break;
case label3: case “verde":
Códgo que se ejecuta si n=label3; echo "Su color favorito es verde!";
break; break;
... default:
default: echo "Su color favorito no es ni rojo, ni azul, ni 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 que <?php
una determinada condición sea cierta. $x = 1;
while (condición) {
Código que se ejecuta; while($x <= 5) {
} echo “El número es: $x<br>";
$x++;
}
?>
Ciclos en PHP
do … while
Ejecuta un bloque de código al menos una <?php
vez y repite lo repite mientras que una $x = 1;
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++) {
echo “El número es: $x <br>";
for (init contedor; prueba de contador;
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", "Joe"=>"43");
arreglo utilizando para ello el juego de
llave/valor del mismo. foreach($age as $x => $val) {
echo "$x = $val<br>";
foreach ($array as $valor) {
}
Código a ejecutar; ?>
} <?php
$colores = array(“rojo", “verde", “azul", “amarillo");
Para <?php
recorrer e imprimir un $carros = array("Volvo", "BMW",
arreglo indexado se utiliza "Toyota");
$tamano = count($carros);
el ciclo for.
for($x = 0; $x < $tamano; $x++) {
echo $carros[$x];
echo "<br>";
}
?>
Arreglos en PHP
Asociativos
Son arreglos que usan llaves de <?php
nombres que pueden ser asignadas. $edad = array("Peter"=>"35", "Ben"=>"37",
"Joe"=>"43");
Hay 2 maneras de crear arreglos echo "Peter tiene " . $edad['Peter'] . " años.";
asociativos: ?>
$edad = array("Peter"=>"35",
"Ben"=>"37", "Joe"=>"43");
$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";
Arreglos en PHP
Asociativos
Para <?php
recorrer e imprimir un $edad = array("Peter"=>"35", "Ben"=>"37",
arreglo indexado se utiliza "Joe"=>"43");
<?php
function writeMsg() {
echo “Hola mundo!";
}
suma();
echo $z;
?>
Super globales de PHP
$_SERVER <?php
echo $_SERVER['PHP_SELF'];
Almacena información sobre cabeceras, echo "<br>";
rutas y locaciones de los scripts. echo $_SERVER['SERVER_NAME'];
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
$_SERVER['PHP_SELF'] Returns the filename of the currently executing 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']
www.w3schools.com)
Returns the server identification string (such as
$_SERVER['SERVER_SOFTWARE']
Apache/2.2.24)
Returns the name and revision of the information
$_SERVER['SERVER_PROTOCOL']
protocol (such as HTTP/1.1)
Super globales de PHP
Elemento/Código Descripción
Returns the request method used to access the page
$_SERVER['REQUEST_METHOD']
(such as POST)
Returns the timestamp of the start of the request (such
$_SERVER['REQUEST_TIME']
as 1377687496)
Returns the query string if the page is accessed via a
$_SERVER['QUERY_STRING']
query string
$_SERVER['HTTP_ACCEPT'] Returns the Accept header from the current request
Returns the Accept_Charset header from the current
$_SERVER['HTTP_ACCEPT_CHARSET']
request (such as utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST'] Returns the Host header from the current request
Super globales de PHP
Elemento/Código Descripción
Returns the complete URL of the current page (not
$_SERVER['HTTP_REFERER']
reliable because not all user-agents support it)
$_SERVER['HTTPS'] Is the script queried through a secure HTTP protocol
Returns the IP address from where the user is viewing
$_SERVER['REMOTE_ADDR']
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 machine to
$_SERVER['REMOTE_PORT']
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 your
$_SERVER['SERVER_ADMIN'] script runs on a virtual host, it will be the value
defined for that virtual host) (such as
[email protected])
Returns the port on the server machine being used by
$_SERVER['SERVER_PORT']
the web server for communication (such as 80)
Returns the server version and virtual host name
$_SERVER['SERVER_SIGNATURE']
which are added to server-generated pages
Super globales de PHP
Elemento/Código Descripción
Returns the file system based path to the current
$_SERVER['PATH_TRANSLATED']
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 <input type="submit">
formulario HTML por cualquiera de los 2 </form>
métodos GET o 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 <input type="submit">
formulario HTML por medio del método </form>
POST del formulario.
<?php
Este método es ampliamente utilizado para if ($_SERVER["REQUEST_METHOD"] == "POST") {
pasar variables por ser el “más seguro” pero // recolectar data del valor del input
$name = $_POST['fname'];
es más lento que GET. if (empty($name)) {
echo "Name is empty";
} else {
echo $name;
}
}
?>
Super globales de PHP
$_GET <body>
<a href="test_get.php?
Se utiliza para recoger datos de un subject=PHP&web=W3schools.com">Test
formulario HTML por medio del método $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 POST
$_GET['web'];
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
PHP provee una variedad de funciones que permiten
utilizar expresiones regulares.
preg_match()
preg_match_all()
preg_replace()
Expresiones regulares PHP
preg_match() <?php
$str = "Visit W3Schools";
Retorna 1 si el patrón fue encontrado en un $pattern = "/w3schools/i";
String y 0 si no lo fue. echo preg_match($pattern, $str); // Salida 1
?>
Expresiones regulares PHP
preg_match_all() <?php
$str = "The rain in SPAIN falls mainly on the
Retorna el número de veces que un patrón plains.";
fue encontrado en un String, el cual también $pattern = "/ain/i";
puede ser 0 echo preg_match_all($pattern, $str); // Salida
4
?>
Expresiones regulares PHP
preg_replace() <?php
$str = "Visita Microsoft!";
Retorna un String con reemplazando todas $pattern = "/microsoft/i";
las coincidencias que hubo en el String echo preg_replace($pattern, "W3Schools",
$str); // Salida "Visita W3Schools!"
?>
Expresiones regulares PHP
Modificadores de expresiones regulares Modificador Descripción
i Hace una búsqueda no case sensitive
Pueden cambiar como la búsqueda es
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 utilizados para [abc] Encuentra un carácter entre los que están en los
paréntesis cuadrados.
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 patrones
Meta caracteres separados por | como en: gato|perro|pez
Punto (.) Encuentra solo una instancia de cualquier carácter
Estos son caracteres con un significado
Hat (^) Encuentra coincidencia al principio de un String como
especial. 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 aplicar <?php
cuantificadores a un grupo de patrones. $str = "Apples and bananas.";
También pueden ser usados como parte del $pattern = "/ba(na){2}/i";
patrón a ser usado para la coincidencia. echo preg_match($pattern, $str); // Salida 1
?>
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
cualquiera. invisibles por otros.
También tiene un límite de 2000 caracteres a pasar. No tiene límite en la cantidad de caracteres a
Es posible guardar la consulta en un bookmark ya que pasar.
es pasado por el URL. Lo que puede ser útil en algunos
casos.
POST soporta funcionalidades avanzadas como
el poder subir archivos a un servidor.
Puede ser usado para pasar datos no sensibles.
Sin embargo, como las variables no se muestran
Nunca se debe usar GET para pasar información
sensible. en la URL no pueden ser guardas en bookmarks.
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 formulario.php.
<form action="<?php echo $_SERVER["PHP_SELF"];?>“ method=“METHOD" >
Si un usuario ingresa la siguiente url: “http://www.paginaejemplo.com/formulario.php”, el
código del formulario lo traducirá como:
<form method="post" action=“formulario.php”>
Hasta ahí, todo bien.
Validación de formularios con PHP
Ahora asumamos que el usuario ingresa el siguiente url:
http://www.paginaejemplo.com/test_form.php/%22%3E%3Cscript%3Ealert(‘haz sido hackeado')
%3C/script%3E
Esto será traducido en el código como:
<form method="post" action="formulario.php/”><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=“formulario.php/"><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 con // inicialización de variables
$nom = $email = $genero = $mensaje = $url = "";
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 blanco $nom = probar_entradas($_POST["nom"]);
adicionales de las entradas de los usuarios, usando la $email = test_input($_POST["email"]);
función trim(). $website = test_input($_POST[“url"]);
$comment = test_input($_POST[“mensaje"]);
3. Eliminar los backslash de las entrdas de los usuarios,
$gender = test_input($_POST["genero"]);
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 requeridos $data = trim($data);
hayan sido llenados. $data = stripslashes($data);
$data = htmlspecialchars($data);
Para esto se puede crear una función que realice todas o al return $data;
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["name"])) {
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
Igual manera se puede agregar la }
$email = test_input($_POST["email"]);
if (empty($_POST["comment"])) {
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
?>
Campos requeridos en formularios con
PHP
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
para imprimir las variables con los <span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
mensajes de error. <input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gender:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<input type="radio" name="gender" value="other">Other
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</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
Enel 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";
try {
// Crear la conexión $conn = new PDO("mysql:host=$servername;dbname=myDB",
$conn = new mysqli($servername, $username, $password); $username, $password);
// setear el modo de error PDO para excepciones
// Verificar la conexión $conn->setAttribute(PDO::ATTR_ERRMODE,
if ($conn->connect_error) { PDO::ERRMODE_EXCEPTION);
die(“Conexión fallida: " . $conn->connect_error); echo "Conexión exitosa";
} catch(PDOException $e) {
}
echo "Conexión fallida: " . $e->getMessage();
echo "Conexión exitosa"; }
?> ?>
PHP & MySQL – Conectarse a la BD
Por temas de seguridad siempre se debe de cerrar la conexión a la base de datos.
De ese modo se ayuda a evitar hackeos mediante inyección de códigos SQL.
MySQLi
$conn->close();
PDO
$conn = null;
PHP & MySQL – Crear una base de datos
Una base de datos consiste en una o varias tablas.
Es necesario que el usuario con el que se haya hecho la conexión cuente con los privilegios
correspondientes para crear o borrar bases de datos.
Se recomienda no utilizar el usuario root del servidor de bases de datos.
Se utiliza la sentencia SQL, CREATE DATABASE
PHP & MySQL – Crear una base de datos
MySQLi PDO
<?php <?php
// Conexión a la base de datos // Conexión a la base de datos
$include(“conexion.php”); $include(“conexion.php”);