Está en la página 1de 12

PHP manejo de formularios – Módulo 4

Módulo 4
PHP manejo de formularios

ISIV-Educación a Distancia Pag. 1


PHP manejo de formularios – Módulo 4

Lo más importante tener en cuenta cuando se trata de formularios HTML y PHP es que cualquier elemento
de un formulario en una página HTML de forma automática está a disposición de sus scripts PHP.

Ejemplo
El ejemplo siguiente contiene un formulario HTML con dos campos de entrada y un botón 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 botón de envío, los datos del formulario se
envía 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"]; ?> años.

</body>
</html>

La producción podría ser algo como esto:


Bienvenido Juan!
Tienes 28 años.

Las variables de PHP $ _GET y $ _POST se explicará en los capítulos siguientes.

Formulario de Validación
La entrada del usuario debe ser validado en el navegador siempre que sea posible (las secuencias de
comandos de cliente). La validación del navegador es más rápido y reduce la carga del servidor.

Usted debería considerar la validación 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 página diferente. Luego, el usuario recibirá los mensajes de error en la misma página que
la forma. Esto hace más fácil para descubrir el error.

ISIV-Educación a Distancia Pag. 2


PHP manejo de formularios – Módulo 4

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

La información enviada desde un formulario con el método GET es visible para todos (que se muestra en la
barra de direcciones del navegador) y tiene límites en la cantidad de información 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 botón "Enviar", la URL enviada al servidor podría 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á automáticamente las claves del matriz $ _GET):

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


Tienes <?php echo $_GET["edad"]; ?> años!

Al utilizar el método = "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 método no debe usarse al enviar contraseñas u otra información confidencial!
Sin embargo, debido a que las variables se muestran en la URL, es posible marcar la página. Esto puede ser
útil en algunos casos.

 Nota: El método 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 información enviada desde un formulario con el método POST es invisible a los demás y no tiene límites
en la cantidad de información a enviar.

 Nota: Sin embargo, hay un niño de 8 Mb de tamaño máximo para el método 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-Educación a Distancia Pag. 3


PHP manejo de formularios – Módulo 4

Cuando el usuario hace clic en el botón "Enviar", la dirección 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á automáticamente las claves del matriz $ _POST):

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


Tienes <?php echo $_POST["edad"]; ?> años.

Al utilizar el método = "post"?

La información enviada desde un formulario con el método POST es invisible a los demás y no tiene límites
en la cantidad de información a enviar.
Sin embargo, debido a que las variables no se muestran en la URL, no es posible marcar la página.

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 métodos
GET y POST.

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

Insertar archivos PHP


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

 include () genera una advertencia, pero el guión seguirá la ejecución


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

Estas dos funciones se utilizan para crear funciones, encabezados, pies de página, o elementos que se
pueden reutilizar en varias páginas.
Del lado del servidor include ahorra mucho trabajo. Esto significa que usted puede crear un encabezado
estándar, pie de página o un archivo de menú para todas sus páginas web. Cuando la cabecera debe ser
actualizada, sólo se puede actualizar el archivo de inclusión, o cuando se agrega una nueva página a su sitio,
usted puede simplemente cambiar el archivo de menú (en lugar de actualizar los enlaces en todas sus
páginas web).

ISIV-Educación a Distancia Pag. 4


PHP manejo de formularios – Módulo 4

PHP función include ()


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

Si ocurre un error, la función include () genera una advertencia, pero el guión seguirá la ejecución.

Ejemplo 1
Suponga que tiene un archivo de cabecera estándar, llamado "header.php". Para incluir el archivo de
encabezado en una página, utilice la función 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ú estándar, llamado "menu.php", que se debe utilizar en todas
las páginas:
<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 páginas 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-Educación a Distancia Pag. 5


PHP manejo de formularios – Módulo 4

Si nos fijamos en el código fuente de la página 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 función require ()


La función require () es idéntica a incluir (), excepto que controla los errores de forma diferente.

Si ocurre un error, la función include () genera una advertencia, pero el guión seguirá la ejecución. El require
() genera un error fatal, y el script se detendrá.

<html>
Ejemplo de error función 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-Educación a Distancia Pag. 6


PHP manejo de formularios – Módulo 4

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

Ejemplo de error función require ()

Ahora, vamos a ejecutar el mismo ejemplo con la función 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 declaración de eco no se ejecuta, ya que la ejecución del script se detuvo después de que el error fatal.

Se recomienda utilizar la función require () en lugar de include (), ya que los scripts no debe continuar
después de un error.

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

El primer parámetro de esta función contiene el nombre del archivo que se abrirá y el segundo parámetro
especifica el modo en que el archivo debe ser abierto:
<html>
<body>

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

</body>
</html>

ISIV-Educación a Distancia Pag. 7


PHP manejo de formularios – Módulo 4

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

Modos Descripción
R Sólo 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 / Añadir. 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 función fopen () no es capaz de abrir el archivo especificado, se devuelve 0 (falso).

Ejemplo
El siguiente ejemplo se genera un mensaje si la función 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 través de
los datos de longitud desconocida.

ISIV-Educación a Distancia Pag. 8


PHP manejo de formularios – Módulo 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 línea por línea

Los fgets () se utiliza para leer una sola línea de un archivo.

 Nota: Después de una llamada a esta función, el puntero de archivo se ha movido a la siguiente
línea.

Ejemplo

El siguiente ejemplo lee un archivo línea por línea, 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 función fgetc () se utiliza para leer un solo carácter de un archivo.

 Nota: Después de una llamada a esta función, el puntero del archivo se mueve al siguiente carácter.
Ejemplo

El siguiente ejemplo lee un carácter del archivo por su carácter, 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-Educación a Distancia Pag. 9


PHP manejo de formularios – Módulo 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 botón de exploración junto al campo
de entrada.

 Nota: Permitir a los usuarios subir archivos es un gran riesgo de seguridad. Sólo 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 código 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 "Tamaño: " . ($_FILES["file"]["tamaño"] / 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 parámetro es el nombre del formulario de entrada y el segundo índice puede ser "nombre", "tipo",
"tamaño", "tmp_name" o "error". De esta manera:

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

ISIV-Educación a Distancia Pag. 10


PHP manejo de formularios – Módulo 4

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


 $ _FILES ["Archivo"] ["tamaño"] - el tamaño 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 código de error resultante de la carga de archivos.

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

Las restricciones al subir


En esta secuencia de comandos que añadir algunas restricciones a la carga de archivos. El usuario sólo puede
cargar archivos GIF o JPEG y el tamaño 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"]["tamaño"] < 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"]["tamaño"] / 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 ubicación diferente:

ISIV-Educación a Distancia Pag. 11


PHP manejo de formularios – Módulo 4

<?php
if ((($_FILES["file"]["tipo"] == "image/gif")
|| ($_FILES["file"]["tipo"] == "image/jpeg")
|| ($_FILES["file"]["tipo"] == "image/pjpeg"))
&& ($_FILES["file"]["tamaño"] < 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"]["tamaño"] / 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-Educación a Distancia Pag. 12

También podría gustarte