Está en la página 1de 12

PHP manejo de formularios Mdulo 4

Mdulo 4
PHP manejo de formularios

ISIV-Educacin a Distancia Pag. 1


PHP manejo de formularios Mdulo 4

Lo ms importante tener en cuenta cuando se trata de formularios HTML y PHP es que cualquier elemento
de un formulario en una pgina HTML de forma automtica est a disposicin de sus scripts PHP.

Ejemplo
El ejemplo siguiente contiene un formulario HTML con dos campos de entrada y un botn de submit:
<html>
<body>

<form action="bienvenidos.php" method="post">


Nombre: <input type="text" name="fnombre" />
Edad: <input type="text" name="edad" />
<input type="submit" />
</form>

</body>
</html>

Cuando un usuario rellena el formulario de arriba y haga clic en el botn de envo, los datos del formulario se
enva a un archivo PHP, llamado "bienvenido.php":

"bienvenido.php" se parece a esto:


<html>
<body>

Bienvenido <?php echo $_POST["fnombre"]; ?>!<br />


Tienes <?php echo $_POST["edad"]; ?> aos.

</body>
</html>

La produccin podra ser algo como esto:


Bienvenido Juan!
Tienes 28 aos.

Las variables de PHP $ _GET y $ _POST se explicar en los captulos siguientes.

Formulario de Validacin
La entrada del usuario debe ser validado en el navegador siempre que sea posible (las secuencias de
comandos de cliente). La validacin del navegador es ms rpido y reduce la carga del servidor.

Usted debera considerar la validacin en el servidor, si la entrada del usuario se inserta en una base de
datos. Una buena manera de validar un formulario en el servidor es para enviar el formulario a s mismo, en
vez de saltar a una pgina diferente. Luego, el usuario recibir los mensajes de error en la misma pgina que
la forma. Esto hace ms fcil para descubrir el error.

ISIV-Educacin a Distancia Pag. 2


PHP manejo de formularios Mdulo 4

La variable $_GET
La variable predefinida $ _GET se utiliza para recoger los valores en un formulario con method = "get"

La informacin enviada desde un formulario con el mtodo GET es visible para todos (que se muestra en la
barra de direcciones del navegador) y tiene lmites en la cantidad de informacin a enviar.

Ejemplo
<form action="bienvenido.php" method="get">
Name: <input type="text" name="fnombre" />
Age: <input type="text" name="edad" />
<input type="submit" />
</form>

Cuando el usuario hace clic en el botn "Enviar", la URL enviada al servidor podra ser algo como esto:

http://www.localhost.com/bienvenido.php?fname=Pedro&edad=37

El "bienvenido.php" archivo ahora puede utilizar la variable $ _GET para recoger los datos del formulario (los
nombres de los campos del formulario ser automticamente las claves del matriz $ _GET):

Bienvenido <?php echo $_GET["fnombre"]; ?>.<br />


Tienes <?php echo $_GET["edad"]; ?> aos!

Al utilizar el mtodo = "get"?

Cuando se usa method = "get" en los formularios HTML, todos los nombres de las variables y los valores se
muestran en la URL.

Nota: Este mtodo no debe usarse al enviar contraseas u otra informacin confidencial!
Sin embargo, debido a que las variables se muestran en la URL, es posible marcar la pgina. Esto puede ser
til en algunos casos.

Nota: El mtodo get no es adecuado para los valores de variables muy grandes. No debe utilizarse
con valores superiores a 2000 caracteres.

La variable $_POST
La variable predefinida $ _POST se usa para recoger los valores de un formulario enviado con method =
"post".
La informacin enviada desde un formulario con el mtodo POST es invisible a los dems y no tiene lmites
en la cantidad de informacin a enviar.

Nota: Sin embargo, hay un nio de 8 Mb de tamao mximo para el mtodo POST, por defecto (se
puede cambiar mediante el establecimiento de la post_max_size en el archivo php.ini).

Ejemplo <form action="bienvenido.php" method="post">
Nombre: <input type="text" name="fnombre" />
Edad: <input type="text" name="edad" />
<input type="submit" />
</form>

ISIV-Educacin a Distancia Pag. 3


PHP manejo de formularios Mdulo 4

Cuando el usuario hace clic en el botn "Enviar", la direccin se ver as:

http://www.localhost.com/bienvenido.php

El "bienvenido.php" archivo ahora puede utilizar la variable $ _POST para recoger los datos del formulario
(los nombres de los campos del formulario ser automticamente las claves del matriz $ _POST):

Bienvenido <?php echo $_POST["fnombre"]; ?>!<br />


