Отправка данных с использованием POST в Python для PHP

PHP-код:

<?php
$data=$_POST['data'];
echo $data;
?>

Когда я это делаю, страница HTML, которую печатает Python, сообщает мне, что PHP не получил никакого значения в $data I.e:

Ошибка в $name; undefined index

Однако, когда я отправляю данные как GET (http://localhost/mine.php?data=data) и меняю метод PHP с POST на GET ($data=$_GET['data']), значение получает и обрабатывает.

Моя основная проблема здесь в том, что, по-видимому, значение в данных не переходит к PHP, поскольку я бы хотел использовать POST. Что может быть неправильным?

Ответ 1

Посмотрите на этот питон:

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

Почти все было прямо там. Посмотрите на строку 2

heres PHP:

<?php
echo $_POST['one'];
echo $_POST['two'];
?>

это должно дать вам

1
2

Удачи, и я надеюсь, что это поможет другим.

Ответ 2

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)

Ответ 3

Есть много статей, в которых предлагается использовать запросы, а не 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 lastname: Doe password: jdoe123

Литература:

1) Хорошая статья, почему вы должны использовать запросы

2) В чем отличия между модулем urllib, urllib2 и запросов?