Procesar variables de formularios. POST en PHP

  • 01 de enero de 2001
  • Valoración:
  • 43 Comentarios
  • Manuales de PHP
Veremos cómo transferir variables con PHP, de una página a otra por medio de formularios, lo que se conoce habitualmente por POST.
Este tipo de transferencia es de gran utilidad ya que nos permite interaccionar directamente con el usuario.

El proceso es similar al explicado para las URLs. Primeramente, presentamos una primera página con el formulario clásico a rellenar y las variables son recogidas en una segunda página que las procesa:

Nota: No siempre se definen automáticamente las variables recibidas por el formulario en las páginas web, depende de una variable de configuración de PHP: register_globals, que tiene que estar activada para que así sea. Ver comentarios del artículo al final de la página para más información.

<HTML>
<HEAD>
<TITLE>formulario.html</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="destino2.php">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT" NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

<HTML>
<HEAD>
<TITLE>destino2.php</TITLE>
</HEAD>
<BODY>
<?
echo "Variable $nombre: $nombre <br>n";
echo "Variable $apellidos: $apellidos <br>n"
?>
</BODY>
</HTML>

Ejecutar ejemplo

$HTTP_POST_VARS

Recordamos que es posible recopilar en una variable tipo array el conjunto de variables que han sido enviadas al script por este método a partir de la variable de sistema $HTTP_POST_VARS.

echo "Variable $nombre: " . $HTTP_POST_VARS["nombre"] . "<br>n";

Nota: Aunque podamos recoger variables con este array asociativo o utilizar directamente las variables que se definen en nuestra página, resulta más seguro utilizar $HTTP_POST_VARS por dos razones, la primera que así nos aseguramos que esa varible viene realmente de un formulario y la segunda, que así nuestro código será más claro cuando lo volvamos a leer, porque quedará especificado que esa variable estamos recibiéndola por un formulario.

$_POST

A partir de PHP 4.1.0 se pueden recoger las variables de formulario utilizando también el array asociativo $_POST, que es el mismo que $HTTP_POST_VARS, pero más corto de escribir.

Ejemplo de restricción de acceso por edad

Para continuar aportando ejemplos al uso de formularios vamos a realizar una página que muestra solicita la edad del visitante y, dependiendo de dicha edad, permita o no visualizar el contenido de la web. A los mayores de 18 años se les permite ver la página y a los menores no.

El ejemplo es muy sencillo y no valdría tal cual está para utilizarlo a modo de una verdadera restricción de acceso. Únicamente nos sirve para saber cómo obtener datos de un formulario y como tratarlos para realizar una u otra acción, dependiendo de su valor.

La página del formulario, que hemos llamado edad.php tendría esta forma:

<html>
<head>
  <title>Restringir por edad</title>
</head>

<body>

<form action="edad2.php" method="post">
Escribe tu edad: <input type="text" name="edad" size="2">
<input type="submit" value="Entrar">
</form>

</body>
</html>

Esta es una página sin ningún código PHP, simplemente tiene un formulario. Fijémonos en el action del formulario, que está dirigido hacia una página llamada edad2.php, que es la que recibirá el dato de la edad y mostrará un contenido u otro dependiendo de ese valor. Su código es el siguiente:

<html>
<head>
   <title>Restringir por edad</title>
</head>

<body>

<?
$edad = $_POST["edad"];
echo "Tu edad: $edad<p>";

if ($edad < 18) {
   echo "No puedes entrar";
}else{
   echo "Bienvenido";
}
?>
</body>
</html>

Esperamos que este otro código tampoco resulte extraño. Simplemente se recibe la edad, utilizando el array $_POST. Luego se muestra la edad y se ejecuta una expresión condicional en función de que la edad sea menor que 18. En caso positivo (edad menor que 18), se muestra un mensaje que informa de que no se deja acceder al página. En caso negativo (mayor o igual a 18) se muestra un mensaje de bienvenida.

Podemos ver el ejemplo en funcionamiento.

Autor

Rubén Alvarez

Redactor de DesarrolloWeb.com

Comentarios

Mon

25/12/2001
He copiado tal cual estos dos ejemplos en dos archivos de mi directorio htdocs (tal y como hago con todos mis documentos php) y al ejecutarlo me sale la página formulario.html tal y como es de esperar, pero en la página destino2.php no me sale el valor de las variables (sólo me sale el texto de nombre y apellidos).
¿A caso tengo que activar algo o tener alguna librería o extensión activada para que esto me funcione?