Tienes <?php echo $_POST["edad"]; ?> aos.

Al utilizar el mtodo = "post"?

La informacin enviada desde un formulario con el mtodo POST es invisible a los dems y no tiene lmites
en la cantidad de informacin a enviar.
Sin embargo, debido a que las variables no se muestran en la URL, no es posible marcar la pgina.

El PHP $_REQUEST variable


La variable $ _REQUEST predefinido incluye el contenido de ambos _GET $, $ _POST y $ _COOKIE.
La variable $ _REQUEST se puede utilizar para recopilar datos de formularios enviados con los dos mtodos
GET y POST.

Ejemplo
Bienvenido <?php echo $_POST["fnombre"]; ?>!<br />
Tienes <?php echo $_POST["edad"]; ?> aos.

Insertar archivos PHP


Puede insertar el contenido de un archivo PHP en otro archivo PHP para que el servidor ejecute con la
funcin include () o require ().
Las dos funciones son idnticas en todos los sentidos, excepto en el modo en que manejan los errores:

include () genera una advertencia, pero el guin seguir la ejecucin


require () genera un error fatal, y el script se detendr

Estas dos funciones se utilizan para crear funciones, encabezados, pies de pgina, o elementos que se
pueden reutilizar en varias pginas.
Del lado del servidor include ahorra mucho trabajo. Esto significa que usted puede crear un encabezado
estndar, pie de pgina o un archivo de men para todas sus pginas web. Cuando la cabecera debe ser
actualizada, slo se puede actualizar el archivo de inclusin, o cuando se agrega una nueva pgina a su sitio,
usted puede simplemente cambiar el archivo de men (en lugar de actualizar los enlaces en todas sus
pginas web).

ISIV-Educacin a Distancia Pag. 4


PHP manejo de formularios Mdulo 4

PHP funcin include ()


La funcin include () se hace con todo el contenido en un archivo especificado y lo incluye en el archivo
actual.

Si ocurre un error, la funcin include () genera una advertencia, pero el guin seguir la ejecucin.

Ejemplo 1
Suponga que tiene un archivo de cabecera estndar, llamado "header.php". Para incluir el archivo de
encabezado en una pgina, utilice la funcin include ():
<html>
<body>

<?php include("header.php"); ?>


<h1>Bienvenido a mi pagina!</h1>
<p>Algun texto.</p>

</body>
</html>
Ejemplo 2

Supongamos que tenemos un archivo de men estndar, llamado "menu.php", que se debe utilizar en todas
las pginas:
<a href="/index.php">Inicio</a>
<a href="/tutoriales.php">Tutoriales</a>
<a href="/referencias.php">Referencias</a>
<a href="/ejemplos.php">Ejemplos</a>
<a href="/acerca.php">Acerca de la pagina</a>
<a href="/contacto.php">Contactese</a>

Todas las pginas en el sitio web debe incluir el archivo de men. As es como se puede hacer:

<html>
<body>

<div class="menuizq">
<?php include("menu.php"); ?>
</div>

<h1>Bienvenido a mi pagina!.</h1>
<p>Algun texto.</p>

</body>
</html>

ISIV-Educacin a Distancia Pag. 5


PHP manejo de formularios Mdulo 4

Si nos fijamos en el cdigo fuente de la pgina anterior (en un navegador), que se ver as:

<html>
<body>

<div class="menuizq">
<a href="/index.php">Inicio</a>
<a href="/tutoriales.php">Tutoriales</a>
<a href="/referencias.php">Referencias</a>
<a href="/ejemplos.php">Ejemplos</a>
<a href="/acerca.php">Acerca de la pagina</a>
<a href="/contacto.php">Contactese</a>

</div>

<h1>Bienvenido a mi pagina!.</h1>
<p>Algun texto.</p>

</body>
</html>

PHP funcin require ()


La funcin require () es idntica a incluir (), excepto que controla los errores de forma diferente.

Si ocurre un error, la funcin include () genera una advertencia, pero el guin seguir la ejecucin. El require
() genera un error fatal, y el script se detendr.

<html>
Ejemplo de error funcin include () <body>

<?php
include("error.php");
echo "Hola Mundo!";
?>

</body>
</html>

Mensaje de error:
Warning: include(error.php) [function.include]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line 5

Warning: include() [function.include]:


Failed opening 'error.php' for inclusion
(include_path='.;C:\php5\pear')
in C:\home\website\test.php on line 5

Hola Mundo!

ISIV-Educacin a Distancia Pag. 6


PHP manejo de formularios Mdulo 4

