SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Desarrollo de sitios web con
PHP y MySQL
Tema 3: Formularios
José Mariano González Romano
mariano@lsi.us.es
Tema 3: Formularios
1. Acceso a formularios HTML desde PHP
2. El formulario de PHP
3. Subida de ficheros al servidor
4. Validación de los datos de un formulario
Acceso a formularios desde PHP
Desde PHP se puede acceder fácilmente a los datos
introducidos desde un formulario HTML
Veámoslo con un ejemplo simple
Acceso a formularios desde PHP
Fichero uno.php
<HTML>
<BODY>
<FORM ACTION=”dos.php” METHOD=”POST”>
Edad: <INPUT TYPE=”text” NAME=”edad”>
<INPUT TYPE=”submit” VALUE=”aceptar”>
</FORM>
</BODY>
</HTML>
Fichero dos.php
<HTML>
<BODY>
<?PHP
print (“La edad es: $edad”);
?>
</BODY>
</HTML>
Acceso a formularios desde PHP
Acceso a formularios desde PHP
A partir de PHP 4.2.0, el valor por defecto de la directiva de
PHP register_globals es off
Esto tiene una gran importancia sobre los formularios, ya
que no es posible acceder a las variables enviadas de la
manera anterior (como variables globales). En su lugar hay
que utilizar la variable predefinida de PHP $_REQUEST,
escribiendo $_REQUEST[‘edad’] en lugar de $edad
Se puede poner register_globals = on en el fichero de
configuración php.ini, pero no es recomendable por motivos
de seguridad. Una alternativa que permite hacer mínimos
cambios en el código ya existente es la siguiente:
$edad = $_REQUEST[‘edad’];
Acceso a formularios desde PHP
Fichero uno.php
<HTML>
<BODY>
<FORM ACTION=”dos.php” METHOD=”POST”>
Edad: <INPUT TYPE=”text” NAME=”edad”>
<INPUT TYPE=”submit” VALUE=”aceptar”>
</FORM>
</BODY>
</HTML>
Fichero dos.php
<HTML>
<BODY>
<?PHP
$edad = $_REQUEST[‘edad’];
print (“La edad es: $edad”);
?>
</BODY>
</HTML>
Acceso a formularios desde PHP
Ejercicio 1: formulario simple
– Ilustra cómo acceder a los valores introducidos desde un
formulario HTML
Acceso a formularios desde PHP
Acceso a los diferentes tipos de elementos de entrada de
formulario
– Elementos de tipo INPUT
• TEXT
• RADIO
• CHECKBOX
• BUTTON
• FILE
• HIDDEN
• PASSWORD
• SUBMIT
– Elemento SELECT
• Simple / múltiple
– Elemento TEXTAREA
Acceso a formularios desde PHP
TEXT
Introduzca la cadena a buscar:
<INPUT TYPE="text" NAME="cadena" VALUE="valor por defecto" SIZE="20">
<?PHP
$cadena = $_REQUEST[‘cadena’];
print ($cadena);
?>
Acceso a formularios desde PHP
RADIO
Sexo:
<INPUT TYPE="radio" NAME=“sexo" VALUE=“M“ CHECKED>Mujer
<INPUT TYPE="radio" NAME=“sexo" VALUE=“H">Hombre
<?PHP
$sexo = $_REQUEST[‘sexo’];
print ($sexo);
?>
Acceso a formularios desde PHP
CHECKBOX
<INPUT TYPE="checkbox" NAME="extras[]" VALUE="garaje" CHECKED>Garaje
<INPUT TYPE="checkbox" NAME="extras[]" VALUE="piscina">Piscina
<INPUT TYPE="checkbox" NAME="extras[]" VALUE="jardin">Jardín
<?PHP
$extras = $_REQUEST[‘extras’];
foreach ($extras as $extra)
print (“$extra<BR>n”);
?>
Acceso a formularios desde PHP
BUTTON
<INPUT TYPE="button" NAME=“actualizar" VALUE="Actualizar datos">
<?PHP
$actualizar = $_REQUEST[‘actualizar’];
if ($actualizar)
print ("Se han actualizado los datos");
?>
Acceso a formularios desde PHP
FILE
<FORM ACTION="procesa.php" METHOD="post“
ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="fichero">
</FORM>
Acceso a formularios desde PHP
HIDDEN
<?PHP
print(“<INPUT TYPE=’hidden’ NAME=’username’ VALUE=’$usuario’>n”);
?>
<?PHP
$username = $_REQUEST[‘username’];
print ($username);
?>
Acceso a formularios desde PHP
PASSWORD
Contraseña: <INPUT TYPE="password" NAME="clave">
<?PHP
$clave = $_REQUEST[‘clave’];
print ($clave);
?>
Acceso a formularios desde PHP
SUBMIT
<INPUT TYPE="submit" NAME="enviar" VALUE="Enviar datos">
<?PHP
$enviar = $_REQUEST[‘enviar’];
if ($enviar)
print ("Se ha pulsado el botón de enviar");
?>
Acceso a formularios desde PHP
SELECT simple
Color:
<SELECT NAME=“color">
<OPTION VALUE=“rojo" SELECTED>Rojo
<OPTION VALUE=“verde">Verde
<OPTION VALUE=“azul">Azul
</SELECT>
<?PHP
$color = $_REQUEST[‘color’];
print ($color);
?>
Acceso a formularios desde PHP
SELECT múltiple
Idiomas:
<SELECT MULTIPLE SIZE="3" NAME="idiomas[]">
<OPTION VALUE="ingles" SELECTED>Inglés
<OPTION VALUE="frances">Francés
<OPTION VALUE="aleman">Alemán
<OPTION VALUE="holandes">Holandés
</SELECT>
<?PHP
$idiomas = $_REQUEST[‘idiomas’];
foreach ($idiomas as $idioma)
print (“$idioma<BR>n”);
?>
Acceso a formularios desde PHP
TEXTAREA
Comentario:
<TEXTAREA COLS=“50" ROWS=“4" NAME="comentario">
Este libro me parece ...
</TEXTAREA>
<?PHP
$comentario = $_REQUEST[‘comentario’];
print ($comentario);
?>
Acceso a formularios desde PHP
Ejercicio 2: programa que muestra los datos
introducidos desde un formulario
– Ilustra cómo acceder a los valores introducidos desde todos
los tipos de elementos de entrada de un formulario, con
excepción de los tipos BUTTON y FILE, que se tratan en
ejercicios posteriores
El formulario de PHP
La forma habitual de trabajar con formularios en PHP es
utilizar un único programa que procese el formulario o lo
muestre según haya sido o no enviado, respectivamente
Ventajas:
– Disminuye el número de ficheros
– Permite validar los datos del formulario en el propio formulario
Procedimiento:
si se ha enviado el formulario:
Procesar formulario
si no:
Mostrar formulario
fsi
El formulario de PHP
Esquema de funcionamiento:
a) b)
si se ha enviado el formulario:
Procesar formulario
si no:
Mostrar formulario
fsi
– La 1ª vez que se carga la página se muestra el formulario (a)
– La 2ª vez se procesa el formulario (b)
El formulario de PHP
Para saber si se ha enviado el formulario se acude a la
variable correspondiente al botón de envío. Si este botón
aparece de la siguiente forma en el formulario HTML:
<INPUT TYPE="SUBMIT" NAME="enviar“ VALUE="procesar">
entonces la condición anterior se transforma en:
if (isset($enviar))
o bien
if ($enviar == “procesar”)
El formulario de PHP
Ejercicio 3: formulario de PHP
– Ilustra cómo crear páginas multipropósito que sirven tanto
para mostrar un formulario como para procesarlo
Subida de ficheros al servidor
Para subir un fichero al servidor se utiliza el elemento de
entrada FILE
Hay que tener en cuenta una serie de consideraciones
importantes:
– El elemento FORM debe tener el atributo
ENCTYPE="multipart/form-data“
– El fichero tiene un límite en cuanto a su tamaño. Este límite se
fija de dos formas diferentes:
• En el fichero de configuración php.ini
• En el propio formulario
Subida de ficheros al servidor
php.ini
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use
; system default if not specified).
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
formulario
<INPUT TYPE=”HIDDEN” NAME=”MAX_FILE_SIZE” VALUE='102400'>
<INPUT TYPE=”FILE” NAME="fichero">
Subida de ficheros al servidor
Consideraciones (cont)
– Debe darse al fichero un nombre que evite coincidencias con
ficheros ya subidos. Por ello, y como norma general, debe
descartarse el nombre original del fichero y crear uno nuevo
que sea único
– El fichero subido se almacena en un directorio temporal y
hemos de moverlo al directorio de destino usando la función
move_upload_file()
Procedimiento:
si se ha subido correctamente el fichero:
Asignar un nombre al fichero
Mover el fichero a su ubicación definitiva
si no:
Mostrar un mensaje de error
fsi
Subida de ficheros al servidor
HTML
<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="102400">
<INPUT TYPE="FILE" SIZE="44" NAME="imagen">
La variable $_FILES contiene toda la información del fichero
subido:
– $_FILES['imagen']['name']
• Nombre original del fichero en la máquina cliente
– $_FILES['imagen']['type']
• Tipo mime del fichero. Por ejemplo, "image/gif"
– $_FILES['imagen']['size']
• Tamaño en bytes del fichero subido
– $_FILES['imagen']['tmp_name']
• Nombre del fichero temporal en el que se almacena el fichero
subido en el servidor
– $_FILES['imagen’]['error']
• Código de error asociado al fichero subido
Subida de ficheros al servidor
PHP
if (is_uploaded_file ($_FILES['imagen']['tmp_name']))
{
$nombreDirectorio = "img/";
$idUnico = time();
$nombreFichero = $idUnico . "-" . $_FILES['imagen']['name'];
move_uploaded_file ($_FILES['imagen']['tmp_name'],
$nombreDirectorio . $nombreFichero);
}
else
print ("No se ha podido subir el ficheron");
Subida de ficheros al servidor
PHP
if (is_uploaded_file ($_FILES['imagen']['tmp_name']))
{
$nombreDirectorio = "img/";
$nombreFichero = $_FILES['imagen']['name'];
$nombreCompleto = $nombreDirectorio . $nombreFichero;
if (is_file($nombreCompleto))
{
$idUnico = time();
$nombreFichero = $idUnico . "-" . $nombreFichero;
}
move_uploaded_file ($_FILES['imagen']['tmp_name'],
$nombreDirectorio . $nombreFichero);
}
else
print ("No se ha podido subir el ficheron");
Subida de ficheros al servidor
Ejercicio 4: subida de un fichero al servidor
– Ilustra cómo subir ficheros a un servidor, cómo controlar su
tamaño, cómo crear un nombre único para el fichero y
cómo almacenarlo en el lugar deseado
Validación de formularios
Toda la información proveniente de un formulario debe
considerarse por norma como contaminada, y hay que
validarla antes de darla por buena y procesarla
Lo más eficiente es mostrar los errores sobre el propio
formulario para facilitar su corrección. Procedimiento:
si se ha enviado el formulario:
si hay errores:
Mostrar formulario con errores
si no:
Procesar formulario
fsi
si no:
Mostrar formulario
fsi
Validación de formularios
Este procedimiento se puede resumir para que sólo haya que
mostrar una vez el formulario, bien con los valores por defecto
o con los valores introducidos, y con los errores en su caso:
si se ha enviado el formulario:
validar datos
fsi
si se ha enviado el formulario y no hay errores:
Procesar formulario
si no:
Mostrar formulario con valores por defecto o ya
enviados
fsi
Validación de formularios
Esquema de funcionamiento:
a) b) c)
si se ha enviado el formulario:
validar datos
fsi
si se ha enviado y no hay errores:
Procesar formulario
si no:
Mostrar formulario
fsi
– La 1ª vez que se carga la página se muestra el formulario (a)
– La 2ª y sucesivas veces se validan los datos
• Si hay errores, se muestra de nuevo el formulario con los errores (b)
• Si no hay, se procesa el formulario (c)
Validación de formularios
Ejercicio 5: validación de los datos introducidos en un
formulario
– Ilustra cómo realizar una validación de los datos
introducidos en un formulario en el propio formulario

