Vous êtes sur la page 1sur 34

Lic.

Sistemas Computacionales

PHP

1 Introducción

Lenguaje de programación orientada a objetos para el desarrollo de sitios web.

Lo habitual es instalar un gestor de contenidos par que sea el mismo cliente que
cambie los contenidos de forma fácil y sencilla. La mayoría de los sitios web tiene como
base PHP. Siempre que abramos un sitio web veremos en frontend HTML junto con
CSS y JavaScript pero el motor de ellas será PHP por medio del backend

En la página oficial de PHP vamos a encontrar todo tipo de documentación.

Para poder trabajar con PHP necesitamos una infraestructura de servidor de tipo
apache para funcionar. Una de estas infraestructuras es XAMPP que nos permite
instalar de forma virtual un servidor en nuestro ordenador.

También existe la aplicación easyPHP que es un programa potente y es similar a


XAMPP que nos generan un servidor apache virtual.

XAMPP también nos permite trabajar con bases de datos e interactuar con ellas. Ya
que todo gestor de contenido debe tener una base de datos para poder funcionar.

Descargamos la última versión de XAMPP →


https://www.apachefriends.org/es/index.html y la instalamos.

- La instalación es sencilla
- Ejecutamos XAMPP e iniciamos apache y MySQL

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

- Tenemos la carpeta htdocs en la cual crearemos los archivos y que nos


permitirá ver en el sitio web
- Una vez arrancado el servidor, presionamos admin para abrir el localhost
- El nombre de los directorios no es recomendable ponerlo con espacios, ni
caracteres especiales…

Recordemos que PHP necesita de un servidor para funcionar.

1.1 Ejercicio 1

Trabajaremos con visual studio code: ejercicio1.php

<?php

echo "Hola mundo";

?>

Podemos poner elementos html dentro de php: ejercicio2.php

<?php

echo "<h2>Hola mundo</h2>";

?>

En PHP existen dos tipos de archivos:

- Los que muestran los resultados en pantalla → frontend


- Y los archivos que se ejecutan de forma interna que son invisibles para el
usuario→ backend
- Los segundos siempre iniciarán con <?php y terminarán con ?>

1.2 Ejercicios2

Para este creamos un archivo .php que contenga los elementos principales de html
como sigue: ejercicio3.php

- Podemos incrustar dentro de html lenguaje php pero la extensión debe ser
.php de lo contrario sería incorrecto
- También podemos insertar lenguaje CSS

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

1.2.1 Añadir imagen con php

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

1.2.2 Variables

- Lleva el signo de dólar $


- Seguida del nombre de la variable

1.2.3 Constantes

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

1.2.4 IF

1.2.5 Switch

1.2.6 For

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Impimimos todos los números menos el 5

Si quisiéramos dejar de imprimir el 5

1.2.7 Array

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

1.2.8 Concatenación

En el ejemplo anterior hemos visto cómo podemos combinar php con etiquetas html
sin problemas

1.2.9 Asignación

Para asignar debemos utilizar el signo =

Ahora, hacemos lo siguiente:

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Arroja en pantalla a Pedro ya que la variable $nombre solamente puede almacenar


un dato a la vez, y el dato que almacena es, en este caso, el último al que tiene. Salvo
sea un array.

1.2.10 Suma

1.2.11 Operaciones

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

1.2.12 Igualdad

En este ejercicio lo que estamos haciendo es comparar dos números. En donde el


primero es un entero y el segundo un decimal, por lo que está realizando una
comparación de valor, no de tipo de dato.

Este problema se da porque en php no se especifica que tipo de dato se está


declarando como en otros lenguajes de programación.

Para comparar el valor y el tipo de dato se utilizan ===

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

1.2.13 Diferencia

Cuando queremos que dos valores sean distintos

Nos arroja como resultado que el 11 y el 11 no son diferentes. Y cómo es que php
entiende que el 11 es igual al string 11. Es por que lo que está interpretando es el
valor.

Si quisiéramos que diferenciara entre el valor y el tipo, se pondría !==

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

1.2.14 Comparación ternaria

Tenemos la siguiente estructura

Esta estructura podemos hacerla más corta → condición?expresion1:expresion2


en donde se mostrará la expresión1 si se cumple, o la expresion2 si no e cumple