Tenga en cuenta que la orden echo es ejecutado! Esto se debe a una advertencia de no detener la ejecucin
del script.

Ejemplo de error funcin require ()

Ahora, vamos a ejecutar el mismo ejemplo con la funcin require ().

<html>
<body>

<?php
require("error.php");
echo "Hola Mundo!";
?>

</body>
</html>

Mensaje de error:
Warning: require(error.php) [function.require]:
failed to open stream:
No such file or directory in C:\home\website\test.php on line 5

Fatal error: require() [function.require]:


Failed opening required 'error.php'
(include_path='.;C:\php5\pear')
in C:\home\website\test.php on line 5

La declaracin de eco no se ejecuta, ya que la ejecucin del script se detuvo despus de que el error fatal.

Se recomienda utilizar la funcin require () en lugar de include (), ya que los scripts no debe continuar
despus de un error.

Manejos de Archivos
Abrir un archivo
La funcin fopen () se utiliza para abrir archivos en PHP.

El primer parmetro de esta funcin contiene el nombre del archivo que se abrir y el segundo parmetro
especifica el modo en que el archivo debe ser abierto:
<html>
<body>

<?php
$file=fopen("bienvenido.txt","r");
?>

</body>
</html>

ISIV-Educacin a Distancia Pag. 7


PHP manejo de formularios Mdulo 4

El archivo puede ser abierto en uno de los modos siguientes:

Modos Descripcin
R Slo lectura. Comienza al principio del archivo.
r+ Lectura / Escritura. Comienza al principio del archivo.
Escriba solamente. Se abre y se borra el contenido de archivo, o crea un nuevo archivo
W
si no existe.
Lectura / Escritura. Se abre y se borra el contenido de archivo, o crea un nuevo archivo
w+
si no existe.
Un Anexar. Se abre y se escribe en el final del archivo o crea un nuevo archivo si no existe.
a+ Leer / Aadir. Conserva el contenido del archivo por escrito al final del archivo.
Escriba solamente. Crea un nuevo archivo. Devuelve FALSE y un error si el archivo ya
X
existe.
Lectura / Escritura. Crea un nuevo archivo. Devuelve FALSE y un error si el archivo ya
x+
existe.

Nota: Si la funcin fopen () no es capaz de abrir el archivo especificado, se devuelve 0 (falso).

Ejemplo
El siguiente ejemplo se genera un mensaje si la funcin fopen () no es capaz de abrir el archivo especificado:

<html>
<body>

<?php
$file=fopen("benvenido.txt","r") or exit("Error al abrir archivo!");
?>

</body>
</html>

Cierre de un archivo

El fclose () se utiliza para cerrar un archivo abierto:


<?php
$file = fopen("test.txt","r");

//algun codigo a ejecutar

fclose($file);
?>

Compruebe al final de su archivo

El feof () comprueba si el "fin de archivo" (EOF) ha sido alcanzado. El feof () es til para recorrer a travs de
los datos de longitud desconocida.

ISIV-Educacin a Distancia Pag. 8


PHP manejo de formularios Mdulo 4

Nota: Usted no puede leer los archivos abiertos en W, A, y el modo de x!

if (feof($file)) echo "End of file";

Lectura de un archivo lnea por lnea

Los fgets () se utiliza para leer una sola lnea de un archivo.

Nota: Despus de una llamada a esta funcin, el puntero de archivo se ha movido a la siguiente
lnea.

Ejemplo

El siguiente ejemplo lee un archivo lnea por lnea, hasta que al final del archivo que se
alcanza:

<?php
$file = fopen("bienvenido.txt", "r") or exit("Error al abrir!");
while(!feof($file))
{
echo fgets($file). "<br />";
}
fclose($file);
?>

Lectura de un personaje por personaje archivo


La funcin fgetc () se utiliza para leer un solo carcter de un archivo.

Nota: Despus de una llamada a esta funcin, el puntero del archivo se mueve al siguiente carcter.
Ejemplo

El siguiente ejemplo lee un carcter del archivo por su carcter, hasta el final del archivo se llega a:

<?php
$file=fopen("benvenido.txt","r") or exit("Error al abrir!");
while (!feof($file))
{
echo fgetc($file);
}
fclose($file);
?>

Crear un formulario subir archivo


Para permitir a los usuarios subir archivos de una forma puede ser muy til.

ISIV-Educacin a Distancia Pag. 9


PHP manejo de formularios Mdulo 4

Mira el siguiente formulario HTML para subir archivos:

<html>
<body>

<form action="subir_archivo.php" method="post"


enctype="multipart/form-data">
<label for="file">Archivo:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" valor="Submit" />
</form>

