Php 在服务器端处理POST数据
我目前正在测试将POST数据从一个web页面传递到另一个URL,并试图解决如何通过POST脚本将值从一个页面传递到URL,然后URL将通过服务器端脚本处理POST数据。我使用下面的CURL来启动POST,其中xxxyyy.com/POST_processor.php是处理脚本的urlPhp 在服务器端处理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'
<?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');