Más contenido relacionado

La actualidad más candente

Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, javaFaby Marcos Solis
 
Capitulo II
Capitulo IICapitulo II
Capitulo IImanu1819
 
Clase 14 bundles útiles
Clase 14 bundles útilesClase 14 bundles útiles
Clase 14 bundles útileshydras_cs
 
Guardar en base de datos MySQL desde HTML con PHP.
Guardar en base de datos MySQL desde HTML con PHP.Guardar en base de datos MySQL desde HTML con PHP.
Guardar en base de datos MySQL desde HTML con PHP.yanburbano
 
Laboratorio 3 Andres Moreno
Laboratorio 3 Andres MorenoLaboratorio 3 Andres Moreno
Laboratorio 3 Andres MorenoFelipe Moreno
 
Clase 14 doctrine - subir archivos
Clase 14   doctrine - subir archivosClase 14   doctrine - subir archivos
Clase 14 doctrine - subir archivoshydras_cs
 
Manual de instalacion hosting gratuito druapal y word press
Manual de instalacion hosting gratuito druapal y word pressManual de instalacion hosting gratuito druapal y word press
Manual de instalacion hosting gratuito druapal y word presservin1983
 
Plone Gubierno Cuarto SesióN1
Plone Gubierno   Cuarto SesióN1Plone Gubierno   Cuarto SesióN1
Plone Gubierno Cuarto SesióN1ajussis
 