</body>
</html>

Observe lo siguiente acerca de la forma HTML anterior:

El atributo enctype de la etiqueta <form> especifica qu tipo de contenido que se utilizar al enviar
el formulario. "Multipart / form-data" se utiliza cuando se requiere un formulario de datos binarios,
tales como el contenido de un archivo, para ser cargado.
El type = "file" atributo de la etiqueta <input> especifica que la entrada debe ser procesada como un
archivo. Por ejemplo, cuando se ve en un navegador, habr un botn de exploracin junto al campo
de entrada.

Nota: Permitir a los usuarios subir archivos es un gran riesgo de seguridad. Slo permita que los
usuarios de confianza para llevar a cabo la carga de archivos.

Crear el Script de carga


El "subir_archivo.php" archivo contiene el cdigo para cargar un archivo:

<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Subir: " . $_FILES["file"]["nombre"] . "<br />";
echo "Tipo: " . $_FILES["file"]["tipo"] . "<br />";
echo "Tamao: " . ($_FILES["file"]["tamao"] / 1024) . " Kb<br />";
echo "Guardado en: " . $_FILES["file"]["tmp_nombre"];
}
?>

Al utilizar el global de PHP array $ _FILES puede cargar los archivos desde un equipo cliente con el servidor
remoto.

El primer parmetro es el nombre del formulario de entrada y el segundo ndice puede ser "nombre", "tipo",
"tamao", "tmp_name" o "error". De esta manera:

$ _FILES ["Archivo"] ["nombre"] - el nombre del archivo cargado.

ISIV-Educacin a Distancia Pag. 10


PHP manejo de formularios Mdulo 4

$ _FILES ["Archivo"] ["tipo"] - el tipo del archivo cargado.


$ _FILES ["Archivo"] ["tamao"] - el tamao en bytes del archivo subido.
$ _FILES ["Archivo"] ["tmp_nombre"] - el nombre de la copia temporal del archivo almacenado en el
servidor.
$ _FILES ["Archivo"] ["error"] - el cdigo de error resultante de la carga de archivos.

Esta es una manera muy sencilla de subir archivos. Por razones de seguridad, se debe aadir las restricciones
a lo que el usuario est autorizado a cargar.

Las restricciones al subir


En esta secuencia de comandos que aadir algunas restricciones a la carga de archivos. El usuario slo puede
cargar archivos GIF o JPEG y el tamao del archivo debe ser de menos de 20 kb..:

<?php
if ((($_FILES["file"]["tipo"] == "image/gif")
|| ($_FILES["file"]["tipo"] == "image/jpeg")
|| ($_FILES["file"]["tipo"] == "image/pjpeg"))
&& ($_FILES["file"]["tamao"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["nombre"] . "<br />";
echo "Type: " . $_FILES["file"]["tipo"] . "<br />";
echo "Size: " . ($_FILES["file"]["tamao"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_nombre"];
}
}
else
{
echo "Archivo invalido";
}
?>

Nota: Para IE reconozca los archivos jpg el tipo debe ser pjpeg, para Firefox debe ser JPEG.

Guardar el archivo de subida


Los ejemplos anteriores crear una copia temporal de los archivos cargados en la carpeta temporal de PHP en
el servidor.

Los archivos temporales de copiado desaparece cuando el programa termina. Para guardar el archivo subido
tenemos que copiarlo en una ubicacin diferente:

ISIV-Educacin a Distancia Pag. 11


PHP manejo de formularios Mdulo 4

<?php
if ((($_FILES["file"]["tipo"] == "image/gif")
|| ($_FILES["file"]["tipo"] == "image/jpeg")
|| ($_FILES["file"]["tipo"] == "image/pjpeg"))
&& ($_FILES["file"]["tamao"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["nombre"] . "<br />";
echo "Type: " . $_FILES["file"]["tipo"] . "<br />";
echo "Size: " . ($_FILES["file"]["tamao"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_nombre"] . "<br />";

if (file_exists("upload/" . $_FILES["file"]["nombre"]))
{
echo $_FILES["file"]["nombre"] . " ya existe. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_nombre"],
"upload/" . $_FILES["file"]["nombre"]);
echo "Guardado en: " . "subidos/" . $_FILES["file"]["nombre"];
}
}
}
else
{
echo "Archivo Invalido";
}
?>

La secuencia de comandos comprueba si el archivo ya existe, si no lo hace, se copia el archivo a la carpeta


especificada.

Nota: En este ejemplo se guarda el archivo en una nueva carpeta llamada "carga".

ISIV-Educacin a Distancia Pag. 12