Tratar con formularios

Otra de las características más potentes de PHP es la forma de gestionar formularios HTML. El concepto básico que es importante entender es que cualquier elemento de un formulario estará disponible automáticamente en sus scripts de PHP. Por favor, lea la sección del manual sobre Variables desde fuentes externas para obtener más información y ejemplos sobre cómo usar formularios con PHP. Observemos un ejemplo:

Ejemplo #1 Un formulario HTML sencillo

<form action="accion.php" method="post">
 <p>Su nombre: <input type="text" name="nombre" /></p>
 <p>Su edad: <input type="text" name="edad" /></p>
 <p><input type="submit" /></p>
</form>

No hay nada especial en este formulario. Es solamente un formulario HTML sin ninguna clase de etiqueta especial. Cuando el usuario rellena este formulario y oprime el botón de envío, se llama a la página accion.php. En este fichero se podría escribir algo así:

Ejemplo #2 Mostrar información de nuestro formulario

Hola <?php echo htmlspecialchars($_POST['nombre']); ?>.
Usted tiene <?php echo (int)$_POST['edad']; ?> años.

Un ejemplo del resultado de este script podría ser:

Hola José. Usted tiene 22 años.

Excepto las partes de htmlspecialchars() y de (int), debería ser obvio qué es lo que hace el código. htmlspecialchars() garantiza que cualquier carácter que sea especial en html se codifique adecuadamente, de manera que nadie pueda inyectar etiquetas HTML o Javascript en la página. El campo edad, ya que sabemos que es un número, podemos convertirlo a un valor de tipo integer que automáticamente se deshará de cualquier carácter no numérico. También se puede hacer lo mismo con PHP con la extensión filter. Las variables $_POST['nombre'] y $_POST['edad'] son establecidas automáticamente por PHP. Anteriormente hemos usado la superglobal $_SERVER; arriba introdujimos la superglobal $_POST, la cual contiene todos los datos de POST. Observe que el método de nuestro formulario es POST. Si hubiésemos usado el método GET, nuestra información estaría en su lugar en la superglobal $_GET. También se podría usar la superglobal $_REQUEST, si no le preocupa la fuente de los datos solicitados. Contiene toda la información de los datos de GET, POST y COOKIE mezclada.

En PHP, también puede tratar con entradas de XForms; aunque probablemente al principio se sienta cómodo con los formularios de HTML, los cuales están ampliamente respaldados. A pesar de que trabajar con XForms no es para principiantes, podrían interesarle. Si es así, en la sección de características hay una pequeña introducción a la manipulación de datos recibidos desde XForms.

add a note add a note

User Contributed Notes 12 notes

up
122
sethg at ropine dot com
11 years ago
According to the HTTP specification, you should use the POST method when you're using the form to change the state of something on the server end. For example, if a page has a form to allow users to add their own comments, like this page here, the form should use POST. If you click "Reload" or "Refresh" on a page that you reached through a POST, it's almost always an error -- you shouldn't be posting the same comment twice -- which is why these pages aren't bookmarked or cached.

You should use the GET method when your form is, well, getting something off the server and not actually changing anything.  For example, the form for a search engine should use GET, since searching a Web site should not be changing anything that the client might care about, and bookmarking or caching the results of a search-engine query is just as useful as bookmarking or caching a static HTML page.
up
20
Johann Gomes (johanngomes at gmail dot com)
4 years ago
Also, don't ever use GET method in a form that capture passwords and other things that are meant to be hidden.
up
12
Andy
2 years ago
Just a reminder about security: the chosen HTTP request verb (e.g. POST, GET) does not necessarily make the request "secure". Any information that is not transmitted over an encrypted channel (using SSL, i.e. HTTPS) is transmitted in plan text.

For secure transport of sensitive/private information over HTTP consider using SSL as this prevents eve's dropping of the information transmitted over HTTP.

[Edited by googleguy@php.net for clarity]
up
0
mail at syspoly dot in
19 hours ago
Learning PHP, MySQL, JavaScript, and CSS
    Programming PHP
    PHP and MySQL Web Development
    PHP for the Web: Visual QuickStart Guide
    The Joy of PHP
    PHP and MySQL for Dynamic Web Sites
    PHP Cookbook
    PHP & MySQL: The Missing Manual
up
-1
mail at pheunix dot co dot in
19 hours ago
<?php
if(isset($_POST['submit']))
{
$mail = $_POST['mail'];
$subject = $_POST['subject'];
$msg = $_POST['msg'];
$headers = 'From: System <noreply@example.com>';
$name=array($mail,$subject,$msg);
foreach (
$name as $name)
{
if (
ereg("^\<",$name)) {
echo
"<center>Invalid Characters:
<a href=\"javascript:history.go(-1)\">Go Back</a></center>"

Die();
}
if (
ereg("^\[",$name)) {
echo
"<center>Invalid Characters:
<a href=\"javascript:history.go(-1)\">Go Back</a></center>"

Die();
}
if (
ereg("^\$",$name)) {
echo
"<center>Invalid Characters:
<a href=\"javascript:history.go(-1)\">Go Back</a></center>"

Die();
}
if (
strlen($name) < 3) {
echo
"<center>Field must be at least 3 characters long:
<a href=\"javascript:history.go(-1)\">Go Back</a></center>"

Die();
}
if (
strlen($name) > 120) {
echo
"<center>Max Characters in Field: 120
<a href=\"javascript:history.go(-1)\">Go Back</a></center>"

Die();
}
}
mail($mail, $subject, $msg,$headers);
echo
"O.K.";
}else{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script language="JavaScript">
function validationEmail(maForm) {
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(maForm.mail.value)){
return (true)
}
alert("Invalid E-mail Address! Please re-enter.")
return (false)
}
</script>
</head>
<form name="maForm" action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="POST" onSubmit="return validationEmail(this)">
<input type=text name="mail" value="e-Mail"><br>
<input type=text name="subject" value="e-Mail subject"><br>
<input type=text name="msg" value="e-Mail message"><br>
<input type="submit" name="submit" value="submit">
</form>
<?php
}
?>
up
-7
mail at pheunix dot in
2 months ago
It's true, comments do not take up PROCESSING time, but they do take some PARSING time in case you are not using a compile cache of some kind.
up
-43
jerry4u at foxmail dot com
6 months ago
the difference of method GET and POST is really important.
up
-6
mail at syspoly dot in
19 days ago
its help ful.i m using this in my live project
syspoly.in
up
-22
mail at syspoly dot com
2 months ago
I have gone through the site php is the main concept of this blog.
otherwise its fine.
up
-19
mail at pheunix dot com
29 days ago
nice site well done author . for more details you can contact us

Web promotion company in India

www.pheunix.com
up
-134
behnam jaza faza
1 year ago
The note above says:

"Also see the import_request_variables() function. "

But dont:

This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 5.4.0.
up
-53
mail at pheunix dot com
2 months ago
I Have gone  through your post its all about coding . which is a compulsary part for making a website.

www.pheunix.com
To Top