Php 在服务器端处理POST数据

Php 在服务器端处理POST数据,php,post,curl,Php,Post,Curl,我目前正在测试将POST数据从一个web页面传递到另一个URL,并试图解决如何通过POST脚本将值从一个页面传递到URL,然后URL将通过服务器端脚本处理POST数据。我使用下面的CURL来启动POST,其中xxxyyy.com/POST_processor.php是处理脚本的url <?php //set POST variables $url = 'http://xxxyyy.com/post_processor.php'; $fields = array( 'lname'

我目前正在测试将POST数据从一个web页面传递到另一个URL,并试图解决如何通过POST脚本将值从一个页面传递到URL,然后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);

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

谢谢


Matt

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

数据库没有被更新的事实让我想到,可能是数据库连接在
post_processor.php
脚本中不可用,
post_processor.php
是否有所有必要的包含文件来确保
$wpdb
可用

<?php
    $url = 'http://xxxyyy.com/post_processor.php';
    $url = 'https://localhost/target.php';


    $fields = array(
        'lname'     => 'smith',
        'fname'     => 'peter'
    );
    /* prepare the data for transmission as a urlencoded string */
    $data=http_build_query( $fields );



    $ch = curl_init();

    if( parse_url( $url,PHP_URL_SCHEME )=='https' ){
        /* my server runs https so I need these lines*/
        curl_setopt( $ch, CURLOPT_CAINFO, realpath('c:/wwwroot/cacert.pem') );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    }

    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Length: '.strlen( $data ) ) );

    $result = curl_exec( $ch );
    $info = curl_getinfo( $ch );
    curl_close( $ch );

    print_r( $result );
?>



<?php

    $data=file_get_contents('php://input');
    print_r( $data );

    /* what would this show ? Object hopefully I guess */
    echo '$wpdb = '.gettype( $wpdb );
?>

outputs:
lname=smith&fname=peter

产出:
lname=smith&fname=peter

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

数据库没有被更新的事实让我想到,可能是数据库连接在
post_processor.php
脚本中不可用,
post_processor.php
是否有所有必要的包含文件来确保
$wpdb
可用

<?php
    $url = 'http://xxxyyy.com/post_processor.php';
    $url = 'https://localhost/target.php';


    $fields = array(
        'lname'     => 'smith',
        'fname'     => 'peter'
    );
    /* prepare the data for transmission as a urlencoded string */
    $data=http_build_query( $fields );



    $ch = curl_init();

    if( parse_url( $url,PHP_URL_SCHEME )=='https' ){
        /* my server runs https so I need these lines*/
        curl_setopt( $ch, CURLOPT_CAINFO, realpath('c:/wwwroot/cacert.pem') );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
        curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    }

    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Length: '.strlen( $data ) ) );

    $result = curl_exec( $ch );
    $info = curl_getinfo( $ch );
    curl_close( $ch );

    print_r( $result );
?>



<?php

    $data=file_get_contents('php://input');
    print_r( $data );

    /* what would this show ? Object hopefully I guess */
    echo '$wpdb = '.gettype( $wpdb );
?>

outputs:
lname=smith&fname=peter

产出:
lname=smith&fname=peter

从何处获取
$entityBody
从?$entityBody=file\u get\u contents('php://input');您从哪里获得
$entityBody
?$entityBody=文件\u获取\u内容('php://input');