RESPUESTA:

Pues si que hay que configurarlo en determinados casos, porque en ocasiones no viene hecho por defecto. Para ello debes acceder al archivo php.ini.

La variable que tienes que configurar es "register_globals" (se le asigna "on" o bien "off") que, si está activada, la información de entrada de GET, POST y de las cookies se declara automáticamente como variables que se ueden utilizar directamente. Además, se puede encontrar en las matrices asociativas $HTTP_GET_VARS,$HTTP_POST_VARS y $HTTP_COOKIE_VARS respectivamente.

Alberto Luis Garcia

11/5/2002
Estuve estudiando el codigo de la pagina y esta muy bien, el problema se presenta es en el archivo php.ini, en el cual se encuentra la instruccion register_globals = Off, he aqui el problema, esto esta impidiendo el paso de variables globales, por lo tanto se debe habilitar o activar de la siguiente forma: register_globals = On, luego salvar los cambios y verificar otra vez las aplicaciones que te muestran error.

para hallar el archivo php.ini utiliza la busqueda en el sistema y luego realiza los pasos dichos anteriormente.

antonio borquez

30/5/2002
¿como puedo procesar varios formularios de una sola vez con PHP?,si no se puede en PHP en que otro lenguaje. Esta duda me surge porque estoy desarrollando un formulario tipo orden de compra en cual incluye un numero variable de detalles(articulos) y tuve que separarlo en dos frames para visualizarlo en forma completa; pero para procesarlos tengo que ocupar 2 botones SUBMIT..

Posible solución:

Que yo sepa, no puedes enviar a una página dos formularios... pero se me ocurre que copies el contenido de un formulario en el otro dinámicamente con Javascript en el cliente y que mandes únicamente un formulario, el que guarda sus datos y la copia de lo que había en el otro formulario.

Para ello, en el formulario donde copiarás los datos del otro formulario coloca tantos campos hidden como campos debes copiar. Luego, con el evento onsubmit de javascript detectas el momento en el que envías el formulario "grande" y copias todos los datos del otro formulario, accediendo, en tu caso, por la jerarquía de objetos al otro frame y al formulario que deseas copiar.

Algún día puede que expliquemos esto detalladamente.

cesar

17/7/2002
Muchisimas gracias por el apunte de cambiar la variable register_globals a on, ya me estaba volviendo loco. Muchas gracias

Adhemar

16/8/2002
Existe un grave problemilla con la configuracion de la variable register globals en ON ya que en su pagina web PHP recomienda que la dejemos en OFF y utilicemos funciones y variable predefinidas conocidas como SUPERGLOBALS. Esto se aplica para versiones 4.20+.

He aqui la pagina: www.php.net/manual/en/configuration.php#ini.register-globals

Chau

Cesar DE Chile

23/8/2002
Estimados... y para este mismo ejemplo, como lo puedo hacer para que esas variables del formulario html queden en otro formulario y no en una pagina normal? como deberia crear la pagina2? gracias

RESPUESTA:

Lo que tendrias que hacer es crear tu formulario en html como haces habitualmente, colocando el valor recibido por el formulario precedente como atributo "value".
Por ejemplo:
<INPUT TYPE="TEXT" NAME="apellidos" value="<?echo $apellidos?>">

Tienes un ejemplo desarrollado de esto en el siguiente articulo:
http://www.desarrolloweb.com/articulos/350.php?manual=14

Cesar

06/10/2002
Excelente los ejemplos. Tengo un problema. De una pagina ingreso.htm por medio de formulario capturo datos que quiero pasarlo a otra que tiene 3 marcos(frames). No puedo pasar esos datos a cada una de las paginas que tienen esos tres marcos.

RESPUESTA

Si quieres que el formulario se envíe a un marco (o frame) que no es el que está el formulario, debes utilizar el atributo target en la etiqueta form, del mismo modo que lo utilizas en los enlaces.

Si lo que deseas es pasar la información a tres marcos distintos, deberías utilizar Javascript. En el formulario, en lugar de colocar un botón de submit, colocas un botón normal que, al pulsarlo, se llame a una función javascript que mande los datos a los tres marcos. Eso lo consigues con un código parecido a este:

<script>
//Digamos que el formulario se llama form1
//Digamos que los frames se llaman f1, f2 y f3
document.form1.target="f1"
document.form1.submit()
document.form1.target="f2"
document.form1.submit()
document.form1.target="f3"
document.form1.submit()
</script>

flipis

07/12/2002
En teoría hay tres métodos de recoger variables desde un formulario:
  1. Activando register_globals = On en el fichro php.ini. En este caso, un campo llamado "nombre", el el formulario, sería referido como $nombre en el script que recibe el formulario.
  2. En php 4.1.1 y anteriores, usamos los arrays asociativos (que tienen índices de texto en vez de índices numéricos), $HTTP_POST_VARS[], $HTTP_GET_VARS[], $HTTP_COOKIE_VARS[], $HTTP_SESSION_VARS[]
    Así, en el ejemplo anterior, nos referiríamos a $HTTP_POST_VARS["nombre"] o a $HTTP_GET_VARS["nombre"]
    Las mayúculas son imprescindibles, no vale $http_post_vars[]
  3. En php 4.1.2 y posteriores, hay unso nuevos arrays, que se comprotan más o menos igual que los anteriroes. Son $_POST[], $_GET[], $_SESSION[], $_COOKIE[]
    Así, en nuestro ejemplo, sería $_POST["nombre"] o $_GET["nombre"]
Espero que te ayude

fLIPIS (www.flipis.net)

Alejandro Palacios

11/2/2003
el hecho de cambiar register_globals a modo "on" , ¿Como puede ser afectada la seguridad?

RESPUESTA

Si las variables que llegan por un formulario se declaran automáticamente en la página podría ocurrir que un visitante "avispado" modificase a mano la lista de variables pasadas por la URL con intención de crear alguna variable necesaria para realizar algún tipo de acción, posiblemente no autorizada, en nuestro sitio web.

No se si la idea queda clara, pero en el supuesto de que nosotros estuviéramos utilizando una variable de sesión, llamada autorizado y con valor “si”, para saber si un usuario se ha autentificado correctamente, un posible atacante podría introducirla a través de la URL.

www.tudominio.com/pagina.php?autorizado=si

El tema es que, por motivos de seguridad, se recomienda acceder a cada variable de servidor (Variables de sesión, de fomularios, pasadas en la URL, etc.) indicando las vías por las que ha sido declarado, por ejemplo:

HTTP_POST_VARS
HTTP_GET_VARS …

Aunque a partir de determinada versión de PHP se puede acceder también por las abreviaciones:

_GET
_SESSION
_COOKIE
...

javi

24/6/2003
Quería hacer un comentario sobre el $_POST y el $_GET, que espero sirva de ayuda para alguno. La cuestion es que estos pueden ser usados desde cualquier funcion o metodo sin declararlos como globals :) cosa que con los $HTTP_GET_VARS, $HTTP_POST_VARS no se podía.

Ramón Sánchez

24/10/2003
Cuando se vaya a modificar el fichero php.ini para poner la variable register_globals = On debéis tener la precaución de además de hacerlo en el directorio de la instalación del php, después volver a copiar el fichero php.ini en el directorio de sistema (Windows, WinNT,...)que es de donde realmente se activa.
Si sólo la activas en el directirio de instalación es como el que tenía un tío en Graná, que ni tenía tío ni tenía na. Salu2.

Spikemxl

27/9/2004
Yo tenia el mismo problema enviaba variables por un formulario y no me los imprimia entonces puse register_globals = On y si me funciono pero leo que hay un problema en la seguridad entonces como se usa haciendo uso de HTTP_VARS?

RESPUESTA:

Realmente existe ese problema de seguridad, porque puedes tener una variable definida dentro de PHP que se haya creado sin que tú la hayas definido, simplemente porque el visitante haya compuesto una URL con paso de parámetros.

En cualquier caso, sì puedes evitar el register globals, mejor. En ese caso, el acceso a las variables se haría así:

$HTTP_POST_VARS["nombre_variable"]
$_POST["nombre_variable"]

Cualquiera de las dos formas de acceder a la variable es correcta. Pero la forma abreviada sólo funciona en versiones de PHP más modernas, aunque lo habitual es que cualquier proveedor tenga instalada una versión de PHP actualizada que permita la forma $_POST["nombre_variable"].

ivan

29/9/2004
Que tal esta sentencia les gusta ...a mi si me ayuda para manejo de variables por seguridad sin ningun problem ...
bye ...
<?PHP IMPORT_REQUESTE_VARIABLES("PQC","")?>