Es importante saber qué opción se utiliza para evitar confundirnos. Además que es la
opción que más se utiliza.

1.2.15 Funciones

En php todo son funciones. Por tanto, juegan un papel muy importante.

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

En este ejercicio estamos dando por sentado que son 1000 pesos para calcular el iva
pero. ¿Qué sucede si mi factura es de 2000?

Necesitamos pasarle un valor diferente como sigue:

- $precio_bruto → es el valor que el usuario insertará


- Al invocar a la función, dentro del paréntesis especificamos los parámetros

Ahora, supongamos que el tipo de iva no lo conocemos, entonces declaramos como


parámetro otra variable que sea el iva y al invocarla ponemos el iva correspondiente
como sigue.

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

2 Estructuras de control

Vamos a aprender a trabajar con:

- Fechas
- Formatos de archivos
- Grabar archivos en el servidor para recuperarlos de forma dinámica

2.1 Fecha

En php existen 4500 funciones predefinidas.

- time() → Devuelve la hora actual desde el inicio de UNIX (1 de enero de 1970)


a las 00:00:00 GMT. Hora que también se llama TIMESTAMP UNIX

TIMESTAMP UNIX es muy importante ya que, se utiliza en las bases de datos


para identificar en que momento una persona introdujo un dato. El momento en
que un usuario realizó un pago… por ejemplo.

- Date() → devuelve la fecha en el formato que se ha pasado como argumento

2.2 Ejercicio

Script que muestre la fecha actual y la fecha de dentro de 7 día.

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

De Esta forma hemos conseguido sumar días. Ahora, imaginemos que queremos
saber qué persona se ha registrado en mi sitio web y si me ha pagado una cuota y
necesito saber en qué fecha me debe pagar la siguiente cuota.

Si la cuota fuera mensual, podríamos decir: en vez de que fueran 7 días, serían 29ya
que antes de que termine el mes le enviaremos un recordatorio quedando como sigue

También lo podemos hacer para recordar un aniversario, un evento…

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Vamos a ver otras funciones de fecha. Recordemos que existen bastantes funciones
de fecha.

print_r(get_date()) → devuelve una fecha con todas las horas y minutos actuales

Ahora, imaginemos que un usuario necesita poner una fecha pero se equivoca. Cómo
podemos validar si la fecha es correcta o no.

Es muy importante validar una fecha, sobre todo si es de nacimiento porque en función
de eso a lo mejor tiene derechos…

- Time() → nos va a permitir ver en qué momento se entra en una página web,
para un concurso, una entrega…
- Date() →
- Checkdate() → para validar fechas.

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

2.3 Archivos

Cuando queremos anotar o recuperar datos, lo más habitual es que vayamos al


servidor, pero no siempre es práctico.

Es más sencillo poner un archivo de texto y desde php manipularlo y guardarlo.

- Creamos un archivo de texto → ejemplo.txt


- Desde php vamos a trabajar con este archivo
- Creamos la plantilla php → archivo.php

Siempre que trabajemos con un archivo de texto y nuestro sitio este montado en un
servidor, es necesario darle permisos de lectura y escritura, de lo contrario no nos
permitirá trabajar con él.

Ya hemos visto que podemos leer el archivo accediendo a él. Creamos otro archivo →
archivo4.php

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

- Ahora, creamos otro archivo de texto → ejemplo1.txt


- Insertamos tres líneas de texto

Lo que hemos hecho es que:

- La variable $tabla utiliza la función file que genera un array con todos los
contenidos del archivo ejemplo1.txt separando cada línea en unos de los
elementos del array
- Con la función foreach() recorremos el array que está en $tabla y le decimos
que lo separe en una variable que se llame $línea
- Con $linea imprimimos cada línea.

¿Podemos escribir en un archivo de texto? Sí.

- Creamos un nuevo archivo de texto → escribir.txt


- Vamos a escribir dentro de este archivo
- Creamos → archivo6.php

De cara al servidor lo primero es abrir el archivo; luego le pasamos como parámetro r


para sólo lectura y + para escribir. Si el archivo no existe, en vez de r ponemos a para
que nos lo cree

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Esta es una buena opción para cuando no se quiera hacer una base de datos en la
que se pueda elegir un archivo de texto en donde el usuario registre determinados
datos. Ya que no siempre tenemos que sobrecargar las bases de datos

