Introducción a PHP y MySQL | Dave Hollingworth | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Introducción a PHP y MySQL

teacher avatar Dave Hollingworth, IT Trainer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      2:12

    • 2.

      Configura tu entorno de desarrollo: instala el software recomendado

      1:24

    • 3.

      Crea un archivo HTML y míralo en el navegador

      2:17

    • 4.

      Añade un formulario con una entrada de texto simple y una etiqueta associada

      3:10

    • 5.

      Añade diferentes tipos de controles para introducir texto

      2:49

    • 6.

      Añade una hoja de estilos CSS para agregar fácilmente formato al formulario

      1:30

    • 7.

      Agrega un control para seleccionar un valor de una lista desplegable

      1:35

    • 8.

      Añade controles para seleccionar un valor de una gama de opciones

      3:25

    • 9.

      Añade un control para que elijas entre dos opciones mutuamente excluyentes

      1:06

    • 10.

      Añade un Button y atributos para enviar los datos del formulario al servidor

      2:28

    • 11.

      Agrega un archivo para procesar los datos del formulario enviados y cambiar la forma en que se envía

      2:50

    • 12.

      Cambia los valores enviados desde las entradas Selección, Radio y casilla de verificación

      3:10

    • 13.

      Evita errores si un valor no forma parte de los datos del formulario

      2:17

    • 14.

      Aplica un filtro a los valores de los formularios: valida el tipo de datos y el rango

      3:32

    • 15.

      Filtra la entrada de la casilla de verificación y, opcionalmente, filtrar los valores en una matriz

      3:45

    • 16.

      Valida los datos del formulario y genera un mensaje de validación si no es válido

      4:58

    • 17.

      Validación del formulario con validación del lado del cliente en el navegador

      3:22

    • 18.

      Crea una base de datos para almacenar los datos del formulario

      1:48

    • 19.

      Crea una tabla en la base de datos para almacenar registros de entradas

      1:28

    • 20.

      Conéctate a la base de datos desde PHP

      3:21

    • 21.

      Inserta un nuevo registro en la base de datos desde PHP

      4:36

    • 22.

      Escapa manualmente de los valores de cadena para evitar un ataque de inyección SQL

      3:47

    • 23.

      Usa una declaración preparada para insertar un nuevo registro

      4:23

    • 24.

      Usa el patrón Post-Redirect-Get para evitar envíos de formularios duplicados

      3:53

    • 25.

      Tu proyecto de clase: crea un formulario y guarda los datos del formulario en una base de datos

      1:22

    • 26.

      CONCLUSIÓN

      1:02

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

243

Estudiantes

--

Proyecto

Acerca de esta clase

Una habilidad clave para cualquier desarrollador web es obtener datos de un formulario en un navegador web en una base de datos en el servidor. En esta clase, aprenderás a crear un formulario en HTML, a validar los datos en PHP y a guardarlos en una base de datos MySQL.

En resumen, lecciones específicas, aprenderás lo siguiente:

  • Cómo crear un formulario en HTML
  • Diferentes tipos de controles de entrada para diferentes tipos de datos
  • Cómo validar los datos de los formularios en PHP
  • Diferentes técnicas para guardar los datos en una base de datos MySQL
  • Cómo hacer todo esto de forma segura y segura.

Esta clase es para principiantes y para el desarrollo web que necesitan aprender una de las habilidades fundamentales al crear un sitio web: obtener datos de un visitante de tu sitio web en una base de datos en el servidor.

En el proyecto de clase, crearás tu propio formulario en HTML, procesarás los datos de ese formulario en PHP y lo guardarás en una base de datos MySQL.

Se recomienda tener conocimientos básicos de HTML, PHP y SQL, pero todo el código que se muestra en los videos se explica en su totalidad, junto con enlaces a la documentación relevante cuando es necesario.

Además, todo el código fuente que se muestra en los videos está disponible para descargar. Además, si necesitas ayuda de mí directamente, puedes hacer una pregunta en la sección de discusión.

Conoce a tu profesor(a)

Teacher Profile Image

Dave Hollingworth

IT Trainer

Profesor(a)

Hi, I'm Dave Hollingworth. I'm an IT trainer and web application developer. I've been writing code and teaching IT for over twenty years.

I've developed enterprise-level applications on platforms ranging from mainframes to mobiles: from my first web application, a quotes system created for a major insurance company back in 1999 - the first of its type in the sector - to interactive learning management systems for online language learning.

I've taught courses ranging from basic use of email to advanced web application development, both online and in-person.

I'm passionate about technology, and love teaching it! I believe it's possible to explain even the most complex subjects in a simple, straightforward way that doesn't confuse the student.

I look forward to ... Ver perfil completo

Habilidades relacionadas