Emilio

01/10/2004
Por lo que he probado, al usar dobles comillas en las variables con $HTTP_POST_VARS o $_POST da error. Es decir, en vez $_POST["nombre_variable"] (que da error), se usaria $HTTP_POST_VARS[nombre_variable]

Respuesta

Me extraña mucho lo que dices... no creo que estés en lo cierto. La sintaxis correcta es con las dobles comillas.

¿En qué condiciones te da el error?

En algunos casos, si estás escribiendo código dentro de unas comillas, puede que con las comillas del $_POST se creen sintaxis incorrectas que puedan dar errores, pero no puedo entender que siempre te de este error que comentas.

rick

13/2/2005
He copiado este ejemplo tal cual, pero al momento de enviar la consulta, en lugar de mostrarme el resultado del archivo destino2.php abriendo esta página en el explorador, me abre una ventana para descargar el archivo destino2.php alguien me puede decir que pasa?

Respuesta

¿Estás seguro que esas páginas están pasando por el servidor web? La dirección de la barra debería mostrar algo empezando por http://.

oscar

19/4/2005
capturo los valores de un formulario y necesito pasarlos a otro formulario pero en el cual trabajo con codigo php. el problema es que no puedo imprimir la variable dentro de una caja de texto. espero me puedan ayudar gracias.

Kike

02/9/2005
Respecto al comentario de Emilio..
Creo que tiene razón, a mi también me funciono sin comillas $HTTP_POST_VARS[nombre_variable]..
Con comillas me manda error.. será la versión de PHP (es antigua)..

Angela

19/10/2005
Claro está que el hecho de configurar las variables globales en ON deja un vacío en la seguridad, pero como pasaría otras variables que no son parte de un formulario sino aquellas que son definidas por el usuario. Que me recomendaría.

jJesus R

09/3/2006
Alguien sabe como pasar un arreglo (es decir un array) de una pagina a otra ?.

RESPUESTA

Yo no creo que se pueda pasar directamente. Tendrías que pasar cada uno de los valores del array en una variable aparte. O crear una variable de sesión, donde puedes meter cualquier tipo de dato y este persistirá y podrás leerlo aunque el usuario cambie de página.

Axel

15/8/2006
Este capítulo y el anterior fueron mi segundo gran dolor de cabeza después de la instalación y configuración de PHP. Quisiera aportar algunas recomendaciones para no rendirse y morir en el intento.

Mi arquitectura WAMP (Windows, Apache, MySQL, PHP) es la siguiente:

WINDOWS XP
APACHE 2.2.2
MySQL 5.0
PHP 5.1.4

Si tu arquitectura es ésta y te funciona, te recomiendo lo siguiente:

1. No necesitas activar Register_Globals en php.ini (mantener en off).

2. Si lo que deseas es enviar un formulario por URL y estás trabajando tu WEB en localhost debes indicar, en el archivo de origen, la ruta de envío de la siguiente manera:

<form method="GET" action="http://localhost/Webeando/webeando.php">

El método puede ser "GET" o "POST". Ambos funcionan.

Nota: en mi caso tengo el archivo de destino (Webeando.php) en la carpeta 'Webeando' que está dentro de 'htdocs' en Apache. Como ves, indico toda la ruta.

3. En el archivo de destino debes recoger la variable usando $_GET o $_POST (según el método que has escogido) con la siguiente sintaxis según sea el caso:

A. Si deseas recibir únicamente la variable para procesarla según tus nececidades, hazlo como sigue:

//método "GET"
echo $_GET["nombre_variable"]."<br>";

//método "POST"
echo $_POST["nombre_variable"]."<br>";


Nota: La instrucción 'echo' es opcional, pero nos sirve para ver si esto está funcionando. Tú deberás decidir después cómo procesar tus variables.


B. Si lo que deseas es que tu variable aparezca embebida dentro de un texto la sintaxis es esta:

//método "GET"
echo "Mi nombre es: $_GET[nombre_variable]<br>";

//método "POST"
echo "Mi nombre es: $_POST[nombre_variable]<br>";


Nota 1: La diferencia está en la posición de las comillas dobles: Prestar mucha atención en ésto.

Nota 2: GET y POST siempre, siempre, siempre deben ir con mayúscula para que sea reconocida la variable.