2.4 Reto

Hacer un contador de visitas

- Creamos un archivo de texto → visitas.txt


- Creamos → contador7.php

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

El reto es que, cuando lleguemos a la visita 15, nos muestre el mensaje “en horabuena,
eres el visitante número 15”

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

2.5 Trucos

Mostrar una imagen aleatoria cada vez que se carga la página web

- Guardamos 4 imágenes
- Creamos el archivo → aleatorio.php

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Dados dos números, hallar la suma.

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

3 Control de acceso

Vamos a comenzar a construir un sitio web completo para ver toda la potencia de PHP.
Iremos viendo por detalles. Lo primero que vamos a hacer será un acceso privado.
Imaginemos un sitio web que permitirá el acceso por medio de un usuario y una
contraseña.

Crearemos tres archivos

• Intranet.js → Da los estilos al formulario de entrada


• Styles.css → valida si los campos se rellenaron correctamente
• Index.php

3.1 Index.php

- action contiene el archivo .php que realizará todo


- Todo action debe tener un method en este caso utilizaremos post luego
veremos la diferencia entre post y get
- Luego llamaremos a la función validación_index() que crearemos en autenticar

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Cuando tenemos un archivo index sea html o php, lo abrirá directamente

3.2 Styles.css

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

3.3 Intranet.js

3.4 Autenticar.php

Ahora, creamos el documento autenticar.php que será el que gestionará el


documento si podemos o no ingresar al sitio. Vamos a hacer un login limitado, es decir,
sin base de datos.

Creamos el archivo autenticar.php dentro de una carpeta llamada login

- Desde index.php llamamos al archivo autenticar.php. por tanto,


comprobamos si existe comunicación entre ambas páginas.

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Guardamos y actualizamos y, al poner cualquier contraseña, nos deberá mostrar el


contenido de autenticar.php. de ser así, querrá decir que sí existe comunicación entre
ambas páginas.

¿Cómo podemos pasar información de index.php a autenticar.php?

Existen dos métodos:

- El método post
- El método get

Como estamos en un formulario hablaremos del post. Cuando pasamos información


por medio de éste método es como si se metieran todas las variable so valores de
nuestro formulario en una cápsula y pasan de forma privada a la siguiente página, que
en nuestro caso es autenticar.php. de manera que, siempre que queramos enviar
información sin que se vea fácilmente, utilizaremos el método post

En nuestro formulario estamos enviando dos valores: p_username y p_password.


Solamente podemos enviar información a través de los input de un formulario en este
caso.

Lo que enviamos es p_username y p_password que tendrá lo que escriba la persona


en pantalla

¿Cómo recupero esta información en autenticar.php?

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Para recuperar información que se pasa mediante el método post de un documento


php a otro, o de una url a otra hacemos o siguiente:

Guardamos y actualizamos nuestra página. Insertamos los datos y, al enviar deberá


mostrar en pantalla el usuario y la contraseña. De ser así, entonces la comunicación
entre index.php y autenticar.php es correcta.

Vamos a mejorar un poco nuestro login. Como sabemos, existen robots y páginas
especializadas que pueden inyectar código malicioso en los campos de usuario que,
al enviarlos pueden estropear una base de datos, una página o infectarla… la
seguridad absoluta no existe pero vamos a intentar ponerle seguridad. Una forma sería
filtrando las variables $usuario y $contraseña para que eliminen caracteres malos y
código malicioso. Y para hacerlo sería pasando estos valores como un filtro como
sigue:

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Al actualizar, no vemos ninguna diferencia pero internamente hemos dicho que pasen
letras y textos sin más. Si hay espacios, código SQL se desactivarán…

Aquí tenemos la primera parte del login en donde tenemos:

- Una página de inicio index.php con un formulario que nos lleva a


autenticar.php pero no hemos realizado ningún filtro

Ahora hacemos una comprobación manual de que el usuario y la contraseña son


correctos desde autenticar.php

Guardamos y actualizamos y nos deberá mostrar la leyenda según corresponda.


Ahora, vamos a hacer que el usuario se vaya de la página redireccionándolo para ello
modificamos el if como sigue:

- PAGINA_INICIO indica que nos debe enviar a la página de inicio subiendo un


nivel en donde la página de inicio es index.php con ../

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

- la función header salta, de la página en dónde está y lleva a donde le digamos


con location:

en el redireccionamiento, en caso el dato sea correcto mostramos un mensaje al


usuario. Para mostrarlo ponemos el nombre del archivo seguido de ? más una
variable más un texto

'PAGINA_INICIO','../index.php?mensaje=mensaje_error'

Cuando pasamos los datos por la URL estamos utilizando el método get el cual se
puede utilizar cuando no son datos importantes

¿Cómo recuperamos el método get?

En el index.php arriba del todo ponemos lo siguiente:

En este código hacemos la pregunta: hay algún mensaje get para mostrar un mensaje.
Para ello usamos la función isset().

Después de </form> ponemos

Ahora modificamos los estilos:

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Vamos a repasar:

- hasta el momento tenemos un index.php con un formulario que utiliza el


método post
- Si el formulario es llenado correctamente, al presionar enviar, se redirige a
autenticar.php y comprueba si el usuario y la contraseña son correctos.
o En caso que alguno de los datos esté incorrecto, regresa al index.php
con un mensaje en la url que es:

o y que se imprime en:

ahora sólo nos falta ver qué sucede si los datos son correctos: Si los datos son
correctos deberá llevarnos a una página de inicio. Para ellos creamos una nueva
carpeta llamada main que contendrá un archivo llamado index.php desde el cual
iniciaría nuestra página web o intranet si los datos insertados son los correctos..

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

3.5 Reto

Hasta el momento, nuestro login funciona adecuadamente.

Lo que estamos haciendo es que, para pasar datos de una página a otra, de un php a
otro, estamos utilizando el get cuando los pasamos por la url o el post cuando los
pasamos mediante un formulario.

Habrá veces en que los datos no van a variar. Aquí es en donde entran las variables
de sesión que lo que haces es, asignar una variable con x dato y, mientras esté el
navegador abierto y pasemos de una pantalla a otra, esa variable estará vigente pero,
al cerrar el navegador, esa variable dejará de funcionar.

De ahí que las variables de sesión se deban poner cuando se compruebe que el login
es correcto. Es decir, si los datos son correctos entonces se le asignara una variable
de sesión y se tiene que asignar antes del define y del header de autenticar.php.

¿Cuántas variables de sesión se deben poner? Las que sean necesarias, en nuestro
caso concreto, solamente una.

Primero inisiamos al sesión, luego iniciamos la variable nombre la cual sacaríamos


de la base de datos de la tabla usuarios, pero como no hemos creado una aún vamos
a poner Carlos Alberto o cualquier otro.

Asi que, mientras el usuario no cierre sesión, se podrá recuperar, desde cualquier php
de nuestra página web este valor.

¿Cómo podemos recuperar esta variable de sesión?

Lo hacemos desde index.php que está en la carpeta main llamando a la sesión que
iniciamos y mostrando el nombre como sigue:

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Una vez que la persona abandona el sitio web, se borra esta sesión.

Ahora, vamos a hacer una variable de sesión con un nivel.es decir, un usuario que
tenga un tipo de permiso1 y otros que tengan un tipo de permiso2 porque en función
del nivel de acceso que tenga el usuario, podrá ver unas cosas u otras.

Otorgar diferentes permisos en un sitio web es normal. Ya que no es lo mismo el


administrador como el usuario.

Ya hemos creado la variable de sesión nombre ahora vamos a crear la variable de


sesión nivel.

Ponemos el nuevo nivel en autenticar.php

Ahora, en index.php que está dentro de main vamos a recuperar el nivel

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

3.6 Trucos

Creamos un nuevo archivo dentro de main llamado salir.php

Añadimos en el index.php que está en la carpeta main añadimos un enlace que vaya
a donde queremos

Ahora vamos al index.php que es en donde se encuentra el formulario para mostrar


el mensaje

Ing. Carlos Alberto Aguilar Cisneros


Lic. Sistemas Computacionales

Al final, nos queda una estructura como sigue.

Ing. Carlos Alberto Aguilar Cisneros

Vous aimerez peut-être aussi