Chema Cortes wrote:
El día 17 de diciembre de 2010 01:38, gerardo Juarez
<[email protected]> escribió:
Hola, tengo un problema muy extrano con cgi.
Recibo datos de un servidor via un URL con argumentos. Hago lo siguiente:
import cgi
fm = cgi.FieldStorage()
Y trato de obtener los valores con fm.getvalue(k) donde k es cada uno de
los valores.
Ahora bien, lo que esta sucediendo es que cada vez que hacen contacto con mi
script,
recibo argumentos como CONTEXT, cmd, form_charset, que ni me sirven ni los
estaba esperando.
Mi script reporta un error, claro, pero en la linea de URL del navegador me
muestra el
URL que supuestamente debio de recibir mi script, y en él *sí* están los
argumentos
que estoy esperando.
Existe alguna forma en que se pueda romper la integridad de cómo
cgi.FieldStorage() procesa y
separa los campos de una forma? Porque no se me ocurre otra forma de que
pasara esto.
No sé a qué te refieres con romper la "integridad" del FieldStorage,
pero puedes probar si la url está bien codificada con
'urlparse.parse_qs'
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
Muchas gracias Chema. Me ayudó a resolver el problema. Documento de qué
se trata:
Tengo un script que debe recibir una variable 'tx' de una forma. La
documentación me dice que el método de envío
es GET, por lo tanto viene como una "query_string" pegada al URL de mi
script. El código de la forma sin
embargo viene así:
<form name="nombre"
action="http://mi_sitio/cgi-bin/mi_script?tx=23sc432cs3ws" method="POST">
<input type=hidden name=CONTEXT value="3o4dflakoiwhkad">
... siguen otros campos de nombre extraño e indescifrable
</form>
Como se puede ver el método es POST, pero al mismo tiempo hay una
query_string pegada a "action".
cgi.FieldStorage() sólo ve los parámetros de adentro de la forma, y no
la query_string, por lo que hay
que buscar la variable 'tx' en ambos lados, si no se sabe en dónde la
mandaron:
fm = cgi.FieldStorage() # la forma
parms = cgi.parse_qs(os.environ['QUERY_STRING']) # la query_string
# busca en forma
try:
tx = fm['tx'].value
log_error("Recibi tx= %s" % tx)
except KeyError:
# busca en query string
try:
tx = parms['tx'][0]
log_error('Recibi tx en QS = %s' % tx)
except KeyError:
resp.error('no recibi la variable tx')
Espero le sirva a alguien.
saludos
Gerardo
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/