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.