Manual de instalacion de helix3 framework
Manual de instalacion de helix3 frameworkManual de instalacion de helix3 framework
Manual de instalacion de helix3 frameworkTefyta G
 
Publicación en Internet
Publicación en InternetPublicación en Internet
Publicación en InternetJoaquin Galdon
 

La actualidad más candente (16)

Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
Jsg2
Jsg2Jsg2
Jsg2
 
Capitulo II
Capitulo IICapitulo II
Capitulo II
 
PhpLab05
PhpLab05PhpLab05
PhpLab05
 
Clase 14 bundles útiles
Clase 14 bundles útilesClase 14 bundles útiles
Clase 14 bundles útiles
 
Guardar en base de datos MySQL desde HTML con PHP.
Guardar en base de datos MySQL desde HTML con PHP.Guardar en base de datos MySQL desde HTML con PHP.
Guardar en base de datos MySQL desde HTML con PHP.
 
Laboratorio 3 Andres Moreno
Laboratorio 3 Andres MorenoLaboratorio 3 Andres Moreno
Laboratorio 3 Andres Moreno
 
Apuntes php
Apuntes phpApuntes php
Apuntes php
 
Clase 14 doctrine - subir archivos
Clase 14   doctrine - subir archivosClase 14   doctrine - subir archivos
Clase 14 doctrine - subir archivos
 
