Formularios

Que son los formularios

  • Para interactuar con el servidor.
    • De pagina web que tiene formulario a página web que procesa el formulario.
    • En el servidor está el PHP que procesa la información que llega.
    • Un botón del formulario ejecuta el submit
  • el tag FORM define el inicio y fin del formulario. No lo puedo meter donde me de la gana, porque quedaria mal formado.
    <form action="xxx.php" method="post">
    <input type="text" name="edad">
    <input type="submit" value="aceptar">
    </form>
  • Dos métodos para trabajar con formularios
    • GET: ocurre en la URL - los datos son visibles para el usuario - usarlo cuando no hay modificaciones en la 'máquina de estados'.
    • POST: ocurre en la trastienda - no son visibles en la URL
  • Por omisión
    • Si no pongo ACTION se lo envía a si mismo.
    • Si no pongo metodo... se usa GET
  • Si el input tipo submit no esta dentro de un FORM no hace nada.
  • Puedo tener tantos formularios como quiera en una página web.
  • Para leer en el servidor
    • $_REQUEST es todo lo que viaja via GET o POST. No lo usaremos.
    • Siempre usaremos $_POST y $_GET. Con $GET y $POST se sabe de donde vienen. Por ejemplo, no voy a inyectar nada del SQL que venga de un GET. Voy a confiar de los datos de POST una vez limpiados y escapados.

Campos de datos que se pueden enviar desde el formulario al servidor


Text

<input type="text" name="cadena" value="valor por defecto" size="20" />
  • size es tamaño máximo en caracteres, no el tamaño de CSS de la caja.

Radio

<input type="radio" name="sexo" value="M" checked />Mujer
  • viaja el value

Checkbox

<input type="checkbox" name="extras[]" value="garaje" checked />Garaje
<input type="checkbox" name="extras[]" value="piscina" />Piscina
  • array[] indica que puede ser selección múltiple.
  • En php lo consume un foreach.

Hidden

<input type="hidden" name="username" value="xxx" />
  • para enviar información en el formulario que ni se ve por pantalla ni se puede modificar

Password

<input type="password" name="username" />
  • sin valores predeterminados
  • aparecen * en el text box

Select (combo)

<select name="color">
 <option value="rojo" selected>Rojo</option>
 <option value="verde">Verde</option>
</select>
  • así solo puedo seleccionar 1 opción
<select multiple  size="3" name="idioma[]">
 <option value="ingles" selected>Ingles</option>
 <option value="frances">Frances</option>
 <option value="ruso">Ruso</option>
</select>
  • size: número de opciones que se ven
  • con CTRL puedo seleccionar mas de una

TextArea

<textarea cols="50" rows="4" name="comentario">valor por defecto</textarea>
  • columnas y filas en caracteres del tamaño de la caja. El tamaño deberá ir al CSS.

File

<input type="file" name="fichero" />
  • para subir un fichero al servidor
  • requiere <form action="procesa.php" method="post" enctype="multipart/form-data">
  • el texto del botón 'examinar' no lo puedo cambiar
  • esto vendrá en $_FILES (no en $_GET ni $_POST).

Submit

 <input type="submit" value="aceptar" />
  • Ejecutará el action indicado en form
  • value aparecerá como texto dentro del botón

Button

<input type="button" onClick="script();" value="boton"/>
  • aparece como el botón de submit pero en vez de lanzar action, ejecuta el script (javascript) indicado.
  • para que haga lo mismo que el input type=submit:
    <input type="button" onClick="submit(); return false;" value="boton"/>
  • Nota: return false se pone para evitar que se se ejecute la opción por defecto del form, que es que se produzca un Postback
  • También existe el tag <button> que hace lo mismo pero mermite poner imágenes en el botón, y más cosas.



Como llegan los valores a la página


  • $_POST["nombre"];




Ver ejemplos en