Nota 3: La sintaxis antigua $HTTP_GET_VARS o $HTTP_POST_VARS no funciona en esta versión de PHP (al menos no a mí). Recomiendo usar $_GET o $_POST según sea el caso.

Nota 4: Al enviar un formulario, todas las variables declaradas en él quedan automáticamente disponibles en la página de destino.

omar ramirez

28/12/2006
en el caso de del script de edad, es posible en lugar de generar el mensaje redirigir hacia otra pagina es decir, ya que tienes 18 años te dirigo hacia el index de mi website.... puede hacerse esto con menu/list, ejemplo el sitio de heineken

LUIS

14/2/2007
Tienes toda la razón Axel , los metodos para recibir variables se escriben asi $_POST o $_GET de otra forma, el formulario especificado en el parametro "action" va a arrojar un error de :
Notice: Undefined variable: HTTP_POST_VARS in C:Archivos de programaEasyPHP 2.0b1wwwgrabaf.php on line 12
Variable $nombre:

Espero este comentario ayude

Haroldo Gutierrez

20/4/2009
no sirve la programacion
la copie identica y en la pagina destino2.php, aparece como resultado lo siguiente: Variable $nombre:
Variable $apellidos:
no aparecen los nombres que ingresamos.

Isaac Enrique

09/7/2009
Get Y post Guardar en mi Host la web creada por el formulario!!
Hola bueno: use los mismos codigos para generar una web ejeplo :
Ingreso nombre y Link el Video y que pasa me genera una web donde sale con el nombre y el video reproduciendolo hastai bakan, lo que quiesiera es que si se puede agregar un codigo mas que permit que esa web generada se guarde automaticamente en mi host por medio del nombre ejeplo:
Nombre: reloadex
link video: htt://dominio.com/reloadex.flv
entonces la web se guardari en mi host con el nombre osea asi !!!
http://midominio.com/reloadex.html
el codigo es este:

<?PHP

if (isset($_POST['enviar'])) {

if ($_POST['video'] != "") {

echo "<BR>";

?>
<object type="application/x-shockwave-flash" classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=,0,0,0' width="576" height="410" align="center"data="">
<param name="wmode" value="opaque"/>
<param name="movie" value="<?PHP echo nl2br($_POST['video']) ?>" />
<param name="allowFullScreen" value="true" />
<embed src="<?PHP echo nl2br($_POST['video']) ?>" type="application/x-shockwave-flash" wmode="opaque" allowfullscreen="true" width="576" height="410"></embed>
</object>

<?PHP
} else {
echo "<BR>";
echo "<BR>";
echo "<BR>";
echo "<BR>";
echo " * VIDEO NO ENCONTRADO CONTACTE CON EL ADMINISTRADOR <BR>";

}

}


?>


aversi pueden ayuarme y agregarle el codig par que se guarde la web creada a mi host automaticamente !!!
Gracias de antemano !

Aquiles Centeno

14/7/2009
problema con a name=link .. #ancla.
Buenos dias. Mi problema es que no domino mucho a name=link .. #ancla. Usando FrontPage hice un formulario, un cuadro desplegable <select name="V1"><option value="M">LIBROS</option>
<option value="A">ARTICULOS</option>
</select>. Y al final en la misma pagina hice 2 Marcadores (enlaces):
<a name="#articulo"><p>Estamos en los articulos</p></a><BR><a name="#libro"><p>Estamos en los libros</p></a>.

Lo que quiero es leer el valor de la variable V1 del c.desplegable: si v1='A' ir a <a name="#articulo"> DELO CONTRARIO si v1='M' ir a <a name="#libro">. Por favor puedes ayudarme? GRacias. AC.

orlando

21/7/2009
register_globals
pues yo cambie el archivo php.ini como decian puse register_globals en on y me sigue sin aparecer los valores de las variables $nombre y $apellido en el archivo destino2.php, no se si sera alguna configuracion pero estoy seguro q cambiando un poco el codigo si funciona concatenando lo q esta antes de los valores de las variables con estas.

Elias

02/8/2009
Me gusto xD
Em, Hola .. solo queria dejar dicho que me funciono a la perfeccion el codigo ya sea con comillas o sin.. no tuve que modificar nada de php.ini.. en fin muy feliz xD
gracias por tan buenos tutoriales, y yo creo que la razon de que no me da errores es por que uso Xampp ;).