Cómo Subir Un Sitio Web
Cómo Subir Un Sitio WebCómo Subir Un Sitio Web
Cómo Subir Un Sitio Web
 
Manual de instalacion hosting gratuito druapal y word press
Manual de instalacion hosting gratuito druapal y word pressManual de instalacion hosting gratuito druapal y word press
Manual de instalacion hosting gratuito druapal y word press
 
"Como subir archivos al internet"
"Como subir archivos al internet""Como subir archivos al internet"
"Como subir archivos al internet"
 
Plone Gubierno Cuarto SesióN1
Plone Gubierno   Cuarto SesióN1Plone Gubierno   Cuarto SesióN1
Plone Gubierno Cuarto SesióN1
 
Manual de instalacion de helix3 framework
Manual de instalacion de helix3 frameworkManual de instalacion de helix3 framework
Manual de instalacion de helix3 framework
 
Publicación en Internet
Publicación en InternetPublicación en Internet
Publicación en Internet
 
Como subir archivos al internet
Como subir archivos al internetComo subir archivos al internet
Como subir archivos al internet
 

Destacado (20)

Dualidad en programacion lineal
Dualidad en programacion linealDualidad en programacion lineal
Dualidad en programacion lineal
 
Tesis web transaccionales-rof
Tesis web transaccionales-rofTesis web transaccionales-rof
Tesis web transaccionales-rof
 
Indicador anual materno 2014
Indicador anual materno 2014Indicador anual materno 2014
Indicador anual materno 2014
 
Ordenes del cmd
Ordenes del cmdOrdenes del cmd
Ordenes del cmd
 
montecaralos metodo
montecaralos metodomontecaralos metodo
montecaralos metodo
 
Ordenes del cmd
Ordenes del cmdOrdenes del cmd
Ordenes del cmd
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Comandos de msdos
Comandos de msdosComandos de msdos
Comandos de msdos
 
Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01Relacionmultas cco tsc-jul-01
Relacionmultas cco tsc-jul-01
 
Comandos de los archivos por lotes equipo 2
Comandos de los archivos por lotes equipo 2Comandos de los archivos por lotes equipo 2
Comandos de los archivos por lotes equipo 2
 
Nivel cump metas
Nivel cump metasNivel cump metas
Nivel cump metas
 
base de datos
base de datosbase de datos
base de datos
 
Curso batch
Curso batchCurso batch
Curso batch
 
Brisayda
BrisaydaBrisayda
Brisayda
 
Tema4
Tema4Tema4
Tema4
 
sistemas operativos
sistemas operativossistemas operativos
sistemas operativos
 
Manual ms dos
Manual ms dosManual ms dos
Manual ms dos
 
Administracion de-sistemas-operativos apuntes-v2-4
Administracion de-sistemas-operativos apuntes-v2-4Administracion de-sistemas-operativos apuntes-v2-4
Administracion de-sistemas-operativos apuntes-v2-4
 
Innovación de procesos
Innovación de procesosInnovación de procesos
Innovación de procesos
 
