0

我有以下使用 PHP 的 cURL 代码;

$product_id_edit="Playful Minds (1062)";
$item_description_edit="TEST";
$rank_edit="0";
$price_type_edit="2";
$price_value_edit="473";
$price_previous_value_edit="473";
$active_edit="1";
$platform_edit="ios";

//set POST variables
$url = 'https://www.domain.com/adm_test/phpgen/offline_items.php?operation=insert';
$useragent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1';

$fields = array(
   'product_id_edit'=>urlencode($product_id_edit),
   'item_description_edit'=>urlencode($item_description_edit),
   'rank_edit'=>urlencode($rank_edit),
   'price_type_edit'=>urlencode($price_type_edit),
   'price_value_edit'=>urlencode($price_value_edit),
   'price_previous_value_edit'=>urlencode($price_previous_value_edit),
   'active_edit'=>urlencode($active_edit),
   'platform_edit'=>urlencode($platform_edit)
);

$fields_string="";

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
//add useragent
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_POST,count($fields));

//execute post
$result = curl_exec($ch);
if(curl_errno($ch)){
print "" . curl_error($ch);
}else{
//print_r($result);
}

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//echo "HTTP Response Code: " . curl_error($ch);
echo $httpCode;

//close connection
curl_close($ch);

我打印了 $httpCode;我得到代码 200;我认为这没问题,因为我在手册页中阅读过,但是,当我检查该站点时,POSTed 值不存在,

这是否与跨域有关,因为我没有在同一个域上发布它?,我在 127.0.0.1/site/scrpt.php 上做,但如果它不成功,我如何获得响应代码 200 ?

我还尝试通过删除请求 URL 上的一部分来获得 404,它确实返回了 404(这意味着 cURL 在我的假设中正常工作)

是否将 URL https://www.domain.com/adm_test/phpgen/offline_items.php?operation=insert与“?operation=insert”有关?

让我们假设(但不是暗示),我来自另一个站点,我希望将值发布到另一个站点的形式中,排序是一个机器人。尽管我的目标并不意味着任何邪恶的意图,如果这不可行,我是否必须编码数千行信息。

同样,我不需要来自服务器的响应(但如果有可用的,那么就可以了)

4

3 回答 3

0

该操作应使用 CURLOPT_POSTFIELDS 传递。连同其他参数。

跨域问题发生在浏览器的情况下。而且您的代码似乎是 php 服务器端代码,因此这应该不是问题。

于 2012-05-17T10:13:05.617 回答
0

不确定这是解决方案还是问题不同,但是这一行:

rtrim($fields_string,'&');

应该是这样的:

$fields_string = rtrim($fields_string,'&');
于 2012-05-17T10:15:11.027 回答
0
curl_setopt($ch,CURLOPT_POST,TRUE);

CURLOPT_POST- 布尔值,它不是值的计数,它是使用 post 标志。

代码 200 表示连接建立正确并收到了服务器的响应,但这并不意味着请求的操作已经实现。

请求后打印$result以查看来自 Web 服务器的响应。

于 2012-05-17T10:23:27.890 回答