在Python中通过POST向PHP发送数据
PHP代码:
<?php
$data=$_POST['data'];
echo $data;
?>
当我这样做时,Python打印出的HTML页面告诉我,PHP没有收到任何在 $data
中的值,也就是说:
错误在 $name;未定义的索引
但是,当我通过GET方式发送数据(比如 http://localhost/mine.php?data=data
),并把PHP的方法从POST改成GET($data=$_GET['data']
),就能成功获取并处理这个值。
我主要的问题是,似乎数据没有通过POST方式传递到PHP,而我本来想使用POST。那可能出什么问题呢?
4 个回答
5
在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够清晰,或者是我们对某些概念理解得不够透彻。比如,有人可能在使用某个函数时,不太明白它的作用或者用法,这就需要我们去查阅相关的资料或者向别人请教。
另外,编程的过程中,调试也是一个很重要的环节。调试就是找出代码中出错的地方,并进行修正。这个过程可能会让人感到挫折,但只要耐心去分析,通常都能找到解决办法。
总之,编程是一项需要不断学习和实践的技能,遇到问题时不要气馁,积极寻求帮助和资源,才能不断进步。
import urllib
import urllib2
params = urllib.urlencode(parameters) # parameters is dicitonar
req = urllib2.Request(PP_URL, params) # PP_URL is the destionation URL
req.add_header("Content-type", "application/x-www-form-urlencoded")
response = urllib2.urlopen(req)
6
网上有很多文章建议使用requests库,而不是Urllib和urllib2。如果想了解更多信息,可以查看参考资料,先看解决方案。
你的Python文件(test.php):
import requests
userdata = {"firstname": "John", "lastname": "Doe", "password": "jdoe123"}
resp = requests.post('http://yourserver.de/test.php', params=userdata)
你的PHP文件:
$firstname = htmlspecialchars($_GET["firstname"]);
$lastname = htmlspecialchars($_GET["lastname"]);
$password = htmlspecialchars($_GET["password"]);
echo "firstname: $firstname lastname: $lastname password: $password";
名字:John 姓氏:Doe 密码:jdoe123
参考资料:
34
看看这个Python代码:
import urllib2, urllib
mydata=[('one','1'),('two','2')] #The first is the var name the second is the value
mydata=urllib.urlencode(mydata)
path='http://localhost/new.php' #the url you want to POST to
req=urllib2.Request(path, mydata)
req.add_header("Content-type", "application/x-www-form-urlencoded")
page=urllib2.urlopen(req).read()
print page
几乎所有的内容都在这里,看看第二行。
这是PHP代码:
<?php
echo $_POST['one'];
echo $_POST['two'];
?>
这应该会给你带来
1
2
祝你好运,希望这能帮助到其他人。