Marcofbb Noticias y Artículos Webmasters


Envío de datos de un formulario con PHP

  • 15/02/2011
  • 1:09 am
  • marcofbb

En esta clase vamos a hablar del envío de datos de un formulario.

El proceso que se lleva a cabo para el manejo de formularios requiere 2 etapas, una es donde esta el formulario y la otra donde esta lo que procesa los datos del formulario. Esto se puede hacer en 2 páginas o hacer las 2 etapas en una sola.

En el ejemplo que vamos a usar se van a procesar los datos en 2 páginas diferentes así no se confunden.

Suponemos que tenemos un formulario que nos pide ingresar nuestro nombre algo bien simple

<html> 
  <head> 
  <title>Formulario de entrada del dato</title> 
  </head> 
  <body>
<form method="post" action="pagina2.php"> 
  Ingrese su nombre: 
  <input type="text" name="nombre"> 
  <br> 
  <input type="submit" value="confirmar"> 
  </form>
</body> 
</html>

Los tags <form> y </form> nos permiten definir el formulario en la página. Dentro de <form> obligatoriamente hay que ingresar 2 propiedades que son action y method. La primera, action, indica el nombre del archivo que procesara los datos enviados del form al apretar el boton (submit). La propiedad method es como se codifican estos datos para enviarlos, pueden ser mediante POST y GET (Normalmente los datos de un formulario se envían vía POST). Mediante POST se envía la información en forma oculta. En cambio con el metodo GET la información nos va a aparecer en la url del sitio.

Para crear un cuadro de texto para el ingreso del nombre debemos definir un objeto de tipo “text” y darle un nombre:

<input type="text" name="nombre">

La propiedad type nos permite definir el tipo de control y con la propiedad name indicamos el nombre del control.
Por último todo formulario tiene un botón de tipo submit:

<input type="submit" value="confirmar">

También utilizamos la marca input pero en la propiedad type indicamos que se trata de un botón de envio de datos. En la propiedad value indicamos el texto que queremos que aparezca en el botón.

Ahora necesitamos una página para procesar los datos del formulario que se tiene que llamar de la misma manera que pusimos la propiedad action del fomulario, en este ejemplo pagina2.php.

<html> 
  <head> 
  <title>Captura de datos del form</title> 
  </head> 
  <body>
<?php 
  echo "El nombre ingresado es:"; 
  echo $_POST['nombre']; 
  ?>
</body> 
</html>

Para acceder al dato del formulario mediante PHP utilizamos $_POST o $_GET, en este caso $_POST y entre corchetes y comillas ['Acá nombre del input'] ponemos le nombre del input que deseamos tomar los datos (dicho nombre es sensible a mayúsculas y minúsculas).

Esta clase no termine acá, pero para no hacer la clase tan larga prosigo mañana. Quiero agradecer a PHPYA por guiarme de alguna manera a las palabras correctas para explicar esta clase.

Hilo donde están todos los artículos para aprender PHP

Posts Relacionados

Total de Comentarios: 14

Avatar
15/02/2011
1:11 am

[...] condicional (if/elseif/else) Clase 4: Tipos de bucles (while, Do while, for y foreach) Clase 5: Envío de datos de un formulario MeneameBitacorasRedditDeliciousGoogle [...]

Avatar
15/02/2011
5:36 pm

[...] This post was mentioned on Twitter by djmixseba, Marco Fernando. Marco Fernando said: Envío de datos de un formulario con PHP http://goo.gl/fb/ySprT [...]

Avatar
21/02/2011
4:14 pm

:D

Avatar
Edwin
22/02/2011
8:02 pm

Excelente marco, gracias por estar haciendo esto para la gente que visita tu web ;)

Avatar
manuel luna
17/03/2011
9:37 pm

men andube poniendo el codigo que me pasaste para el formulario el que me dijiste que remplazara el echo por local y la pagina a donde te dijire al enviar el formulario

aki pongo para ver si me puedes ayudar :) mira el codigo:

<?php
// Para que ande este código php tienen que tener el hosting activado la funcion mail() activada
$mail='starwebservice@hotmail.com'; // Ingresa tu correo electronico
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];
# Esto es lo que va a aparecer en el mail cuando te llega
$message = "
nombre: ".$nombre."
email: ".$email."
mensaje: ".$mensaje."";
# Cambiar Formulario de Consulta por el asunto del mail, ejemplo: contacto desde mi web
if (mail($mail,"Mensaje desde Mi Web",$message, "From: ".$nombre." “)){
echo “Email enviado correctamente”; }
else {
echo “Se produjo un error y no se pudo enviar el mail”; }

/* validacion con php */

function valida_email($email){
if(eregi(“^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$”, $email))
return true;
else
return false;
}
$mail = “mail@example.com”;
if(valida_email($mail))
{
echo “”;
} else {
echo “El mail NO es valido”;
}
?>

Avatar
17/03/2011
11:59 pm

<?php
function valida_email($email){
if(eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email))
return true;
else
return false;
}
// Para que ande este código php tienen que tener el hosting activado la funcion mail() activada
$mail='starwebservice@hotmail.com'; // Ingresa tu correo electronico
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$mensaje = $_POST['mensaje'];
if(valida_email($email))
{
# Esto es lo que va a aparecer en el mail cuando te llega
$message = "
nombre: ".$nombre."
email: ".$email."
mensaje: ".$mensaje."";
# Cambiar Formulario de Consulta por el asunto del mail, ejemplo: contacto desde mi web
if (mail($mail,"Mensaje desde Mi Web",$message, "From: ".$nombre." ")){
header("Location: enviado-correctamente.html"); }
else {
header("Location: mail-novalido.html"); }
} else {
echo "El mail NO es valido";
}
?>

Tenes que crear 3 archivos, enviado-correctamente.html, error-mail.html, mail-novalido.html, para que dependiendo del resultado que te de tu script te redirecciona a unas de esas 3 URL. En enviado-correctamente.html podes poner Gracias por contactarse, en error-mail.html podes poner Error al enviar el mail, y en mail-novalido.html podes poner El mail ingresado, no es valido

Avatar
Manuel Luna
18/03/2011
1:06 am

orale muchas gracias por ayudarme :)
ahorita me pruebo el codigo

Avatar
20/07/2011
12:55 pm

Hola, muy bueno el tuto, solo que todos los datos me llegan en el asunto del mail, y no encuentro como arreglarlo

muchas gracias

Avatar
20/07/2011
5:51 pm

déjame el código que usas, el error esta en la linea mail(

Avatar
21/07/2011
9:36 am

comparto el PHP para q sirva a otros, ya lo arregle…

Avatar
21/07/2011
9:38 am

Avatar
21/07/2011
2:04 pm

Por favor Ramiro, parsea el código en

http://www.blogcrowds.com/resources/parse_html.php

y luego publica lo gracias

Saludos

Avatar
21/07/2011
2:15 pm

codigo HTML

<form method="post" action="envia.php" id="form" name="form">
<table width="90%">
<tr>
<td align="right" width="25%"><label>Apellido-Nombre:</label></td>
<td width="70%"><input type="text" id="apel" name="apel" size="50" maxlength="50" /></td>
</tr>
<tr>
<td align="right" width="20%"><label>Email :</label></td>
<td width="70%"><input type="text" id="email" name="email" size="50" maxlength="50" /></td>
</tr>
<tr>
<td align="right" width="20%"><label>Teléfono :</label></td>
<td width="70%"><input type="text" id="telefono" name="telefono" size="30" maxlength="40" /></td>
</tr>
<tr>
<td align="right" width="20%" align="top"><label>Comentarios :</label></td>
<td width="70%"><textarea name="comentario" id="comentario" rows="8" cols="38"></textarea></td>
</tr>
<tr>
<td width="20%">&nbsp;</td>
<td width="70%"><input type="submit" name="submit" value="Enviar Formulario" />&nbsp;&nbsp;&nbsp;
<input type="reset" name="submit" value="Borrar" /></td>
</tr>
</table>
</form>

Avatar
21/07/2011
2:17 pm

envia php – solo falta agregar las validaciones

<?php

$email = $_POST['email'];
$apel = $_POST['apel'];
$telefono = $_POST['telefono'];
$comentario = $_POST['comentario'];
$thank = "gracias.html";

$to = "tumail@tumail.com";

$message = "Nuevo Mensaje: ".$apel.", ".$email.",Tel:".$telefono."nn";
$message .= "$comentario";
$headers = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=iso-8859-1rn";
$headers = "From: ".$email."";

if(mail($to,"Mensaje desde Mi Web",$message, $headers)) Header ("Location: $thank");

?>

Enviar Comentario

(*)

(*)