Desarrollo Lenguajes de programación PHP
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • Sí
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción: Un sitio web se puede utilizar para simplemente mostrar cierta información a un visitante, como una revista, un nuevo sitio, o Wikipedia. No obstante, si quieres obtener algunos datos del visitante, como un comentario, un término de búsqueda, o asignación por granja, por ejemplo, entonces necesitas una granja. Farm permite al usuario del sitio enviarle algunos datos. Una vez que tenga estos datos en el servidor web, por lo menos, lo más probable es que guarde estos datos en una base de datos. Saber cómo llegan los datos del usuario a su base de datos es una habilidad crítica para nuestro desarrollador web. Al final de esta clase, sabrás crear una granja en HTML. Cómo procesar los datos de esa granja en el servidor web en PHP, asegurándose de que sean válidos. Y cómo guardar de forma segura estos datos en una base de datos MySQL. Esto utilizando las mejores prácticas y estándares de la industria para el código. Hola, soy Dave acarreando valor. Llevo escribiendo aplicaciones web desde 1998 y enseñando desarrollo web online desde 2012. Esta clase es para principiantes a desarrollo web que necesita aprender una de las habilidades fundamentales a la hora de crear un sitio web. Conseguir datos de un visitante a su sitio web en una base de datos en el servidor. En el proyecto de clase, estarás creando tu propia granja en HTML, procesando los datos de esa granja en PHP y guardarlos en una base de datos MySQL. los conocimientos básicos de HTML, recomiendanlos conocimientos básicos de HTML, PHP y SQL. Pero sí explico todo el código que uso junto con enlaces a documentación relevante donde sea necesario, donde se pueden obtener más detalles. Además, todo el código fuente que se muestra en los videos está disponible para descargar. Además, si necesitas ayuda de mí directamente, puedes hacer una pregunta en la sección de discusión. Sin más preámbulos. Empecemos. 2. Configurar tu entorno de desarrollo: instala un software recomendado: Para sacar el máximo provecho de la clase, te recomiendo que sigas escribiendo y ejecutando el código que se muestra en los videos tú mismo. Para ello, necesitarás un servidor web, PHP, y un servidor de base de datos instalado. Estaré usando el servidor web Apache con PHP y el servidor de base de datos MariaDB. Mariadb es totalmente compatible con MySQL. Todos estos son completamente gratuitos para descargar y usar. Puedes instalarlos por separado. Pero la forma más fácil es instalar un paquete que incluya un servidor web, PHP, un servidor de base de datos, y opcionalmente PHP, mi administrador para administrar la base de datos. Para Windows y Linux, recomiendo x AMP para instalar. Simplemente seleccione la descarga relevante para su sistema operativo aquí en la página web oficial, y siga las instrucciones de instalación. Para Mac, recomiendo MAMP. De igual manera, sólo tiene que descargar el instalador MAMP desde la página oficial aquí y seguir las instrucciones. Anota que MAMP es la versión gratuita y MAMP Pro es la versión de pago. embargo, la versión gratuita MAMP es más que suficiente, para los requisitos de esta clase. 3. Crea un archivo HTML y View en el Browser: Empecemos creando un archivo HTML que eventualmente contendrá una granja. Esta es la carpeta raíz de mi servidor web. Si estás usando uno de los paquetes que recomendé anteriormente, como XML MAMP, aquí se muestra la carpeta predeterminada para Windows, Mac o Linux. Aunque puedes cambiar esto a otra carpeta o usar una subcarpeta si lo prefieres. Vamos a crear un nuevo archivo aquí llamado Farm dot HTML. Esto va a contener el HTML para la granja. A modo de ejemplo, vamos a crear una granja que podría tener para enviar un ticket de soporte. Sin embargo, antes de crear la granja, solo agreguemos el código HTML básico que necesitamos para crear un documento HTML. Empezamos con el tipo doc, que le dice al navegador que el código que sigue será HTML válido. Necesitamos esto porque afecta cómo interpretará el navegador este código. Después agregaremos una etiqueta HTML, que es la etiqueta container para el resto del HTML. Dentro de aquí, agregaremos una etiqueta de cabeza y dentro aquí una etiqueta de título. Este título es lo que se muestra en la barra de título de la pestaña en el navegador. Pondremos soporte como título de la página. También dentro de la etiqueta head, agregaremos una meta tag especificando los conjuntos de caracteres de este documento como UTF-8. Esto nos permitirá utilizar caracteres de alfabetos no ingleses sin problemas. Después de la etiqueta de cabeza, agregaremos una etiqueta de cuerpo. El HTML dentro aquí es lo que se renderice para que se muestre en la ventana principal del navegador. Por ahora, solo agreguemos un nivel uno elementos de encabezado que contengan el texto. Presentar un boleto. Echemos un vistazo a esto en el navegador. Si especifico ese nombre de archivo en la dirección del host local, vemos el contenido de ese archivo. El título en la pestaña proviene de los elementos del título. Y en el cuerpo del documento, sólo tenemos el elemento encabezado. 4. Añade un formulario con una entrada de texto simple y la etiqueta asociada: A continuación, agreguemos un solo control de entrada a la página. Primero dentro del cuerpo, vamos a añadir un elemento de granja. Entonces dentro de esto se agregará un elementos de entrada, ambos sin ningún atributo. Por ahora. El navegador. Esto muestra una entrada de texto simple en la que podemos introducir algún texto. Este simple tipo de entrada de texto es el predeterminado. Si no especificamos un tipo. Si agregamos el atributo type al elemento input y especificamos el texto como su valor, entonces vemos lo mismo en el navegador. Al usar entradas de texto como esta, prefiero especificar el tipo aunque sea el predeterminado, ya que hay muchos tipos diferentes de entradas disponibles, que veremos en breve. A continuación, agreguemos una etiqueta a esta entrada para que el usuario sepa qué escribir en ella. Empecemos con solo escribir algún texto antes del elemento de entrada. En el navegador. Vemos este texto antes de las entradas, y es sólo texto. Esto está bien, pero podemos mejorar esto. Rodeemos este texto con un elemento de etiqueta. Esto no afectará cómo se ven los textos etiquetados, pero sí afecta cómo funciona. Asociamos esta etiqueta con una entrada agregando primero un atributo ID a la entrada. Se lo daré al valor del nombre. Tenga en cuenta que el valor de este atributo tiene que ser único dentro del documento HTML. Después añadimos un cuatro atributos a la etiqueta, especificando el valor como el ID de la entrada. Queremos asociar esto etiquetado con el navegador. Podemos ver que nada ha cambiado visualmente. Ahora sin embargo, si hago clic en el texto de la etiqueta, el enfoque de entrada se coloca en la entrada de texto y podemos empezar a escribir. Además de esto, asociar una etiqueta a una entrada como esta, hace que la granja sea más accesible para aquellos visitantes que están utilizando tecnologías de asistencia como lectores de pantalla, verá más adelante otra forma que al poder hacer clic en Etiquetas como esta para activar una entrada hace que la granja sea más fácil de usar. Por lo que cada entrada de la finca necesita sus propios elementos de etiqueta asociados para que la finca sea más fácil de usar. Como un aparte, tenga en cuenta que este elemento de entrada tiene dos atributos. Como saben, puede especificar atributos en cualquier otro. No obstante, como el atributo type afecta el tipo de entrada que se muestra, prefiero poner siempre el atributo type primero para los elementos de entrada. A medida que lo hace más claro, si tienes una finca con varios insumos. 5. Añade diferentes tipos de controles para entrar al texto: En lo que va de nuestra granja, tenemos una sola entrada de texto. A continuación, agreguemos algunas entradas más para agregar texto. Hay varios tipos de entrada disponibles enumerados aquí. Estaremos mirando a varios de los que no sean de texto más adelante. Ya hemos utilizado una entrada de texto, pero hay algunas otras que se ven exactamente igual. Por ejemplo, tail, número y correo electrónico. Estos tienen el mismo aspecto que una entrada de texto regular, pero tienen una funcionalidad diferente. Agreguemos otra entrada a la finca. Esta vez una entrada de tipo de correo electrónico para que el usuario ingrese su dirección de correo electrónico. Con la entrada de nombre se agregará un elemento de etiqueta asociado, vinculándolo a la entrada haciendo coincidir el atributo for con el atributo input ID. El navegador. Ahí está el control de entrada. Y si hacemos clic en la etiqueta, el foco de entrada se coloca en el control. El input se ve igual que un texto regular entradas y se comporta de la misma manera. La diferencia es cuando se ve la granja en un dispositivo móvil con un teclado en pantalla, una entrada de texto normal usa el teclado predeterminado. No obstante, el teclado para entradas de un correo electrónico será ligeramente diferente. Por ejemplo, el signo at está disponible y también en algunos dispositivos, una clave que automáticamente adds.com a lo que esté escribiendo. Es similar para un número o entradas telefónicas. El teclado cambia para facilitar la inserción del tipo de datos que se espera en esa entrada en particular. Otra ventaja de estos textos como tipos de entrada, es que podemos validar el contenido de las entradas en el navegador antes de que se envíe la granja. Vamos a ver esto más adelante. Una cosa que podrías haber notado es que estos tipos de entrada de textos solo permiten una línea de texto. Para agregar una entrada de texto que permita más de una línea de texto, utilizamos un elemento de área de texto. Agreguemos uno a la finca que usará el usuario para agregar una descripción de sus boletos. Al igual que con las otras entradas, también agregaremos una etiqueta asociada. Tenga en cuenta que este no es un elemento de entrada con un tipo de área de texto. Es un área de texto elementos. Y a diferencia de un elemento de entrada, hay que tener las etiquetas de apertura y cierre. En el navegador. El área de texto se muestra con más de una línea. Y puedes presionar enter al escribir en este control para agregar una nueva línea. 6. Añade una hoja de estilo CSS para añadir formatos a la forma: Antes de mirar más tipos de insumos, vamos a añadir un poco de estilo a esta finca que sea más fácil ver lo que está pasando. El estilo con CSS está más allá del alcance de esta clase. Pero dos formas rápidas de agregar estilos al desarrollar una granja es usar un marco CSS existente. Algunos de estos como Bootstrap, por ejemplo, requieren que añadas elementos de contenedor y clases a sus elementos HTML para que se apliquen los estilos. No obstante, una forma aún más rápida de estilo de granja, para que puedas concentrarte en la funcionalidad es usar algún CSS sin clase. Hay muchos de estos disponibles, y puedes usarlos simplemente incluyendo el archivo CSS en el HTML. En esta clase, vamos a usar agua CSS. Puedes descargar el CSS y servirlo localmente. Incluiré la hoja de estilo directamente desde un CDN, que es lo que haremos. Copiaremos esta línea de código y la pegaremos dentro del elemento head de nuestro HTML. Ahora en el navegador, la granja tiene algún estilo agradable sin que tengamos que haber agregado ninguna clase, incluyendo resaltar cuando el control de entrada tiene el foco. 7. Añade un control para seleccionar un valor de una lista desplegable: Con los controles de texto, el usuario puede introducir cualquier valor que desee. Agreguemos un control donde el usuario pueda escoger de una lista predefinida de valores. Para una lista de valores, utilizamos un elemento select. Cada opción dentro de la lista es un elemento de opción. Agreguemos tres opciones para la prioridad del boleto, baja, normal y alta. Antes de ver esto, vamos a agregar una etiqueta asociada. El navegador. El elemento select se muestra como una lista desplegable donde se puede elegir una de las opciones suministradas. Si vuelvo a cargar la página, mantenga pulsada la tecla Mayús izquierda en el teclado para restablecer la granja. Tenga en cuenta que cuando la página se carga por primera vez, la primera opción se selecciona por defecto. Puede cambiar este valor predeterminado agregando el atributo seleccionado a la opción relevante. Por ejemplo, agreguémoslo a la opción normal. Ahora en el navegador. La segunda opción está seleccionada por defecto. Entonces si esto no se cambia, este es el valor que se enviará cuando se envíe el formulario. Puedes tener tantas opciones en la lista de selección como quieras, ya que la lista aparecerá con barras de desplazamiento si es demasiado larga para la pantalla. 8. Añadir controles para seleccionar un valor de una gama de opciones: Con el control de selección, la lista de opciones solo se muestra en una lista desplegable al hacer clic en el control. Esto le permite tener una gran cantidad de artículos en esta lista si es necesario. Por ejemplo, una lista de países. Si tienes un pequeño número de opciones y quieres que siempre sean visibles en la finca. Entonces una alternativa a esto es usar botones de radio. El botón de radio es un elemento de entrada con el tipo radio. Para agregar una etiqueta a esto. En lugar de agregar esto como un elemento separado, vamos a encerrar la entrada dentro de la etiqueta. Utilizará este control para especificar la categoría del boleto. Así que agreguemos una etiqueta con el texto de la falla. Esta es una forma alternativa de asociar una etiqueta a un control. La ventaja de esto es que no necesitas un atributo ID en el control y un cuatro atributos en la etiqueta. Agreguemos otras entradas de radio justo después de ésta con una etiqueta de sugerencia. El navegador. Ahí están los dos botones de radio. Y para seleccionarlos, puede hacer clic en el propio botón de radio o en el texto. Tenga en cuenta cómo una vez que están seleccionados, sin embargo, no puede desseleccionarlos. Para que estos se conviertan en un grupo de controles donde solo se puede seleccionar uno. Agregamos el atributo name a ambos elementos de entrada, especificando el mismo valor para cada uno. Ahora en el navegador, cuando seleccionamos una opción, las otras están en seleccionada. En un grupo de botones de radio como este, sólo se puede seleccionar una opción a la vez. Si vuelvo a cargar la página, tenga en cuenta que no hay opción seleccionada por defecto. Para seleccionar una opción por defecto, agregamos el atributo checked a uno de los elementos de entrada. Ahora, cuando la granja se muestra por primera vez, esa opción ya está seleccionada. Para agregar una etiqueta a este grupo de controles. No podemos usar elementos de etiqueta ya que estamos usando uno para cada opción. En cambio, los encerramos en un campo conjunto elementos. Después agrega un elemento de leyenda justo después la etiqueta de conjunto de campos de apertura que contiene el texto que queremos mostrar como el epígrafe para este grupo de controles. El navegador. Esto rodea los controles con una línea con el texto del elemento de leyenda que se muestra en la parte superior. Por último, por defecto, las entradas de radio se muestran en línea, en este caso se muestran una al lado de la otra horizontalmente. Para mostrar cada uno en una línea separada. Una forma sencilla de hacerlo es agregar un elemento de salto de línea entre ellos. Ahora en el navegador, las opciones se muestran verticalmente. Con una lista selecta. Puedes tener tantas opciones como quieras, pero los botones de radio son los más adecuados para un número limitado de opciones como siempre se ven en la granja. 9. Añade un control para elegir entre dos opciones de exclusión mutua: A continuación, agreguemos un control de casillas de verificación que nos permita seleccionar entre dos opciones mutuamente excluyentes. En otras palabras, sí o no, encendido o apagado y así sucesivamente. La casilla de verificación es un elemento de entrada con un tipo de casilla de verificación. Para agregar una etiqueta a esto, hagámoslo de la misma manera que lo hicimos con los botones de radio y cerrando las entradas y el texto etiquetado dentro de un elemento de etiqueta. Agreguemos una casilla de verificación que el usuario tiene que seleccionar para aceptar algunos términos y condiciones. El navegador. Ahí está la casilla de verificación. Podemos comprobarlo y desmarcarlo haciendo clic en la propia casilla, están en el texto de la etiqueta. Puedes tener tantas casillas de verificación en una granja como quieras. Y puedes colocarlos dentro de un set de campo como lo hicimos con los controles de radio. Si es necesario. pueden usar múltiples casillas de verificación para un valor donde se puede seleccionar más de una opción. 10. Añade un botón y atributos para enviar los datos de la forma al servidor: Ahora podemos introducir algunos datos en la finca. Necesitamos una forma de enviar estos datos al servidor web. En primer lugar, agreguemos un botón al final de la finca. Agregará un elemento de botón con el contenido entre las etiquetas de apertura y cierre siendo lo que se muestra en el botón. Simplemente dejaré algún texto básico, pero puedes poner otras etiquetas aquí si quieres. También pondré un elemento de salto de línea antes de esto para que el botón esté en una nueva línea. En el navegador. Ahí está el botón. Si lo presiono, referido como presentar la finca, se vuelve a exhibir la finca. Lo que ha sucedido es que la forma se ha presentado a sí misma. Es decir, se ha hecho una solicitud a la misma URL la finca con los datos de la finca adjunta a la solicitud. Lo que ha cambiado es la URL en la barra de direcciones del navegador. Se ha agregado una cadena de consulta con un par de valor clave de categoría igual a. Si nos fijamos en las diversas entradas, tenga en cuenta que las únicas con atributos de nombre son los botones de radio de categoría. Solo las entradas que tengan un atributo name tendrán su sentido de valor cuando se envíe el formulario. Para demostrar esto, vamos a agregar un nombre atributos a la primera entrada con un valor de nombre. Si recargamos la finca y luego la sometemos de nuevo. Ahora la cadena de consulta contiene un valor adicional para el nombre. Si introduzco un valor en la entrada de nombre y lo envío, este valor se incluye en la cadena de consulta. Hagamos lo mismo por los demás insumos. Agregar atributos de nombre a la casilla de verificación de correo electrónico, descripción, prioridad y términos y condiciones. Ahora si enviamos la granja, vemos los valores en la cadena de consulta para todos los campos. Si entro un valor para uno de estos, entonces este valor es el que se envía. 11. Añade un archivo para procesar los datos de formularios presentados y cambia la manera: Actualmente cuando enviamos la granja, se realiza una solicitud a la misma página y los datos de la granja se envían en la cadena de consulta URL. Este es el valor predeterminado y se puede utilizar si agrega algún código antes del HTML para procesar los datos. No obstante, tratará los datos de la granja en un archivo diferente. En primer lugar, agreguemos un nuevo archivo llamado process farm dot PHP. De vuelta en la granja. Para que esta granja envíe datos a este nuevo archivo, agregamos un atributo de acción a la etiqueta de formulario que contiene la URL a la ubicación que queremos. Al estar este archivo en la misma carpeta, sólo podemos poner el nombre del archivo, el nuevo archivo. Agreguemos la etiqueta de apertura de PHP. Los datos de la cadena de consulta están disponibles en el cat super global. Vamos a imprimir eso. Ahora si entro algunos datos en el formulario y lo envío, se solicita el script PHP de la granja de procesos con los datos todavía en la cadena de consulta. El cuerpo de la respuesta, vemos el contenido de la matriz GET. Cada clave de matriz proviene del atributo name de cada entrada en el HTML, y su valor es lo que se ingresó en la granja. Tener los datos en la cadena de consulta como esta está bien si el formulario es un motor de búsqueda , por ejemplo, ya que es el tipo de URL que puedes compartir nuestro marcador. Si quieres hacer algo con estos datos, como guardarlo en una base de datos, entonces no lo queremos en la URL. Esto se debe a que hay un límite a la cantidad de datos que se pueden pasar en la URL. Además es un riesgo para la seguridad. Podría haber datos sensibles aquí, y estas URL se guardan en el historial de URL del navegador. Los datos de la granja podrían ser fácilmente vistos por cualquier persona con acceso al navegador. En cambio, enviaremos estos datos utilizando el método post. Para ello, agregamos un atributo de método a la etiqueta de granja con un valor de post. Podrías especificar llegar aquí, que es el valor predeterminado que hemos estado usando hasta ahora. Ahora cuando los datos se envíen al script, estará disponible en el post super global. Vamos a imprimir eso en su lugar. Ahora cuando ingresamos algunos datos y los enviamos, seguimos viendo los mismos datos en el organismo de respuesta. Pero ahora los valores no se muestran en la cadena de consulta. 12. Cambia los valores enviados desde las entradas seleccionadas, la radio y la caja de control: Echemos un vistazo a los valores que se están enviando desde la finca. La prioridad es un control de selección que se muestra como una lista desplegable. El valor enviado cuando se envía la granja es el texto de la opción seleccionada. Puedes hacer esto si quieres. Pero es común darle a cada opción un valor diferente usando el atributo value. Asignemos a cada opción un valor numérico de uno a tres. Ahora cuando enviamos el formulario, el valor que se envía es cualquiera que contenga el atributo value para la opción seleccionada. Esto es útil si quieres almacenar un valor diferentea un valor diferente solo una etiqueta de texto para nuestros campos como este. También es útil, por ejemplo, si estás mostrando tu contenido en más de un idioma. Entonces los textos etiquetados podrían ser diferentes, pero los valores subyacentes son los mismos. Echemos un vistazo también a los controles de radio de categoría. No importa cuál elija. El valor enviado es siempre la cadena encendida. Esto se debe a que este es el valor predeterminado para las entradas de un tipo de radio, para que los botones de opción envíen un valor diferente dependiendo de cuál se seleccione. Necesitamos darle a cada uno un valor usando el atributo value. Estos valores pueden ser lo que quieras. No necesitan igualar el texto como acabamos de hacer arriba con el control select. Sin embargo, en lugar de números , esta vez, solo usaré algunas cadenas simples. Ahora cuando elegimos el botón de radio, este es el valor que se envía. A continuación, veamos la casilla de verificación. Si no lo compruebo, no se envía ningún valor para este control. Si lo compruebo, entonces el valor es la cadena encendida. Puede agregar un valor a esto la misma manera que con otras entradas, agregando un valor atributos. Agreguemos un valor de uno. Ahora si marco la casilla de verificación y envío la granja, este es el valor que se envía. Si solo quieres saber si la casilla está seleccionada o no, entonces el valor predeterminado es suficiente. Para nuestros fines, lo eliminaremos. Si tienes varias casillas de verificación sin embargo, y quieres saber cuáles están revisadas, entonces puedes darle a cada una un valor separado. 13. Evita errores si un valor no es parte de los datos de el formulario: Ahora tenemos los valores que queremos viniendo de la finca. Podemos conseguir los valores específicos en los scripts PHP listos para eventualmente insertarlos en una base de datos. Como hemos visto, los valores de la granja estarán en la matriz de post. En lugar de imprimir toda la matriz, asignemos el valor de la entrada de nombre a una variable, luego imprimirlo. Si entro un valor para el nombre y lo envío , ese es el valor. Veamos qué pasa si cambio este índice a un valor que no forma parte de la finca. Por ejemplo, apellido. Ahora si presento la granja, obtenemos un indefinido un error de Reiki. A pesar de que no vamos a obtener este error. Si una entrada con este nombre forma parte de la granja, aún tenemos que comprobar si estos valores existen en la post-encuesta o no antes de intentar usarlos. Esto se debe a que la granja podría ser fácilmente eludida. Veremos un ejemplo de esto más adelante. Una forma de verificar esto sería usar una función como existe un Reiki junto con el operador ternario para establecer la variable name para saber si el valor no está en la matriz. Otra forma más corta sería usar el operador de coalesce nulo, que hace lo mismo. Otra alternativa es usar la función de entrada de filtro. Esta función obtendrá un valor de la entrada especificada y simplemente devolverá null si no está presente. Llamemos a esta función especificando que queremos obtener el valor de las entradas de post, el nombre del valor que queremos obtener. Vamos a probar esto primero con un nombre que no forma parte del apellido de la granja. Cuando sometemos la finca. Ahora obtenemos null en lugar de un error. Si cambiamos esto por nombre, que forma parte de la finca, obtenemos el valor de los insumos. 14. Aplica un filtro a los valores de formulario, valida el tipo y el rango de datos: Además de devolver el valor de la entrada y simplemente devolver null si no está presente. La función de entrada de filtro nos permite aplicar un filtro al valor. Esto significa que lejos la entrada de correo electrónico, por ejemplo, podemos aplicar un filtro para validar que el valor es una dirección de correo electrónico válida. Volvamos a llamar a la función de entrada de filtro, esta vez para la entrada de correo electrónico de la granja. El tercer argumento especificará el filtro de correo electrónico validar. En lugar de imprimir la variable name, imprimiremos la variable de correo electrónico en su lugar. Si envío el formulario con una dirección de correo electrónico vacía, obtenemos falso. Si presento una dirección de correo electrónico válida, entonces obtenemos ese valor como una cadena. Si entro una dirección de correo electrónico no válida, entonces el navegador valida el campo y solicita una dirección de correo electrónico válida sin que se envíe el formulario. En breve veremos la validación del lado del cliente en el navegador. Pero por ahora, vamos a desactivar esto agregando el atributo novalidate al elemento form en el HTML. Ahora si entro una dirección de correo electrónico no válida y envío la granja, obtenemos falso booleano. Nuevamente. Solo obtenemos la dirección de correo electrónico como una cadena si es válida. De lo contrario nos hacemos falsos. Algunos filtros tienen opciones para realizar validación adicional. Por ejemplo, el filtro de validación de enteros. Además de validar que un valor es un entero válido, podemos especificar un rango de valores. Un valor que es un entero válido, pero fuera de este rango devolverá false. El valor para el campo prioritario en nuestra granja es un número entero 12 o tres. Agreguemos otra llamada a la función de entrada de filtro para el campo de prioridad, especificando el filtro de validación de enteros. En el siguiente argumento, especificamos las opciones para este filtro especificarán un mínimo de uno y un máximo de tres. Entonces en lugar de imprimir la variable de correo electrónico, imprimirá la variable de prioridad que acabamos de agregar. Cuando presento la granja con el valor predeterminado para nuestra prioridad, obtenemos un valor entero de dos. Para otras prioridades, obtenemos el valor entero equivalente. Tenga en cuenta que todos los valores provenientes de la granja serán cadenas, pero esta función convertirá esos dos enteros si son válidos. Pon a prueba la validación del rango. Cambiemos temporalmente el máximo a dos. Ahora si presentamos la finca con un valor prioritario que corresponde a tres, obtenemos falso booleano. El valor seguirá siendo un entero válido, pero no está dentro del rango que especificamos. Volvamos a cambiar esto a tres, por lo que acepta todos los valores de la lista. 15. Filtro la entrada de la caja y filtra de forma de los valores en un arreglo: A continuación, veamos el valor de la casilla de verificación. Como vimos antes. La casilla de verificación no está activada. No se envía ningún valor. Si está marcado, el valor predeterminado es la cadena activada. Volvamos a llamar a la función de entrada de filtro , obteniendo este valor. Como todo lo que queremos saber para esto es si se comprueban o no. En otras palabras, no nos interesa el valor. Para esto. Usaremos el filtro de validación booleana. Esto devolverá true si se marca la casilla de verificación. Entonces, en lugar de imprimir la variable de prioridad, imprimirá los términos uno en su lugar. Si enviamos el formulario sin seleccionar la casilla de verificación, obtenemos no. Si marcamos la casilla de verificación, nos pondremos booleanos true. Ahora estamos obteniendo valores filtrados para la mayoría de los insumos en la granja. Al único le falta la descripción y categoría. Agreguemos llamadas a la función de entrada de filtro para la descripción. Y más lejos de categoría, no especificando ningún filtro ya que estas son cadenas, al igual que el nombre. Ahora tenemos una variable para cada campo de granja que contiene los datos que se encontraban en ese campo cuando la granja fue enviada lista para su posterior procesamiento. Esta es una forma de hacerlo con múltiples llamadas a la función de entrada de filtro. Hay una forma alternativa de hacerlo usando la función de matriz de entrada de filtro. Esto le permite filtrar varias entradas de granja a la vez y obtener una matriz de los datos filtrados en lugar de variables separadas. Llamemos al filtro en el retrato wavefunction filtrando los post-datos de la granja. Para el segundo argumento, pasamos en una matriz con un elemento para cada campo de granja que queremos filtrar. Si no estamos especificando un tipo de filtro, podemos establecer el valor en null a la bandera de filtro predeterminada. Para las entradas donde estamos especificando un filtro, establecemos el valor de los elementos de la matriz a la constante de filtro. Y si el filtro tiene opciones como el campo de prioridad, pasamos en una matriz configurando los valores como este. Esto devuelve una matriz de datos para los valores especificados de la granja. Si imprimimos eso en lugar de la variable términos. Cuando enviamos la granja, obtenemos una matriz que contiene los valores filtrados de la granja. Los filtros se han aplicado como con las variables individuales. Pero ahora tenemos una variable de matriz que contiene todos los valores en lugar de una variable para cada valor de empresa. Depende de ti qué método usas al filtrar datos de entrada. Si prefiere variables individuales o una matriz. 16. Validar los datos del formulario y salir un mensaje de valorización si no se sale a: Ahora tenemos los datos de la finca, podemos validarla. Voy a trabajar con una matriz de datos, pero puedes trabajar con variables individuales si lo prefieres. Voy a comentar estas variables por ahí en el código fuente descargable. Queremos validar estos valores antes de intentar guardarlos en la base de datos para que los datos en la base de datos sean siempre válidos. Empecemos validando el nombre. Si se ha introducido un valor en el campo nombre de la granja, entonces se considera válido. Si el campo se dejó vacío, entonces esta será una cadena vacía. Si el valor no es parte de los datos de la granja que la función de filtro anterior devolverá nulo o una cadena vacía o null son valores no válidos. Podríamos comparar el valor de esto con una cadena vacía y null usando un operador de comparación. Pero la función vacía volverá true. Si es cualquiera de estos. Si el valor está vacío, entonces no es válido. Para mantenerlo sencillo. Si no es válido, saldrá del script usando la impresión de tinte hacia fuera al mensaje adecuado. Esta validación es poco probable que se vea de todos modos, si tenemos validación del lado del cliente en el navegador, lo que agregará en breve. Vamos a darle una prueba a eso. Si presento una granja sin poner nada en el campo de nombre, entonces obtenemos el mensaje diciendo que se requiere el nombre. Si entro un valor, entonces obtenemos la matriz de valores impresa como antes. Hagamos lo mismo para el campo de correo electrónico. Si esto no está presente, será no. Si no es un correo electrónico válido, será falso. Y de lo contrario será el valor de cadena. La función vacía también devolverá true. Si el valor es false, solo podemos usar eso una y otra vez saldrá del script con un mensaje adecuado. Ahora si presento la granja con un nombre válido pero una dirección de correo electrónico vacía, obtenemos el mensaje de validación de correo electrónico. Si entro un valor en el campo de correo electrónico, pero no es un correo electrónico válido. Entonces obtenemos el mismo mensaje. Si entro un correo electrónico válido, entonces obtenemos los datos. la misma manera podemos validar la descripción, la prioridad, y la categoría. El rubro. Además de validar que está presente, también podemos validar su valor. La categoría será una cadena que proviene de los valores de los botones de radio, ya sea falla o sugerencia. acaso se omite la finca. Tenemos que comprobar que el valor es una de las cadenas. La forma más sencilla de hacerlo es usar la función de matriz interna, comprobando para ver si el valor de la granja es uno de estos valores. Si no lo es, saldremos del guión con un mensaje. Para probar esto, eliminemos temporalmente el elemento de falla de la matriz. Ahora si enviamos la granja con la categoría predeterminada seleccionada, obtenemos la categoría es mensaje inválido. Si seleccionamos la otra categoría, entonces pasa la validación y vemos los datos. Ahora hemos probado que eso funciona. Podemos volver a sumar la categoría de fallas. Por último, podemos comprobar que la casilla de verificación ha sido verificada. El filtro establecerá el valor de términos booleano true si se está revisando. De lo contrario será no. Comprobemos con esto. Y si no es cierto, se detendrá el script y emite un mensaje. Si presento la granja sin marcar la casilla de verificación, obtenemos el mensaje. Si lo compruebo, pasa la validación y podemos ver los datos válidos impresos. 17. Validar el formulario con la valoración lateral del cliente en el navegador: Actualmente estamos validando los datos en el servidor, imprimiendo los mensajes de validación según sea necesario. Podemos evitar una solicitud al servidor sin embargo, validando primero la granja en el navegador. Esto también es más fácil de usar ya que le da al usuario la oportunidad de corregir la finca en los lugares donde los datos son inválidos antes de que se envíen. Anteriormente. En la finca. Agregamos el atributo novalidate a la granja para deshabilitar temporalmente la validación. Podemos quitar esto ahora. Entonces agreguemos el atributo requerido a los campos obligatorios. Nombre, correo electrónico, descripción y términos. Como la lista de selección más prioridad. Y los botones de opción para la categoría tienen valores predeterminados. No necesitamos agregar el atributo requerido a estos. El navegador. Ahora si tratamos de enviar una granja vacía, llegamos al mensaje de validación para cada campo requerido que esté vacío. Qué pequeño es el mensaje de validación al lado de cada campo. Y se pone el foco en el campo que hay que cambiar. En cuanto a la dirección de correo electrónico ya que este es un tipo de entrada de correo electrónico. También llegamos al mensaje de validación si el valor no es una dirección de correo electrónico válida. Para la casilla de verificación. Marcar esto como requerido requiere que el usuario revise esto antes de que la granja pueda ser enviada. Si lo compruebo, entonces podemos presentar la finca y vemos los datos impresos. Ahora podría estar pensando que es si estamos validando en el navegador, no necesitamos validar en el script PHP en el servidor. Agregamos validación en el navegador porque hace que la experiencia del usuario mucho más agradable y reduce el número de solicitudes que hacemos al servidor. No obstante, se puede pasar fácilmente por alto. Una forma de hacerlo, por ejemplo, es enviar una solicitud de publicación al script PHP de la granja de procesos usando curl. Curl es una herramienta de línea de comandos para realizar solicitudes HTTP. Así que utilicemos curl especificando el método de solicitud como post. Y añadiremos un par de valores foráneos que añadimos así. Enviaremos esta solicitud al proceso desde el script PHP en nuestro servidor. Obtenemos la descripción de respuesta que se requiere. Este es el mensaje de la validación del lado del servidor porque hemos enviado un valor para el nombre y el correo electrónico, pero no más descripción. Hay otras formas de granja podrían ser manipuladas mediante el uso de las Herramientas de Desarrollador en el navegador, por ejemplo. Básicamente, se recomienda la validación del lado del cliente. Pero la validación del lado del servidor es esencial aunque el usuario nunca la vea, porque los datos ya son válidos para el momento en que se envía el formulario. El código que procesa los datos de la granja siempre debe validar estos datos en el servidor. 18. Crea una base de datos para guardar los datos desde el formulario: Ahora tenemos los datos de la finca y se ha validado. Podemos insertar estos datos en una base de datos en el servidor. Estaré haciendo esto en el servidor de base de datos MariaDB que he instalado localmente, que para todos los intentes y propósitos es el mismo que el comando MySQL mostrado son válidos para cualquiera de los DBMS. Tendrás una configuración similar si instalaste el software sugerido al inicio de la clase. Aunque siéntete libre de usar cualquier base de datos relacional que te guste. Estaré haciendo esto en la línea de comando. Pero si lo prefiere, puede usar su GAVI de su elección, como PHP, mi admin, o MySQL Workbench. Empecemos conectándonos al servidor de base en la línea de comandos usando la cuenta raíz. Después crearemos una nueva base de datos, que solo llamaré soporte dB. Después crearemos un usuario solo para acceder a esta base de datos. Entonces no tenemos que hacerlo usando la cuenta raíz. El usuario tendrá privilegios completos en todas las tablas de la nueva base de datos llamada usuario de base de datos de soporte de usuario. Está en el servidor host local. Y le asignaremos una contraseña aleatoria. Es necesario hacer una nota de esta contraseña para cuando nos conectamos a la base de datos más adelante desde PHP. Para comprobar que esto funciona, podemos salir de la consola y volver a conectarnos usando el usuario y contraseña que acabamos de crear. Entonces podemos seleccionar la base de datos con US. Y eso lo selecciona sin problemas. 19. Crea una tabla en la base de datos para guardar registros de boletos: Ahora podemos añadir una tabla a la base de datos para almacenar los datos de los tickets. Vamos a crear una tabla llamada ticket con las siguientes columnas. Una columna ID que es un entero, no puede ser nula. Y lo estableceremos en incremento automático para asignar valores automáticamente. Entonces una columna de nombre, que es una, a, un varchar de 128 caracteres que no se puede conocer. A continuación, una columna para el correo electrónico, que también es un vale de 128 caracteres que no puede ser nulo. Entonces una columna de descripción, que es texto y tampoco puede ser nula. Siguiente columna, mayor prioridad, que es un entero no nulo. Y finalmente una columna llamada categoría, que es un 32 carácter var char, eso también es contar ser no. Antes de cerrar los paréntesis harán de la columna ID la clave principal. Vamos a correr eso. Eso corrió sin errores. Echemos un vistazo a la mesa que acabamos de crear. Y ahí está. Tal y como se mencionó anteriormente. Puedes hacer esto en una GUI como PHP, mi admin, si prefieres este SQL para crear, esta tabla estará disponible en las clases código fuente descargable. 20. Conéctate a la base de datos desde PHP: Ahora tenemos la base de datos y la tabla podemos conectarnos a la base de datos desde PHP. Ya no necesitamos imprimir los datos de la finca. Podemos eliminar esta línea del script de la granja de procesos. En primer lugar, vamos a crear algunas variables para contener los detalles de conexión para el servidor de base de datos. El host es el mismo que el servidor web localhost. El nombre de la base de datos que acabamos de crear es soporte DB. Y crearemos dos variables más para el nombre de usuario y contraseña que acabamos crear para conectarnos a la base de datos. Llamamos a la función MySQL I connect, pasando en el host, nombre de usuario, contraseña, y nombre de base de datos. Estas variables tienen que estar en este orden, y es un error común hacerlas en el orden equivocado. Si lo prefiere, puede usar argumentos con nombre prefiriendo cada valor con el nombre del argumento. Si haces esto, no importa en qué orden estén. Esto devuelve un objeto que representa la conexión a la base de datos. Entonces lo asignaremos a una variable. Antes de poder usar esta conexión a base de datos, necesitamos asegurarnos de que nos conectamos, está bien. La función de número de error de conexión de MySQL devuelve un código de error de los intentos de conexión más recientes. De no haber error, este retorno 00 equivale a mil millones de falsos. Podemos consultar con esto simplemente usando esto como condición para una declaración if. Si se ha producido un error de conexión, detendremos el script como arriba e imprimiremos un mensaje. Podemos obtener una descripción del error llamando al MySQL conectar nuestra función. Si no se ha producido un error. Por ahora, imprimimos un mensaje diciendo que La conexión fue exitosa. Vamos a darle una oportunidad a eso. Si entro datos válidos en el formulario y lo envío, obtenemos el mensaje de conexión correctamente. Veamos qué pasa si me equivoco uno de los detalles de conexión. Por ejemplo, cambiemos la contraseña. Ahora si envío el formulario, obtenemos el mensaje de error de conexión específicamente acceso denegado. Esto es lo que sucede si las credenciales son incorrectas. Vamos a cambiar esto de vuelta. Los detalles vuelven a ser correctos. Una vez que nos hayamos conectado, podemos utilizar esta conexión para realizar consultas de bases de datos, como veremos en breve. Después de terminar con él, opcionalmente podemos desconectar de la base de datos utilizando la función MySQL lie close, pasando en la conexión de base de datos como argumento. Este paso es totalmente opcional, ya que cuando llegamos al final de la solicitud, la conexión de base de datos se cierra automáticamente de todos modos. Puedes incluirlo aunque si lo prefieres. 21. Inserta una nueva record en la base de datos desde PHP: Una vez que nos hayamos conectado con éxito a la base de datos, podemos insertar un nuevo registro. Para insertar un nuevo registro utilizará una instrucción SQL insert. Aquí en la base de datos. Si echamos un vistazo a la estructura de la tabla de tickets que creamos, podemos ver que la columna ID es un campo de autoincremento, por lo que no necesitamos aportar un valor para eso. El valor se asignará automáticamente. Todas las demás columnas no permiten valores nulos. Necesitamos proporcionar valores no nulos. Padre. Cuando insertemos un nuevo registro, insertemos un nuevo registro directamente aquí para que podamos ver el SQL que necesitamos. Como antes. Puedes hacer esto en una GUI como PHP, mi admin, si lo prefieres. Primero, seleccionemos todas las filas de la mesa de boletos. Y podemos ver que la mesa está actualmente vacía. Insertar un registro. Utilizamos el inserto en declaración especificando el nombre de la tabla, que es ticket. paréntesis, una lista de las columnas en las que vamos a insertar valores. Como acabo de mencionar, no necesitamos especificar la columna ID como valor para esto se asignará automáticamente. Después añadimos la palabra clave values, seguida de una lista de los valores que queremos insertar entre paréntesis. Sólo pondré algunos valores de ejemplo. Tenga en cuenta que los valores de cadena deben estar encerrados entre comillas simples y valores numéricos como la columna de prioridad no. Cuando ejecutamos esto, nos llega un mensaje diciendo que estaba bien y se insertó un registro. Y si volvemos a seleccionar todas las filas, vemos el registro en la tabla, incluyendo el valor que se asignó automáticamente a la columna ID. Ahora podemos hacer lo mismo desde PHP. Primero, eliminemos estas dos últimas líneas. Entonces vamos a crear una variable que contendrá el SQL. La primera parte de la instrucción insert donde especificamos las columnas y la palabra clave values. Ahora necesitamos incluir los valores de la granja que están en la matriz de datos. Hay varias formas en que podríamos construir la cadena SQL. Por ejemplo, interpolación variable, concatenación de cadenas, etcétera. Vamos con la concatenación de cuerdas. Concatenaremos cada valor con el siguiente, separándolos con comas. Al final, cerraremos los paréntesis. No olvidemos que necesitamos rodear los valores de cadena con comillas simples. Agregaremos eso a los valores de cadena, que son todos estos excepto la prioridad. Antes de ejecutar esto, imprimimos la cadena SQL para ver qué contiene. Si envío algunos datos válidos, Ahí está la cadena SQL. En lugar de imprimir esto, vamos a ejecutarlo. Para ejecutar este SQL, usaremos la función de consulta MySQL, pasando el objeto de conexión y la cadena SQL como argumentos. Si esto falla, devuelve booleano false. Así que vamos a comprobar por eso. Y si falla, detendremos el guión con un mensaje. Podemos obtener una descripción del mensaje de error usando la función de error MySQL que pasa en el objeto de conexión. Si tiene éxito, por ahora, simplemente imprimiremos un mensaje. Vamos a darle una oportunidad a eso. Si envío algunos datos válidos, obtenemos los registros guardados mensaje. La tabla de boletos en la base de datos. Ahí está el nuevo registro que acabamos de insertar. Los datos para este registro en la tabla de base de datos han venido de la granja en el navegador. No voy a demostrar lo que sucede cuando esto falla todavía. Como vamos a cubrir eso en breve. No obstante, hay un problema de seguridad muy grande con este código, que veremos en el siguiente video. 22. Huba a sus filamentos manualmente para evitar un ataque de inyección SQL: Acabamos de ver cómo funciona esto. Si acabo de introducir valores simples en la granja, se inserta un nuevo registro en la base de datos. No obstante, veamos qué pasa si entro un valor que contiene una sola cotización. Por ejemplo, un apellido como O'Connor. Cuando presento la granja, nos dicen que hay un error en el SQL. Imprimimos temporalmente la cadena SQL completa para ver lo que contiene. Ahora, cuando ejecutamos el código, está la cadena SQL. El problema está aquí. Cuando construimos la cadena SQL, rodeamos cada valor de cadena con comillas simples. No obstante, como este valor incluye una sola comillas, las cosas de la base de datos que la cadena termina aquí. Siguiendo la cadena, espera una coma y el siguiente valor. No obstante, el resto del nombre está ahí en su lugar. Haciendo este SQL inválido. En el mejor de los casos, todo lo que sucederá con esto es que el SQL no es válido. El usuario verá un mensaje de error y el registro. ¿ En qué se insertaría? Sin embargo, en el peor de los casos, esto podría usarse para inyectar algún SQL en la cadena SQL, conocido como un ataque de inyección SQL. Un atacante podría poner algunos SQL en las entradas del formulario, comenzando con una sola cita que podría eliminar algunos valores o incluso recuperar la contraseña de administrador de la base de datos. Para evitar esto, necesitamos escapar de comillas simples dentro los valores de cadena prefijándolas con un carácter de barra invertida. Podría hacer esto manualmente usando la función de reemplazo de cadena, por ejemplo. Pero hay una mejor manera. La función de cadena de escape real MySQL escapará cualquier carácter especial para su uso en una instrucción SQL. Adicionalmente, teniendo en cuenta el carácter configurar la conexión a la base de datos. Llamemos a esta función por cada valor que estamos insertando en el SQL, pasando el objeto de conexión como el primer argumento cada vez. Aunque la prioridad no es una cadena, lo llamaré lejos ese valor también. Solo para asegurarnos absolutamente de que no estamos insertando un valor no confiable en el SQL sin escapar de él. Ahora si presentamos la finca, podemos decir que la cita única se ha escapado al ser prefijada con una barra invertida. Vamos a quitar la línea donde estamos imprimiendo el SQL. Actualiza la página en el navegador. Ahora obtenemos el mensaje de registro guardado en la base de datos. Ahí está el registro que acabamos insertar conteniendo el valor de cotización única. Tenga en cuenta que no se escapó en la base de datos. El valor ahí está ya que fue escrito en la finca. Además, tenga en cuenta que cuando obtenemos un error de base de datos, es más común tener una página de error bien formateada lugar de solo el mensaje de error como este. Y en una aplicación de producción, esto es algo que haría. A los efectos de esta clase, sin embargo, simplemente lo mantendremos simple, así. 23. Usa una declaración preparada para insertar un nuevo registro: Acabamos de aprender una forma de evitar los ataques de inyección SQL. Y eso es para escapar de cualquier personaje especial en valores no confiables cuando creamos el SQL. No obstante, el problema con crear una cadena SQL como esta es que conduce a código que es difícil de entender y por lo tanto difícil de depurar y mantener. También es muy fácil olvidar escapar un nuevo valor si agregamos una nueva columna, por ejemplo. Una forma alternativa de hacer esto que aún evita los ataques de inyección SQL es usar una declaración preparada. Empecemos cambiando el SQL. Eliminará todos estos códigos donde estamos insertando los valores manualmente. Y en cambio, por cada valor, solo pondremos un signo de interrogación. Esto se conoce como marcador de posición. Tenga en cuenta que no tenemos que poner cotizaciones alrededor de los valores de cadena, solo un signo de interrogación donde irá el valor. No vamos a ejecutar esto con el método de consulta MySQL. También podemos quitar eso. En cambio, llamamos a la función init sentencia MySQL, pasando en la conexión como un argumento para crear una instrucción preparada objetos. Entonces llamamos a la función de sentencia MySQL por par, pasando este objeto y la cadena SQL. Esto devuelve un valor de éxito booleano. Comprobemos para ver si esto es falso. Y de ser así, detendrá el script imprimiendo el mensaje de error como se indica anteriormente. Es en este punto que cualquier error de sintaxis en el SQL será capturado. A continuación, conectamos valores a los marcador de posición individuales en la cadena SQL, que se conoce como enlace. Para ello, llamamos a la función de parámetro bind sentencia MySQL. Cuando vinculamos valores a los marcador de posición, especificamos un tipo para cada variable usando una cadena de caracteres individuales, donde cada carácter corresponde a una de las variables. Los personajes que podemos usar. Ai para valores enteros, los cuatro valores dobles, como para cadenas y B para blobs. Llamemos a la función que pasa en la variable de sentencia como el primer parámetro. El segundo parámetro es la cadena de tipos. Entonces en este caso, sería una S para el nombre ya que es una cadena, seguida de otra s para el correo electrónico, otra para la descripción. Un ojo para la prioridad ya que este es un entero. Y finalmente otra S para la categoría. El resto de los parámetros son los valores de estas variables. El nombre, el correo electrónico, la descripción, prioridad y la categoría de la matriz de datos. El número de parámetros tiene que coincidir con el número de caracteres en la cadena. De lo contrario, se lanzará una excepción. Una vez que hayamos hecho esto. Para ejecutarlo, llamamos a las sentencias MySQL ejecutar función pasando en el objeto de sentencia como argumento. Observe que a diferencia de antes, no es posible obtener el SQL que se generará e imprimirlo en el código PHP. Esto se debe a que el enlace de las variables ocurre en el servidor de base de datos y no en el servidor web. Vamos a darle una oportunidad a eso. Si incluyo algunos valores en la granja que contienen caracteres de comillas simples. Cuando envío la granja, vemos el mensaje de registros guardados en la base de datos. Ahí está el nuevo registro que contiene los valores de la finca. Es un poco más complejo ejecutar una instrucción SQL usando una instrucción preparada. Pero el SQL en sí es mucho más claro y por lo tanto mucho menos propenso a errores que pueden ser causados por concatenación de cadenas, como vimos. 24. Usa el patrón Post-Redirect-Get para evitar las presentaciones de formas duplicados: Hasta ahora hemos insertado varios registros, los cuales podemos ver aquí en la base de datos. Para este video, voy a vaciar la mesa usando las declaraciones truncadas para que sea más fácil ver lo que está pasando. Con una mesa vacía. Introdujamos algunos datos en la granja e insertemos un nuevo registro. Por el momento, vemos el mensaje guardado de registro en la base de datos. Ahí está el nuevo récord. No obstante, sin volver a la granja, si refresco la página en el navegador, primero nos recibe un mensaje pidiéndonos que confirme la reenvío de la granja. Esto se debe a que lo que se muestra en el navegador es el resultado de una solicitud de publicación. Y si lo actualizamos, esos datos se volverán a enviar. Esto lo confirmamos. Vemos de nuevo el mensaje guardado del registro. La base de datos. Ahora hay dos registros con los datos de la finca. Cada vez que actualicemos esta página, se insertará un nuevo registro. Si acabas de hacer algo como comprar algo o enviar un mensaje, entonces no quieres que esto se repita fácilmente. La forma estándar de evitar esto es usar el patrón de get redirect post después de una solicitud de publicación exitosa. En lugar de responder con el contenido que se va a mostrar, el navegador es redirigido inmediatamente a otra página. En primer lugar, agreguemos otra página a la que podemos redirigir. Agreguemos un nuevo archivo llamado éxito dot HTML. El formulario, vamos a copiar la primera parte del HTML hacia abajo a e incluyendo el elemento header y pegarlo en el nuevo archivo. En lugar de una granja, vamos a añadir sólo un elemento de párrafo que contenga el texto. Gracias. Y el cuerpo de cierre y las etiquetas HTML. Los scripts de la granja de procesos. En lugar de imprimir este mensaje, este punto, hemos insertado con éxito un nuevo registro. Aquí, redirigirá a otra página. Hacemos esto enviando un encabezado de ubicación que contenga la URL a la que estamos redirigiendo. Y también estableceremos el código de estado de respuesta en 303, lo que indica que estamos redirigiendo a una página de confirmación. Para enviar el encabezado, llamamos a la función header, pasando en una cadena que contiene ubicación, dos puntos y un espacio. Entonces la URL a la que estamos redirigiendo, que en este caso es solo el éxito de URL relativo punto HTML. Para establecer el código de respuesta, usaremos un argumentos con nombre para evitar tener que establecer cualquier otro argumento requerido en esta llamada a función, configurándolo en 303. Este es el final de este script, pero generalmente es una buena práctica después redirigir para salir del script inmediatamente después. Por lo que incluiremos una llamada de salida. Vamos a darle una oportunidad a eso. Ahora con algunos datos diferentes en la finca. Si lo enviamos, nos redirigimos a la página de éxito. Ahora si actualizo la página, sin embargo, no se mostró ningún mensaje pidiéndonos confirmar el envío de farmacia en la base de datos. Sólo se ha insertado un registro. 25. Proyecto de clase: crea un formulario y guarda los datos de el formulario en una base de datos: Ahora es tu turno. Tu proyecto para esta clase es crear una granja para capturar algunos datos y guardar esos datos en una base de datos. Empieza por diseñar una granja que capture los datos que necesitas. Por ejemplo, un formulario de registro, una granja de artistas, y así sucesivamente. Utilice los tipos de entrada relevantes para cada ítem de datos. A continuación, crea un script PHP para procesar los datos de la granja enviados, asegurándose de que todo sea válido. A continuación, cree una base de datos con una tabla para almacenar los datos de la granja. Utilice diferentes tipos de columna para almacenar cada elemento de datos según sea necesario. Una vez que tenga la tabla de base de datos, puede escribir el código SQL y PHP para insertar un registro en esta tabla. Por último, redirigir a una página de éxito. Una vez que se ha insertado correctamente un registro. Puede utilizar estos sitios web de documentación como referencia para el código HTML, SQL y PHP que está escribiendo. Además el código que se muestra en la clase está disponible para su descarga. Si necesitas ayuda, puedes hacer una pregunta en la sección de discusión de clase a continuación. Espero con interés ver sus proyectos. 26. Conclusión: Enhorabuena, has terminado la clase. En esta clase, has aprendido todo lo que necesitas saber para crear una granja en HTML que contenga entradas para diferentes tipos de datos, cómo validar esos datos en PHP, y cómo guardar los datos de eso granja en una base de datos en el servidor. Esta es una de las habilidades clave para cualquier desarrollador de aplicaciones web. Si acabas de empezar o eres un desarrollador experimentado que busca ampliar sus conjuntos de habilidades, acabas de aprender algunas técnicas importantes para esta tan solicitada funcionalidad. No olvides publicar tus proyectos en la galería de proyectos de la clase. Espero verlos. Por último. Solo quería agradecerte por tomar este curso. Espero que lo hayan disfrutado. Si lo hizo, por favor considere dejar una revisión. Además si hay un tema que te gustaría que cubra, por favor no dudes en hacerme saber. Te veré en la siguiente clase.