Persistir los datos en una base de datos POSGresql con PHP
- 1346
- 367
- Adriana Tórrez
PHP es un lenguaje de secuencias de comandos de servidor ampliamente utilizado. Sus vastas capacidades y naturaleza liviana lo hacen ideal para el desarrollo de frontends web, y aunque es posible crear estructuras avanzadas, es un uso básico también fácil de aprender, lo que lo convierte en un buen punto de partida para los principiantes también. Sin embargo, los datos registrados, procesados, enviados o mostrados por la aplicación que construimos deben almacenarse en algún lugar; Nuestra página web es estancada sin estos datos. Podemos almacenar nuestros datos de muchas maneras o incluso descartarlos después del uso, pero la forma más estándar es almacenarlos en una base de datos diseñada para el único propósito de almacenar datos de una manera confiable, y presentarlos si es necesario, lo más rápido posible, lo más rápido posible.
En este tutorial construiremos una página web simple para grabar y mostrar datos de usuario. Usaremos un PostgreSQL RDBMS como backend, y desarrollaremos nuestra aplicación en PHP que se ejecutará en un servidor web de Apache. De esta manera, podemos acceder a nuestra aplicación web desde cualquier navegador común para ver o agregar a nuestra base de datos de usuarios. Es la naturaleza de la aplicación web que muchos usuarios/operadores pueden trabajar con ella simultáneamente, todo lo que necesitan es un navegador y acceso a la red a nuestra aplicación.
En este tutorial aprenderás:
- Cómo instalar los paquetes necesarios para la conexión PostgreSQL en PHP
- Cómo crear el lado de la base de datos de la aplicación
- Cómo codificar la aplicación de ejemplo
- Cómo operar y verificar la aplicación de ejemplo
Requisitos y convenciones de software utilizados
Categoría | Requisitos, convenciones o versión de software utilizada |
---|---|
Sistema | Ubuntu 18.04.2 |
Software | PostgreSQL 10.9, Php 7.2.19 |
Otro | Acceso privilegiado a su sistema Linux como root o a través del sudo dominio. |
Convenciones | # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominiops - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado |
Notas sobre componentes de software
Configuramos nuestra aplicación en Ubuntu, pero básicamente este proceso se puede transportar a cualquier distribución. Las diferencias se encuentran en los administradores de paquetes y los nombres de los paquetes, así como en alguna ruta de directorio. También tenga en cuenta que, si bien utilizaremos las versiones de los componentes del software mencionados anteriormente, esta aplicación se puede construir en varias versiones de los componentes con pequeños ajustes. Se incluirán algunos ejemplos de otras distribuciones para comparar.
Puede notar que la solicitud es minimalista: eso es a propósito. El objetivo de esta guía es mostrar los principios básicos de desarrollar una aplicación que pueda comunicarse con una base de datos, lo más simple posible. Código mínimo, componentes mínimos. No utilice esta guía para construir aplicaciones de producción, ya que carece de mediciones de seguridad, reutilización u optimización para el caso.
Instalación de paquetes necesarios
Después de instalar la base de datos PostgreSQL, todo lo que necesitamos es agregar soporte PHP. Para eso, necesitamos el php-pgsql
paquete. Usaremos apto
Para instalarlo:
# apt-get install php-pgsql
Algunas distribuciones pueden llamarlo php7-pgsql
y similares, pero todos los administradores de paquetes proporcionan función de búsqueda, por lo que es fácil encontrar lo que necesitamos. Por ejemplo, así es como instala PostgreSQL en sistemas RHEL8 / CentOS 8 Linux.
También necesitamos instalar PHP, un servidor web y soporte de PHP en el servidor web. Eso es a dos paquetes de distancia:
# apt-get install apache2 libapache2-mod-php
Podemos iniciar ambos servicios para que estén disponibles en los próximos pasos. Usaremos system
para eso.
# SystemCTL Inicio Postgresql # SystemClt iniciar apache2
Creación de la base de datos y los objetos necesarios
El lado de la base de datos de nuestra aplicación consistirá en una base de datos, una sola tabla y una secuencia para admitir la asignación de clave primaria automática.
- Cambiaremos a la
post -put
usuario:# SU - Postgres
- Inicie sesión en la base de datos:
$ PSQL PSQL (10.9 (Ubuntu 10.9-0ubuntu0.18.04.1)) Escriba "ayuda" para obtener ayuda. Postgres =#
- Crear un nuevo usuario:
Postgres =# Crear rol Ejemplouser con contraseña de inicio de sesión 'Ejemplopass';
Y una base de datos con el conjunto del propietario.
Postgres =# Crear base de datos Ejempledb propietario Ejemplo Usor codificando 'UTF-8';
- Después de salir del
PSQL
herramienta, creamos un archivo de texto llamadoEjemplo_table.sql
Con el siguiente contenido:
CopiarCrear secuencia userId_seq Comience con 0 incremento por 1 no maxValue minvalue 0 caché 1; alter secuencia userId_seq propietario a EjemploUser; Crear usuarios de la tabla (userID numéric Key predeterminado NextVal ('userId_seq' :: regClass), texto de nombre de usuario no nulo, texto por correo electrónico no nulo, registro_date timestamp predeterminado ahora ()); alterar el propietario de los usuarios de la tabla a EjemploUser;
Aquí creamos una secuencia en la línea 1 que proporcionará una clave primaria única para cada registro de la tabla, que establecer su propiedad. En la línea 3 creamos una tabla que mantendrá los datos del usuario que registraremos y mostraremos con la aplicación. Establecimos valores predeterminados para el
ID de usuario
yFecha de Registro
, y dejará a la base de datos para llenar esos campos para nosotros. - Cargamos el archivo SQL anterior en la nueva base de datos:
$ PSQL -D EXAMPLEDB < example_table.sql CREATE SEQUENCE ALTER SEQUENCE CREATE TABLE ALTER TABLE
Con esto, nuestra base de datos está configurada y está lista para servir. PostgreSQL 10.9 en Ubuntu acepta inicios de sesión protegidos con contraseña en el dispositivo Loopback de forma predeterminada. Si está utilizando otras versiones, es posible que deba modificar el PG_HBA.confusión
Para habilitar el acceso a la base de datos. Hay un ejemplo en nuestra guía de instalación de Redmine sobre cómo configurarlo.
Construyendo el código de aplicación
Si bien ciertamente hay muchas herramientas excelentes para ayudar a producir el código fuente de trabajo, no las cubriremos aquí, se agregaría a la complejidad de esta guía. Crearemos un archivo de texto llamado grabación.php
, en el valor predeterminado RAIZ DEL DOCUMENTO
Directorio en Ubuntu 18, /var/www/html/
. En otras distribuciones esto podría ser /srv/www/htdocs/
, o algo mas. Consulte la configuración del servidor web si no está seguro.
PHP es un lenguaje de secuencias de comandos, lo que significa que no necesitamos compilar nuestro código, solo presentarlo al servidor web, que lo interpretará en tiempo de ejecución.
Podemos usar un editor de texto de línea de comando, como VI
o nano
Para completar el archivo PHP mencionado con el siguiente código fuente:
Página de grabación de usuarios Complete el siguiente formulario y presione enviar para registrar los datos.
\norte# Nombre de usuario Dirección de correo electrónico Fecha de Registro \ n "; while ($ row = pg_fetch_row ($ result)) echo"" . $ fila [0] . " " . $ fila [1] . " " . $ fila [2] . " " . $ fila [3] . " \ n "; echo"\ n "; / * Sección 7 * / PG_CLOSE ($ dbconn); ?>
Copiar Comenzamos nuestro código como una página HTML estática simple en sección 1
. Creamos un formulario en sección 2
que proporciona al usuario la capacidad de registrar datos en la aplicación. Solo pediremos un nombre de usuario y una dirección de correo electrónico. En seccion 3
Incrustamos el código PHP en la página. Sección 4
Crea la conexión de la base de datos utilizando la información de conexión que configuramos en el paso de la base de datos. Si la conexión no se puede construir, la aplicación muere con un mensaje de error.
En Sección 5
Manejamos los datos que se envían para el procesamiento con el formulario que creamos sección 2
. Si se publican tanto "nombre de usuario" como "correo electrónico", verificaremos si no están vacíos, y si no lo están, los insertaremos en la base de datos utilizando nuestra conexión de base de datos.
Independientemente de la recepción de los datos publicados, consultaremos la tabla de la base de datos para los datos del usuario ya grabados en Sección 6
. Generaremos el código HTML necesario para proporcionar una tabla llena de los datos que se devuelven desde la base de datos.
En Setión 7
Cerramos nuestra conexión de base de datos (siempre limpie los objetos que ya no se necesitan!), y en sección 8
Dejamos el código PHP y terminamos nuestra página con etiquetas HTML simples. Y con esto, nuestra aplicación está completa, podemos comenzar a usarla.
Usando la aplicación
Señalaremos un navegador a http: // localhost/grabación.php
. La única página de nuestra aplicación de ejemplo aparecerá.
Podemos llenar los campos del formulario con datos aleatorios para probar la aplicación. Cuando el texto agregado a ambos campos, podemos enviar los datos.
Llenar los campos de formulario con datos de muestra.Después de enviar, la página muestra el mismo formulario en el que podemos grabar nuestro próximo usuario, y también el ya grabado, que se consulta desde la base de datos después de la inserción. Hemos completado nuestro objetivo de una aplicación de registro de datos de usuario.
Listado de aplicaciones ya datos registrados.También podemos verificar que los datos se almacenen correctamente en la base de datos utilizando PSQL
:
$ PSQL -D ESPEMPLEDB EXAMPLEDB =# SELECCIONAR * DESDE USERS; ID de usuario | nombre de usuario | correo electrónico | Registration_Date --------+----------+------------------------+---- ------------------------ 0 | Foobar | [email protected] | 2019-06-25 20:28:18.224375 (1 fila)
Pensamientos finales
Creamos una aplicación de ejemplo que usa conocimiento de diferentes campos, base de datos, servidor web, el Http
Protocolo en general y, por supuesto, desarrollo de PHP. Esta guía tiene la intención de mostrar lo fácil que es crear algo útil con la unión de estos campos. Espero que esta guía pueda ayudar a los principiantes a comprender algunos de los aspectos del desarrollo, y pueda demostrar que no es ciencia espacial: solo agregamos unas pocas líneas de código aquí y allá, y todo comienza a trabajar juntos.
Si bien esta aplicación de ejemplo cumple su propósito de demostración, el código y toda la solución de curso de mejoras lloran. Sólo para nombrar unos pocos…
- Nada evita que un operador de registrar el nombre de usuario exacto y/o el correo electrónico dos veces. Eso daría como resultado registros redundantes. Esto podría manejarse tanto en la base de datos (restricción única) como en el lado de la aplicación (verificar datos antes de la inserción).
- ¿De dónde provienen los datos grabados?? Lo que protege la aplicación de un mal actor? Por el momento nada, un solo script de shell sería suficiente para sobrecargarlo, solo las defensas predeterminadas del servidor web están en su lugar, pero eso no me impide publicar la trilogía de Lord of the Rings en uno de los campos 1000 veces por minuto ( solo ancho de banda). En este estado de la aplicación, es fácil llenar los discos en la base de datos con datos aleatorios: la verificación de entrada del usuario vuelve a jugar aquí, pero también autenticación y autorización.
- El diseño web falta perfectamente en este momento. Alguno
CSS
, Un poco más de texto que ayude al trabajo del operador, mensajes de error útiles ... la facilidad de uso también es un punto de vista importante. - Naturalmente, grabar el nombre de usuario de un usuario y el correo electrónico asociado es solo un ejemplo, podríamos grabar el primer y apellido, el número de teléfono tal vez, más de un correo electrónico por usuario ... cualquier otra cosa que sea útil para almacenar.
La lista podría seguir y seguir. Depende de usted, el lector, para mejorar su propia aplicación. Si esta guía lo ayudó a avanzar en el camino del desarrollo, ya sea como un pasatiempo o con el objetivo de ser un profesional, entonces sirvió bien su propósito.
Tutoriales de Linux relacionados:
- Cosas para instalar en Ubuntu 20.04
- Bucles anidados en guiones Bash
- Cómo crear una pila de lámparas basada en Docker usando Docker en ..
- Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
- Mint 20: Mejor que Ubuntu y Microsoft Windows?
- Instalación de ampache Raspberry Pi
- Linux Apache no ejecuta archivos PHP: solución
- Una introducción a la automatización, herramientas y técnicas de Linux
- Instalación de WordPress OpenLitespeed
- Cómo instalar PHP en Ubuntu Linux