Aplicaciones Informáticas
Aplicaciones InformáticasAplicaciones Informáticas
Aplicaciones Informáticas
 

Similar a Tema3

Similar a Tema3 (20)

fonciones
foncionesfonciones
fonciones
 
Tema3[Php]
Tema3[Php]Tema3[Php]
Tema3[Php]
 
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
 
Aprendiendo php 3
Aprendiendo php 3Aprendiendo php 3
Aprendiendo php 3
 
2 4 formularios_php
2 4 formularios_php2 4 formularios_php
2 4 formularios_php
 
tema.pptx
tema.pptxtema.pptx
tema.pptx
 
Guia programacionwebdesarrollositiosweb
Guia programacionwebdesarrollositioswebGuia programacionwebdesarrollositiosweb
Guia programacionwebdesarrollositiosweb
 
Recuperar datos de un formulario con php
Recuperar datos de un formulario con phpRecuperar datos de un formulario con php
Recuperar datos de un formulario con php
 
Sesion n°6
Sesion n°6Sesion n°6
Sesion n°6
 
Desarrollo de sistios web
Desarrollo de sistios webDesarrollo de sistios web
Desarrollo de sistios web
 
Clase 10 formularios
Clase 10   formulariosClase 10   formularios
Clase 10 formularios
 
LFI & RFI
LFI & RFI LFI & RFI
LFI & RFI
 
Desarrollo de sitios web con php y my sql
Desarrollo de sitios web con php y my sqlDesarrollo de sitios web con php y my sql
Desarrollo de sitios web con php y my sql
 
Curso PHP Academia Usero
Curso PHP Academia UseroCurso PHP Academia Usero
Curso PHP Academia Usero
 
Practica web de la sesión 14
Practica web de la sesión 14Practica web de la sesión 14
Practica web de la sesión 14
 
Manual de aspupload
Manual de aspuploadManual de aspupload
Manual de aspupload
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework Symfony
 
Funciones
FuncionesFunciones
Funciones
 
mejorando con php
mejorando con phpmejorando con php
mejorando con php
 
Manual oscommerce
Manual oscommerceManual oscommerce
Manual oscommerce
 

Más de Juan Timoteo Cori

Guia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaGuia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaJuan Timoteo Cori
 
Malla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialMalla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialJuan Timoteo Cori
 
El afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarEl afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarJuan Timoteo Cori
 
Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Juan Timoteo Cori
 
      integracion usabilidad
      integracion  usabilidad       integracion  usabilidad
      integracion usabilidad Juan Timoteo Cori
 
Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Juan Timoteo Cori
 
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesUsabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesJuan Timoteo Cori
 
Edutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresEdutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresJuan Timoteo Cori
 
Paz freddy heuristica_usabilidad_sitios_web_transaccionales
Paz freddy heuristica_usabilidad_sitios_web_transaccionalesPaz freddy heuristica_usabilidad_sitios_web_transaccionales
Paz freddy heuristica_usabilidad_sitios_web_transaccionalesJuan Timoteo Cori
 

Más de Juan Timoteo Cori (20)

multas operadores
multas operadoresmultas operadores
multas operadores
 
Tupa2009 anexo1
Tupa2009 anexo1Tupa2009 anexo1
Tupa2009 anexo1
 
Guia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieriaGuia para acreditacion de carreras de ingenieria
Guia para acreditacion de carreras de ingenieria
 
Estándares tipo-valorativo
Estándares tipo-valorativoEstándares tipo-valorativo
Estándares tipo-valorativo
 
Convalidacion acreditacion
Convalidacion acreditacionConvalidacion acreditacion
Convalidacion acreditacion
 
Malla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrialMalla curricular ingenieriaindustrial
Malla curricular ingenieriaindustrial
 
essalud
essaludessalud
essalud
 
El afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomarEl afán de los humanos por conseguir adivinar el futuro para tomar
El afán de los humanos por conseguir adivinar el futuro para tomar
 
requerimientos
requerimientos requerimientos
requerimientos
 
Conflicto social
Conflicto socialConflicto social
Conflicto social
 
Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016Plan estrategico institucional_2012_2016
Plan estrategico institucional_2012_2016
 
aplicaciones moviles
aplicaciones  movilesaplicaciones  moviles
aplicaciones moviles
 
Variables internas
Variables internasVariables internas
Variables internas
 
      integracion usabilidad
      integracion  usabilidad       integracion  usabilidad
      integracion usabilidad
 
Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00Vea230e otr auditoria_de_usabilidad_v01r00
Vea230e otr auditoria_de_usabilidad_v01r00
 
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos airesUsabilidad de sitios web dedicados al comercio electrónico en buenos aires
Usabilidad de sitios web dedicados al comercio electrónico en buenos aires
 
Edutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyaresEdutec e n34-gonzales_acosta_moyares
Edutec e n34-gonzales_acosta_moyares
 
Td hm-fi-unlp
Td hm-fi-unlpTd hm-fi-unlp
Td hm-fi-unlp
 
Sirius
SiriusSirius
Sirius
 
Paz freddy heuristica_usabilidad_sitios_web_transaccionales
Paz freddy heuristica_usabilidad_sitios_web_transaccionalesPaz freddy heuristica_usabilidad_sitios_web_transaccionales
Paz freddy heuristica_usabilidad_sitios_web_transaccionales
 

Último

libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.imejia2411
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx241532171
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdfFernandaHernandez312615
 
Historia de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellaHistoria de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellajuancamilo3111391
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxRodriguezLucero
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxssuser61dda7
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 

Último (13)

libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.MODELO CARACTERIZACION DE PROCESOS SENA.
MODELO CARACTERIZACION DE PROCESOS SENA.
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
 
Historia de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ellaHistoria de la Medicina y bases para desarrollo de ella
Historia de la Medicina y bases para desarrollo de ella
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 

Tema3

  • 1. Desarrollo de sitios web con PHP y MySQL Tema 3: Formularios José Mariano González Romano mariano@lsi.us.es
  • 2. Tema 3: Formularios 1. Acceso a formularios HTML desde PHP 2. El formulario de PHP 3. Subida de ficheros al servidor 4. Validación de los datos de un formulario
  • 3. Acceso a formularios desde PHP Desde PHP se puede acceder fácilmente a los datos introducidos desde un formulario HTML Veámoslo con un ejemplo simple
  • 4. Acceso a formularios desde PHP Fichero uno.php <HTML> <BODY> <FORM ACTION=”dos.php” METHOD=”POST”> Edad: <INPUT TYPE=”text” NAME=”edad”> <INPUT TYPE=”submit” VALUE=”aceptar”> </FORM> </BODY> </HTML> Fichero dos.php <HTML> <BODY> <?PHP print (“La edad es: $edad”); ?> </BODY> </HTML>
  • 6. Acceso a formularios desde PHP A partir de PHP 4.2.0, el valor por defecto de la directiva de PHP register_globals es off Esto tiene una gran importancia sobre los formularios, ya que no es posible acceder a las variables enviadas de la manera anterior (como variables globales). En su lugar hay que utilizar la variable predefinida de PHP $_REQUEST, escribiendo $_REQUEST[‘edad’] en lugar de $edad Se puede poner register_globals = on en el fichero de configuración php.ini, pero no es recomendable por motivos de seguridad. Una alternativa que permite hacer mínimos cambios en el código ya existente es la siguiente: $edad = $_REQUEST[‘edad’];
  • 7. Acceso a formularios desde PHP Fichero uno.php <HTML> <BODY> <FORM ACTION=”dos.php” METHOD=”POST”> Edad: <INPUT TYPE=”text” NAME=”edad”> <INPUT TYPE=”submit” VALUE=”aceptar”> </FORM> </BODY> </HTML> Fichero dos.php <HTML> <BODY> <?PHP $edad = $_REQUEST[‘edad’]; print (“La edad es: $edad”); ?> </BODY> </HTML>
  • 8. Acceso a formularios desde PHP Ejercicio 1: formulario simple – Ilustra cómo acceder a los valores introducidos desde un formulario HTML
  • 9. Acceso a formularios desde PHP Acceso a los diferentes tipos de elementos de entrada de formulario – Elementos de tipo INPUT • TEXT • RADIO • CHECKBOX • BUTTON • FILE • HIDDEN • PASSWORD • SUBMIT – Elemento SELECT • Simple / múltiple – Elemento TEXTAREA
  • 10. Acceso a formularios desde PHP TEXT Introduzca la cadena a buscar: <INPUT TYPE="text" NAME="cadena" VALUE="valor por defecto" SIZE="20"> <?PHP $cadena = $_REQUEST[‘cadena’]; print ($cadena); ?>
  • 11. Acceso a formularios desde PHP RADIO Sexo: <INPUT TYPE="radio" NAME=“sexo" VALUE=“M“ CHECKED>Mujer <INPUT TYPE="radio" NAME=“sexo" VALUE=“H">Hombre <?PHP $sexo = $_REQUEST[‘sexo’]; print ($sexo); ?>
  • 12. Acceso a formularios desde PHP CHECKBOX <INPUT TYPE="checkbox" NAME="extras[]" VALUE="garaje" CHECKED>Garaje <INPUT TYPE="checkbox" NAME="extras[]" VALUE="piscina">Piscina <INPUT TYPE="checkbox" NAME="extras[]" VALUE="jardin">Jardín <?PHP $extras = $_REQUEST[‘extras’]; foreach ($extras as $extra) print (“$extra<BR>n”); ?>
  • 13. Acceso a formularios desde PHP BUTTON <INPUT TYPE="button" NAME=“actualizar" VALUE="Actualizar datos"> <?PHP $actualizar = $_REQUEST[‘actualizar’]; if ($actualizar) print ("Se han actualizado los datos"); ?>
  • 14. Acceso a formularios desde PHP FILE <FORM ACTION="procesa.php" METHOD="post“ ENCTYPE="multipart/form-data"> <INPUT TYPE="file" NAME="fichero"> </FORM>
  • 15. Acceso a formularios desde PHP HIDDEN <?PHP print(“<INPUT TYPE=’hidden’ NAME=’username’ VALUE=’$usuario’>n”); ?> <?PHP $username = $_REQUEST[‘username’]; print ($username); ?>
  • 16. Acceso a formularios desde PHP PASSWORD Contraseña: <INPUT TYPE="password" NAME="clave"> <?PHP $clave = $_REQUEST[‘clave’]; print ($clave); ?>
  • 17. Acceso a formularios desde PHP SUBMIT <INPUT TYPE="submit" NAME="enviar" VALUE="Enviar datos"> <?PHP $enviar = $_REQUEST[‘enviar’]; if ($enviar) print ("Se ha pulsado el botón de enviar"); ?>
  • 18. Acceso a formularios desde PHP SELECT simple Color: <SELECT NAME=“color"> <OPTION VALUE=“rojo" SELECTED>Rojo <OPTION VALUE=“verde">Verde <OPTION VALUE=“azul">Azul </SELECT> <?PHP $color = $_REQUEST[‘color’]; print ($color); ?>
  • 19. Acceso a formularios desde PHP SELECT múltiple Idiomas: <SELECT MULTIPLE SIZE="3" NAME="idiomas[]"> <OPTION VALUE="ingles" SELECTED>Inglés <OPTION VALUE="frances">Francés <OPTION VALUE="aleman">Alemán <OPTION VALUE="holandes">Holandés </SELECT> <?PHP $idiomas = $_REQUEST[‘idiomas’]; foreach ($idiomas as $idioma) print (“$idioma<BR>n”); ?>
  • 20. Acceso a formularios desde PHP TEXTAREA Comentario: <TEXTAREA COLS=“50" ROWS=“4" NAME="comentario"> Este libro me parece ... </TEXTAREA> <?PHP $comentario = $_REQUEST[‘comentario’]; print ($comentario); ?>
  • 21. Acceso a formularios desde PHP Ejercicio 2: programa que muestra los datos introducidos desde un formulario – Ilustra cómo acceder a los valores introducidos desde todos los tipos de elementos de entrada de un formulario, con excepción de los tipos BUTTON y FILE, que se tratan en ejercicios posteriores
  • 22. El formulario de PHP La forma habitual de trabajar con formularios en PHP es utilizar un único programa que procese el formulario o lo muestre según haya sido o no enviado, respectivamente Ventajas: – Disminuye el número de ficheros – Permite validar los datos del formulario en el propio formulario Procedimiento: si se ha enviado el formulario: Procesar formulario si no: Mostrar formulario fsi
  • 23. El formulario de PHP Esquema de funcionamiento: a) b) si se ha enviado el formulario: Procesar formulario si no: Mostrar formulario fsi – La 1ª vez que se carga la página se muestra el formulario (a) – La 2ª vez se procesa el formulario (b)
  • 24. El formulario de PHP Para saber si se ha enviado el formulario se acude a la variable correspondiente al botón de envío. Si este botón aparece de la siguiente forma en el formulario HTML: <INPUT TYPE="SUBMIT" NAME="enviar“ VALUE="procesar"> entonces la condición anterior se transforma en: if (isset($enviar)) o bien if ($enviar == “procesar”)
  • 25. El formulario de PHP Ejercicio 3: formulario de PHP – Ilustra cómo crear páginas multipropósito que sirven tanto para mostrar un formulario como para procesarlo
  • 26. Subida de ficheros al servidor Para subir un fichero al servidor se utiliza el elemento de entrada FILE Hay que tener en cuenta una serie de consideraciones importantes: – El elemento FORM debe tener el atributo ENCTYPE="multipart/form-data“ – El fichero tiene un límite en cuanto a su tamaño. Este límite se fija de dos formas diferentes: • En el fichero de configuración php.ini • En el propio formulario
  • 27. Subida de ficheros al servidor php.ini ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. file_uploads = On ; Temporary directory for HTTP uploaded files (will use ; system default if not specified). ;upload_tmp_dir = ; Maximum allowed size for uploaded files. upload_max_filesize = 2M formulario <INPUT TYPE=”HIDDEN” NAME=”MAX_FILE_SIZE” VALUE='102400'> <INPUT TYPE=”FILE” NAME="fichero">
  • 28. Subida de ficheros al servidor Consideraciones (cont) – Debe darse al fichero un nombre que evite coincidencias con ficheros ya subidos. Por ello, y como norma general, debe descartarse el nombre original del fichero y crear uno nuevo que sea único – El fichero subido se almacena en un directorio temporal y hemos de moverlo al directorio de destino usando la función move_upload_file() Procedimiento: si se ha subido correctamente el fichero: Asignar un nombre al fichero Mover el fichero a su ubicación definitiva si no: Mostrar un mensaje de error fsi
  • 29. Subida de ficheros al servidor HTML <INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="102400"> <INPUT TYPE="FILE" SIZE="44" NAME="imagen"> La variable $_FILES contiene toda la información del fichero subido: – $_FILES['imagen']['name'] • Nombre original del fichero en la máquina cliente – $_FILES['imagen']['type'] • Tipo mime del fichero. Por ejemplo, "image/gif" – $_FILES['imagen']['size'] • Tamaño en bytes del fichero subido – $_FILES['imagen']['tmp_name'] • Nombre del fichero temporal en el que se almacena el fichero subido en el servidor – $_FILES['imagen’]['error'] • Código de error asociado al fichero subido
  • 30. Subida de ficheros al servidor PHP if (is_uploaded_file ($_FILES['imagen']['tmp_name'])) { $nombreDirectorio = "img/"; $idUnico = time(); $nombreFichero = $idUnico . "-" . $_FILES['imagen']['name']; move_uploaded_file ($_FILES['imagen']['tmp_name'], $nombreDirectorio . $nombreFichero); } else print ("No se ha podido subir el ficheron");
  • 31. Subida de ficheros al servidor PHP if (is_uploaded_file ($_FILES['imagen']['tmp_name'])) { $nombreDirectorio = "img/"; $nombreFichero = $_FILES['imagen']['name']; $nombreCompleto = $nombreDirectorio . $nombreFichero; if (is_file($nombreCompleto)) { $idUnico = time(); $nombreFichero = $idUnico . "-" . $nombreFichero; } move_uploaded_file ($_FILES['imagen']['tmp_name'], $nombreDirectorio . $nombreFichero); } else print ("No se ha podido subir el ficheron");
  • 32. Subida de ficheros al servidor Ejercicio 4: subida de un fichero al servidor – Ilustra cómo subir ficheros a un servidor, cómo controlar su tamaño, cómo crear un nombre único para el fichero y cómo almacenarlo en el lugar deseado
  • 33. Validación de formularios Toda la información proveniente de un formulario debe considerarse por norma como contaminada, y hay que validarla antes de darla por buena y procesarla Lo más eficiente es mostrar los errores sobre el propio formulario para facilitar su corrección. Procedimiento: si se ha enviado el formulario: si hay errores: Mostrar formulario con errores si no: Procesar formulario fsi si no: Mostrar formulario fsi
  • 34. Validación de formularios Este procedimiento se puede resumir para que sólo haya que mostrar una vez el formulario, bien con los valores por defecto o con los valores introducidos, y con los errores en su caso: si se ha enviado el formulario: validar datos fsi si se ha enviado el formulario y no hay errores: Procesar formulario si no: Mostrar formulario con valores por defecto o ya enviados fsi
  • 35. Validación de formularios Esquema de funcionamiento: a) b) c) si se ha enviado el formulario: validar datos fsi si se ha enviado y no hay errores: Procesar formulario si no: Mostrar formulario fsi – La 1ª vez que se carga la página se muestra el formulario (a) – La 2ª y sucesivas veces se validan los datos • Si hay errores, se muestra de nuevo el formulario con los errores (b) • Si no hay, se procesa el formulario (c)
  • 36. Validación de formularios Ejercicio 5: validación de los datos introducidos en un formulario – Ilustra cómo realizar una validación de los datos introducidos en un formulario en el propio formulario