PHP
downloads | documentation | faq | getting help | mailing lists | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Manejo de envío de archivos> <Sesiones
Last updated: Fri, 22 Aug 2008

view this page in

Manejo de XForms

» XForms define una variación de los tradicionales formularios web que permite que éstos sean usados en una variedad más amplia de plataformas y navegadores, e incluso en medios no-tradicionales como documentos PDF.

La primera diferencia clave en XForms es el modo en que el formulario es enviado al cliente. » XForms para Autores HTML contiene una descripción detallada de cómo crear XForms; para los propósitos de este tutorial, tan solo estaremos viendo un ejemplo sencillo.

Example #1 Un formulario XForms de búsqueda simple

<h:html xmlns:h="http://www.w3.org/1999/xhtml"
        xmlns="http://www.w3.org/2002/xforms">
<h:head>
 <h:title>Búsqueda</h:title>
 <model>
  <submission action="http://example.com/buscar"
              method="post" id="s"/>
 </model>
</h:head>
<h:body>
 <h:p>
  <input ref="q"><label>Buscar</label></input>
  <submit submission="s"><label>Iniciar</label></submit>
 </h:p>
</h:body>
</h:html>

El anterior formulario despliega una caja de entrada de texto (llamada q ), y un botón de enviar. Cuando el botón de enviar es pulsado, el formulario será enviado a la página indicada por action.

Aquí es en donde empieza a lucir diferente desde el punto de vista de su aplicación web. En un formulario HTML normal, los datos serían enviados como application/x-www-form-urlencoded, sin embargo, en el mundo de XForms, esta información es enviada como datos en formato XML.

Si ha tomado la decisión de trabajar con XForms, entonces probablemente quiera los datos en XML, en ese caso, debe echar un vistazo a $HTTP_RAW_POST_DATA en donde encontrará el documento XML generado por el navegador, el cual puede pasar a su motor XSLT o intérprete de documentos favorito.

Si no se encuentra interesado en dar formato, y sólo desea que los datos sean cargados en la variable $_POST tradicional, puede indicarle al navegador del cliente que envíe sus datos como application/x-www-form-urlencoded modificando el atributo method al valor urlencoded-post.

Example #2 Uso de un XForm para poblar $_POST

<h:html xmlns:h="http://www.w3.org/1999/xhtml"
        xmlns="http://www.w3.org/2002/xforms">
<h:head>
 <h:title>Búsqueda</h:title>
 <model>
  <submission action="http://example.com/search"
              method="urlencoded-post" id="s"/>
 </model>
</h:head>
<h:body>
 <h:p>
  <input ref="q"><label>Buscar</label></input>
  <submit submission="s"><label>Iniciar</label></submit>
 </h:p>
</h:body>
</h:html>

Note: Al momento en que se escriben estas líneas, muchos navegadores no ofrecen soporte para XForms. Revise la versión de su navegador si el anterior ejemplo falla.



Manejo de envío de archivos> <Sesiones
Last updated: Fri, 22 Aug 2008
 
add a note add a note User Contributed Notes
Manejo de XForms
Darkener Daemon EX
13-Feb-2006 12:21
"php://stdin" doesn't exist in my PHP version. I use the following code block instead :
<?php
if (!isset($HTTP_RAW_POST_DATA))
   
$HTTP_RAW_POST_DATA = file_get_contents("php://input");
?>
OrionI
07-Jul-2005 02:33
FireFox has an XForms plugin that works with the latest nightly builds. Check out http://www.mozilla.org/projects/xforms/ for more info. For IE support, there's an ActiveX control from Novell (http://developer.novell.com/xforms/) and one from x-port.net (http://www.formsplayer.com/).

There's also a JavaScript-based one coming out called FormFaces which looks very promising, especially since there are no plugins required and it works in IE, FF, and Opera: http://www.formfaces.com/
lphuberdeau at phpquebec dot org
21-Aug-2004 12:55
Since HTTP_RAW_POST_DATA requires a configuration to be generated and is not enabled as a default value, you will probably have to use the PHP STDIN stream to get the raw data. It's probably better to use this method as the raw data will not be generated every time, even when not needed.

<?php
$fp
= fopen( "php://stdin", "r" );
$data = '';
while( !
feof( $fp ) )
   
$data .= fgets( $fp );
fclose( $fp );
?>

Manejo de envío de archivos> <Sesiones
Last updated: Fri, 22 Aug 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites