处理POST数据服务器端

时间:2016-02-19 07:02:56

标签: php post curl

我正在测试将POST数据从网页传递到另一个URL,并且我正在尝试找出如何通过POST脚本将值从一个页面传递到URL,然后通过服务器端脚本处理POST数据。我正在使用以下CURL来启动POST,其中xxxyyy.com/post_processor.php是处理脚本的URL。

<?php

//set POST variables
$url = 'http://xxxyyy.com/post_processor.php';
$fields = array(
    'lname' => 'smith',
    'fname' => 'peter',
);

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_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

?>

这会按预期发布数据(我已经在http://requestb.in/12lfg7x1中对其进行了测试)但是我在处理任何POSTed信息时遇到了问题。

目前,服务器端的处理脚本只包含一个if语句,以查看是否已收到任何发布数据,如果是,则写入数据库:

$entityBody = file_get_contents('php://input');  

if (!empty($entityBody))
    {
        // handle post data

    global $wpdb;

            $table_name = $wpdb->prefix . 'post_data_1';
            $wpdb->insert( 
            $table_name, 
            array( 
                'time' => current_time( 'mysql' ), 
                'post_data_recieved' => 'ok',
            )
        );

}

这种组合目前不起作用,即我加载了初始脚本,没有任何事情发生数据,但是没有数据存储在远程数据库中。但是,如果我使用表单将POST数据传递给脚本,但是如果我在没有重定向的情况下传递帖子数据,它就不起作用。谁能告诉我这里我做错了什么?

谢谢,

马特

1 个答案:

答案 0 :(得分:0)

这与最初发布的内容基本相同,其工作原理是返回值成功打印到屏幕上。

db没有被更新的事实使我认为可能在post_processor.php脚本中没有db连接,因此post_processor.php具有所有必需的包含文件以确保{{1}有空吗?

$wpdb