Enviando datos usando POST en Python a PHP

Código PHP:

 

Cuando hago eso, la página HTML que imprime Python me notifica que PHP no recibió ningún valor en $data Ie:

Error en $ nombre; índice indefinido

Sin embargo, cuando envío los datos como GET ( http://localhost/mine.php?data=data ) y cambio el método PHP de POST a GET ( $data=$_GET['data'] ), el valor se obtiene. y procesado.

Mi principal problema aquí es que parece que el valor de los datos no se transfiere a PHP como hubiera querido usar POST. ¿Qué podría estar mal?

Mira este 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 

Casi todo estaba justo ahí. Mira la línea 2.

Heres el PHP:

  

esto debería darte

 1 2 

Buena suerte y espero que esto ayude a otros.

Hay muchos artículos por ahí que sugieren el uso de solicitudes en lugar de Urllib y urllib2 . (Lea las Referencias para obtener más información, la solución primero)

Su archivo de Python (test.php):

 import requests userdata = {"firstname": "John", "lastname": "Doe", "password": "jdoe123"} resp = requests.post('http://yourserver.de/test.php', params=userdata) 

Su archivo PHP:

 $firstname = htmlspecialchars($_GET["firstname"]); $lastname = htmlspecialchars($_GET["lastname"]); $password = htmlspecialchars($_GET["password"]); echo "firstname: $firstname lastname: $lastname password: $password"; 

Nombre: John Apellido: Contraseña: jdoe123

Referencias:

1) Buen artículo, ¿por qué debería utilizar solicitudes

2) ¿Cuáles son las diferencias entre urllib, urllib2 y el módulo de solicitudes?

 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)