GVKun编程网logo

如何用Python处理POST和GET变量?(python post get)

25

对于如何用Python处理POST和GET变量?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍pythonpostget,并为您提供关于HTTPPOST和GET与cookie一起在python

对于如何用Python处理POST和GET变量?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍python post get,并为您提供关于HTTP POST和GET与cookie一起在python中进行身份验证、perl 使用post和get、php – 使用Symfony清理POST和GET变量、PHP-$_POST和$_GET变量安全性,无需数据库的有用信息。

本文目录一览:

如何用Python处理POST和GET变量?(python post get)

如何用Python处理POST和GET变量?(python post get)

在PHP中,你只能将其$_POST用于POST$_GETGET(查询字符串)变量。Python中的等效功能是什么?

答案1

小编典典

假设你正在发布带有以下内容的html表单:

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

如果使用原始cgi

import cgiform = cgi.FieldStorage()print form["username"]

如果使用Django,Pylons,FlaskPyramid

print request.GET[''username''] # for GET form methodprint request.POST[''username''] # for POST form method

使用Turbogears,Cherrypy

from cherrypy import requestprint request.params[''username'']

Web.py

form = web.input()print form.username

Werkzeug

print request.form[''username'']

如果使用CherrypyTurbogears,还可以直接使用参数定义处理程序函数:

def index(self, username):    print username

Google App Engine:

class SomeHandler(webapp2.RequestHandler):    def post(self):        name = self.request.get(''username'') # this will get the value from the field named username        self.response.write(name) # this will write on the document

因此,你实际上必须选择这些框架之一。

HTTP POST和GET与cookie一起在python中进行身份验证

HTTP POST和GET与cookie一起在python中进行身份验证

我正在尝试创建一个使用我的ID和密码登录到我的大学站点的python程序。这是登录的正式页面:https
//webapp.pucrs.br/consulta/

您可能会注意到,这两个字段分别命名为pr1和pr2。该页面使用POST发送数据。另外,加载页面时会下载一个cookie,它是一个JSESSIONID,其中包含一个随机值,据我所知,您必须返回POST方法的标头才能验证登录名。

我编写了以下代码,但是GET方法的返回页上显示“会话未初始化”,可能导致cookie没有正确发送回。

from urllib2 import Request, build_opener, HTTPCookieProcessor, HTTPHandlerimport httplib, urllib, cookielib, Cookie, osconn = httplib.HTTPConnection(''webapp.pucrs.br'')#COOKIE FINDERcj = cookielib.CookieJar()opener = build_opener(HTTPCookieProcessor(cj),HTTPHandler())req = Request(''http://webapp.pucrs.br/consulta/principal.jsp'')f = opener.open(req)html = f.read()for cookie in cj:    c = cookie#FIM COOKIE FINDERparams = urllib.urlencode ({''pr1'':111049631, ''pr2'':<pass>})headers = {"Content-type":"text/html",           "Set-Cookie" : "JSESSIONID=70E78D6970373C07A81302C7CF800349"}            # I couldn''t set the value automaticaly here, the cookie object can''t be converted to string, so I change this value on every session to the new cookie''s value. Any solutions?conn.request ("POST", "/consulta/servlet/consulta.aluno.ValidaAluno",params, headers) # Validation pageresp = conn.getresponse()temp = conn.request("GET","/consulta/servlet/consulta.aluno.Publicacoes") # desired content pageresp = conn.getresponse()print resp.read()

我在哪里放置此cookie,以便对登录进行身份验证?

答案1

小编典典

我会尝试使用该requests库。该文档非常出色,并且最终代码比urllib*

$ pip install requests

使用一个自行处理cookie的会话(请参阅Piotr的评论),结果看起来像这样

import requestsurl_0 = "http://webapp.pucrs.br/consulta/principal.jsp"url = "https://webapp.pucrs.br/consulta/servlet/consulta.aluno.ValidaAluno"data = {"pr1": "123456789", "pr2": "1234"}s = requests.session()s.get(url_0)r = s.post(url, data)

似乎工作正常,因为我收到了pr1123456789的“ Usuario inexistente”通知和带有您的用户编号的“
Sehnainválida”。

perl 使用post和get

perl 使用post和get

url 传参格式:

perl get 方式请求:

use Encode;
use Encode::CN;
use JSON; 
use URI::Escape;
use LWP::Simple;
#$host = "http://ip.taobao.com/service/getIpInfo.PHP?ip=202.101.172.35";
$host = " http://211.149.197.95:8888/sms.aspx?action=send&userid=74&account=xx&password=xx&mobile=18072xx7&content=内容&sendTime=&extno=";
$content = get($host);
print "\$content is $content\n";


通过get方式请求,参数所以用“&”符号来隔开。



perl post 方式请求:

use strict;
use LWP;

my $browser = LWP::UserAgent->new();
my $response= $browser->post("http://211.149.197.95:8888/sms.aspx",[ "action" => "send","userid" => "74","account" => "xx","password" => xx,"mobile" =>180xx237,"content" =>"test0612"]); #多加了

一个被发送的数据的数组

print $response->content; # 输出获得的网页内容

php – 使用Symfony清理POST和GET变量

php – 使用Symfony清理POST和GET变量

我正在使用Silex,它正在使用来自Symfony的组件Request.
当我从表单中获取数据时,例如这样:

$params = $request->request->all();

没有东西被清理干净.与Laravel不同,用户输入数据会自动清理.我应该手动完成,使用像strip_tag这样的内置PHP函数,或者有一种symfony方法.

解决方法:

因此,基本上在清理输入时,它不应该是请求的一部分.这是因为,清理后的输入实际上只是数据库安全性的一部分.

因此,当Doctrine传递给Doctrine时,它会对输入进行清理.基本上,Doctrine会自动确保所有输入都已清理.从广义上讲,数据库抽象层负责确保传递给它的数据有效.

Propel也是如此.

所以我所说的是输入清理不是Request对象的责任,因此它不提供这样做的功能.这符合单一责任原则,您可以在此处阅读更多信息:http://en.wikipedia.org/wiki/Single_responsibility_principle

如果要验证通过请求接收的数据,可以使用Validator Component执行此操作,还有一个Silex ServiceProvider:
https://github.com/symfony/Validator

TLDR;
清理输入不是请求的响应性,它是您的DBAL(数据库滥用层)的责任.

PHP-$_POST和$_GET变量安全性,无需数据库

PHP-$_POST和$_GET变量安全性,无需数据库

如果您未在应用程序中使用数据库,但是在代码中执行了“ echo”操作或使用了$_POST或$_GET变量,是否需要对它们进行转义?

喜欢:

if(isset($_GET['test']){
  echo $_GET['test'];
}

要么

function math(){
if(isset($_GET['number'],$_GET['numberr']){
  return $_GET['number']*$_GET['numberr'];
}
return null;
}

解决方法:

即使您使用数据库,也需要在打印之前对其进行转义或清理.有人可能会偷偷摸摸地使用< b>会使您的整个页面变为粗体,或< script> alert(‘hello’);< / script>将运行Javascript.

echo htmlspecialchars($_GET['test']);

这将替换您所有的<与& lt;和>与& gt;因此HTML会被视为文本而非HTML,并且不会弄乱您的页面.

关于如何用Python处理POST和GET变量?python post get的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于HTTP POST和GET与cookie一起在python中进行身份验证、perl 使用post和get、php – 使用Symfony清理POST和GET变量、PHP-$_POST和$_GET变量安全性,无需数据库等相关内容,可以在本站寻找。

本文标签: