2010-11-18 44 views
13
código

PHP:Envío de datos vía POST en Python para PHP

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

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

Error en $ name; índice indefinido

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

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

+4

Dado que la mayoría de nosotros no es clarividente, puede ser una buena idea para publicar su código. –

Respuesta

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) 
31

Mira esta pitón:

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 lo que estaba allí Mira la línea 2

aquí está el PHP:

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

esto debe darle

1 
2 

Buena suerte y espero que esto ayuda a otros

5

Hay artículos mucho por ahí que sugieren el uso de solicitudes en lugar urllib y urllib2. (Lea Referencias Para más información, la primera solución)

Su Python-File (prueba.php):

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

Tu PHP-File:

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

nombre: John apellido : Doe contraseña: jdoe123

Referencias:

1) Good Article, why you should use requests

2) What are the differences between the urllib, urllib2, and requests module?