Les recomiendo 100% el xampp ademas de tener seguridad trae todo lo necesario para
trabajar con php, mysql, apache, phpmyadmin.. etc etc tiene todo xd.

Demons

21/9/2009
Posible problema con list() para trocear $_POST
En mi propia versión de la realización del ejemplo, utilicé la función list() para trocear el array $_POST.
Solamente comentar, que la función list() no funciona en los casos en los que el índice del array son Strings, por lo que si por ejemplo, declaramos en el formulario un <input type="text" name="nombre">... $_POST recogerá "nombre"=>"XXXX". La clave "nombre" da error con la función list().. en concreto el error que especifica es:

Undefined offset 0
Undefined offset 1 .. etc.

Un saludo

carlos_alberto__camacho

18/5/2010
Para el comentario de Axel del 15/08/2006
Realmente no sé cómo agradecerte; como decís muy bien, casi muero en el intento. Estuve una semana tratando de pasar variables de un formulario, a un script PHP embebido en HTML y no le encontaba la vuelta. Dispongo de la misma estructura de Apache que vos, con alguna versión más actualizada, cosa que pensé que por ahí estaba el problema. Pero no: el tema era que en la opción ACTION del FORM, sólo invocaba el nombre del PHP destino sin la referencia:

http://localhost.

Adopté tu metodología y ..... BINGOOOOOOO.
De nuevo, muchas gracias Axel.

elvisaje

04/6/2010
aportar
gracias ha este ejemplo aprendi mucho...men...gracias

alcides__pearanda_jaimes

06/7/2010
Tengo problemas con el envio de una variable
Buenas señores

Tengo un formulario, con un boton examinar,
<input type="file" id="fcompleta" name="fcompleta" tabindex="14" />
el cual en el contenido del mismo es la ruta completa del archivo

Cuando le doy click al boton enviar y recibo este campo en el archivo.php
$_POST["fcompleta"];
la ruta no llega completa, solo llega lo queda despues del ultimo

Como hago para que me llegue la ruta completa de la imagen?? para poder procesarla y guardarla en una BD.

Agradezco si me pueden dar la solución, Gracias.

Carmen

18/7/2010
Proceso variables de formularios
si se definen las variables funciona, "nombre" es el nombre asignado en el formulario, lo mismo con "apellido"
este es el código:

<?php
$nombre = $_POST["nombre"];
$apellido = $_POST["apellido"];
echo "<br> Tu nombre es $nombre";
echo "<br> Tu Apellido es $apellido";
?>

pedro

11/11/2010
referente al comentario de Mon
siempre que leo los tutoriales, reviso los ejemplos indicados por uds, os que se supone se ejecutan en el server de uds y que, como bien dice Mon, al ejecutarlos, se aprecia el texto mas no su contenido (las variales que se pasan por formulario sin ser rescatadas tanto por metodo post o get).

Imagino que eso depende de la configuracion de vuestro php.ini en este caso, verdad?

Saludos

Enu

13/1/2011
No me funciona!
Hola, hago este mismo ejemplo que se explico en la web y no me funciona. Creo un archivo origen.html con el código brindado en la página y lo guardo dentro de la carpeta WWW del WAMPP y creo otro archivo destino2.php con el código correspondiente y cuando quiero ver el resultado por localhost no me funciona, y eh activado las variables short_open_tag y resgister_globals en ON y al abrir el archivo destino2.php en vez de aparecer los datos que yo ingreso me aparece esto:

"<?
echo "Variable $nombre: $nombre <br>n";
echo "Variable $apellidos: $apellidos <br>n"
?>"


///////////////////////////////////////////////////////////////
(estos son los códigos que copie en la página)



<HTML>
<HEAD>
<TITLE>formulario.html</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="destino2.php">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT" NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>





<HTML>
<HEAD>
<TITLE>destino2.php</TITLE>
</HEAD>
<BODY>
<?
echo "Variable $nombre: $nombre <br>n";
echo "Variable $apellidos: $apellidos <br>n"
?>
</BODY>
</HTML>

Andrés Jara Flores

03/2/2011
Duda con metedo post
Hola buen dia, mira mi duda es la siguiente uso el methodo post en un formulario tipo php donde el usuario ingresara diferentes datos: clave, nombre, telefono, direccion,carrera, Nivelingles y maestro. entonces en otro formulario tipo php llamo las variables del metodo, y lo hace sin problema con las primeras 6 pero al tratar de ingresar la 7 que es maestro en el formulario donde las llamo esta no me aparece y entonces mi duda es el metodo post tiene limite de variables, A continuacion adjunto los codigo. . .

//Aqui el usuario ingresa sus datos

<HTML>
<HEAD>
<TITLE>Insertar.html</TITLE>
</HEAD>
<BODY>
<div align="center"><img align=center src=logo.JPG border=0></div>
<div align="center">
<h1>Insertar un registro</h1>
<br>
<FORM ACTION="agregar1.php" METHOD="POST">
Clave<br>
<INPUT NAME="clave" TYPE="TEXT"><br>
Nombre<br>
<INPUT NAME="nombre" TYPE="TEXT"><br>
Telefono<br>
<INPUT NAME="telefono" TYPE="TEXT"><br>
Direccion<br>
<INPUT NAME="Direccion" TYPE="TEXT"><br>
Carrera<br>
<INPUT NAME="Carrera" TYPE="TEXT"><br>
Nivel de Ingles<br>
<INPUT NAME="Nivelingles" TYPE="TEXT"><br>
Maestro<br>
<input NAME="maestro" TYPE="TEXT"><br>
Maestro<br>
<input NAME="maestro" TYPE="TEXT"><br>
<INPUT TYPE="SUBMIT" value="Insertar">
</FORM>
</div>
<div align="center"><A HREF="index.php">Volver al Menu Principal</A></div>
</BODY>
</HTML>


///Aqui recive las variables
<HTML>
<HEAD>
<TITLE>index.php</TITLE>
</HEAD>
<BODY>
<div align="center"><img align=center src=logo.JPG border=0></div>
<?
$conexion = mysql_connect("","","");
if (!$conexion) {
die('Fallo de Conexion: ' . mysql_error());
}
$Seleccion_bd = mysql_select_db("",$conexion);
if (!$Seleccion_bd){
die ('No existe la BD:'. mysql_error());
}

$clave = $_POST['clave'];
$nombre = $_POST['nombre'];
$telefono = $_POST['telefono'];
$direccion = $_POST['Direccion'];
$carrera = $_POST['Carrera'];
$Nivelingles = $_POST['Nivelingles'];
$sql = "INSERT into dato (clave,nombre,telefono,Direccion,Carrera,Nivelingles)";
$sql.= " values ('".$clave."','".$nombre."','".$telefono."','".$direccion."','".$carrera."','".$Nivelingles."')";
$result = mysql_query($sql);
if (!$sql) {
die('Fallo en la insercion de registro en la Base de Datos: ' . mysql_error());
}
mysql_close($conexion);
?>
<h1><div align="center">Registro Insertado</div></h1>
<div align="center"><A HREF="insertar_1.php">Insertar Nuevo</A></div>
<div align="center"><A HREF="datos.php">Ver datos</A></div>
<div align="center"><A HREF="index.php">Volver al Menu Principal</A></div>
</BODY>
</HTML>


//GRACIAS DE ANTEMANO

conterperawebs

15/2/2011
A mi tampoco me funciona
En el asunto lo digo todo.

Me he leido todos los hilos sobre POST y GET, antes de postear y aparentemente lo tengo bien, pero como estoy empezando seguro que me he dejado algo.

Y no consigo que me aparezcan los valores de las variables.


FireFox 3.6.13. XAMPP. Apache 2.2.14. PHP 5.3.1

Un primer archivo que es donde introduzco los datos en el formulario.
(frm_envio.html y otro archivo donde "intento" recoger los datos frm_destino.php)


frm_envio.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Enviar a frm_destino_php</title>
</head>

<body>
<H1>Ejemplo de procesado de formularios</H1>

<FORM ACTION="frm_destino.php" METHOD="POST">
Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR>
Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
</FORM>
</body>
</html>


frm_destino.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Recibir de frm_envio.html</title>
</head>

<body>

<H1>Ejemplo de procesado de formularios</H1>
Metodo utilizado: <?php echo $HTTP_ENV_VARS[REQUEST_METHOD] ?><br>
<br>
<br>

Metodo con POST: <?php echo $HTTP_POST_VARS['nombre'] ?><br>
Metodo con GET: <?php echo $HTTP_GET_VARS['nombre'] ?><br>
<br>
<br>
Metodo con POST: <?php echo $HTTP_POST_VARS["nombre"] ?><br>
Metodo con GET: <?php echo $HTTP_GET_VARS["nombre"] ?><br>
<br>
<br>

El nombre que ha introducido por GET es: <?php echo $_GET['nombre']," ",$_GET['apellidos'] ?><br>
El nombre que ha introducido por POST es: <?php echo $_POST['nombre']," ",$_POST['apellidos'] ?>
<br>
<br>
<br>

El nombre que ha introducido por GET es: <?php echo $_GET["nombre"]," ",$_GET["apellidos"] ?><br>
El nombre que ha introducido por POST es: <?php echo $_POST["nombre"]," ",$_POST["apellidos"] ?>
</body>
</html>
</h1>

Gracias anticipas y siento la reiteracion con otros compañeros, pero ninguna de las soluciones me ha valido.

Diego

11/5/2011
q pepe
q onda en donde veo el archivo php.ini
ya q soy nuevo en esto del php

Alberto

28/9/2011
No se muestran datos en el archivo destino.php
Hola a todos. En ninguno de los dos ejemplos para pasar variables ya sea a traves de la URL o a traves de un form me ha mostrado datos en la paina destino.php

Intente con todos los codigos posibles que exponen pero con ninguno me ha mostrado resultados incluso activando variables en php.ini el cual se encuentra en la carpeta: C:wampinapacheApache2.2.17inphp.ini

Siguiendo cada artículo, tengo todos mis archivos en la carpeta C:wampwww
y cuando ejecuto los ejemplos del mismo artículo solamente me muestra en la pagina destino las variables declaradas en origen pero no su valor que es supongo lo que se pretende.

HELP!!!

alonso

04/11/2011
que es?
solo quiero saber que es no para que sirve el metodo post y get

if(isset($_POST['nombre'])&&!emty($_POST['nombre'])
&& isset($_POST['direccion'])&&!emty($_POST['direccion'])
&& isset($_POST['imss'])&&!emty($_POST['imss'])
&& isset($_POST['salario'])&&!emty($_POST['salario'])
&& isset($_POST['puesto'])&&!emty($_POST['puesto'])

y me podriam decir que hace este codigo disculpen las molestias:

hugo rangel

10/12/2011
Advertir sobre error de tutorial
en el tutorial de intalar php como CGI el unico error que cometieron fuen en la configuraciondel httpd.conf se selecciona es el ejecutable php-cgi.exe en lugar de php.exe,

GRACIAS.

glambert

16/3/2012
Imposibilidad de pasar variables por un formulario
Hola, estoy iniciando en PHP, tengo instalada la versión PHP 5.3.5 y APACHE 2.2.17, el php.ini tiene registers_globals on, y no consigo pasar las variables.
El primer ejemplo de html don recibe destino2.html, no me funciona ni el ejemplo que se ejectua en el link "ejecutar ejemplo" no muestra ninguna variable solo sale el literal , y el segundo ejemplo el del formulario edad.php que llama edad2.php veo que pasa a edad2.php porque lo identifico en el título de la pestaña, pero me queda todo en blanco, es como si no se ejecutara el código php incrustado en el html, arme los archivos con copiar y pegar por lo que descarto error de digitación, posiblemente es un error de ambiente que por desconocimiento no encuentro, por favor si pueden ayudarme les agradezco, muchas gracias

pabje

19/11/2012
Verificar si fueron enviados los datos al archivo php
Hola

Quería preguntar si en el archivo php hace falta preguntar si los datos del formulario del archivo html fueron enviados correctamente. Este es el código.
?>
if (!$_POST) {
// NO SE RECIBIERON LOS DATOS
//MOSTRAR EL FORMULARIO
...
}

Maikel Cutiño Fernández

14/11/2013
Crear Carpeta al enviar formulario
Hola amigos perdonen postee en este tema pero no he encontrado lo que requiero, tengo un sitio web donde quiero dar la posibilidad a los usuarios de registrarse el detalle es que quiero que en el formulario de registro suban imagenes a su perfil a una carpeta en específico y que al enviar el formulario cree automaticamente una carpeta con el nombre del usuario o de lo contrario que solo puedan registrarse y subir imagenes pero no ver las que han subido otros usuarios no se si me explico o de lo contrario que cuando suban sus imagenes a una carpeta en común solo puedan sustituir sus imagenes por otras desde su equipo no escoger de la carpeta en común

saludos cordiales espero

Compartir