我创建了一个小型API,从一个网站收集联系人表格信息,并将其存储在另一个网站的数据库中,管理应用程序也是我创建的。
在网站上哪里是联系表格是这个代码:
// collect all fields
$save = array(
'oAuth'=>'{KEY}',
'secret'=>'{SECRET-KEY}',
'category'=>'Category',
'name'=>'Jon Doe',
'email'=>'jon@doe.com',
'phone'=>'123 456 7890',
// ... etc. other fields
);
// made GET request
$fields=array();
foreach($save as $key=>$val){
$fields[]=$key."=".rawurlencode($val);
}
// Set cross domain URL
$url='http://api.mydomain.com/';
// Send informations in database
$cURL = curl_init();
curl_setopt($cURL,CURLOPT_URL, $url.'?'.join("&",$fields));
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cURL, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($cURL, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($cURL, CURLOPT_TIMEOUT, 2);
curl_setopt($cURL, CURLOPT_HTTPHEADER, array('Accept: application/json'));
$output=curl_exec($cURL);
curl_close($cURL);
usleep(1000);
// redirect
header("Location: http://somemysite.com/thank-you-page");
session_destroy();
exit;
我的问题是,是像现在这样使用cURL还是使用header()
函数发送GET?
我问是因为我在这里不使用输出,有时重定向在cURL完成请求之前开始。
什么是发送GET信息而不丢失数据的更快方法?
在cURL完成之前,重定向不会启动。可能发生的情况是cURL无法加载您的远程页面,并且您没有处理该错误。你应该添加这样的东西:
if($output === false || curl_getinfo($cURL, CURLINFO_HTTP_CODE) != 200) {
// Here you handle your error
}
如果您正在寻找加载远程网页的替代方法,可以在php.ini中将allow_url_fopen设置为true,然后使用这个简单的函数而不是cURL:
$output = file_get_contents($url.'?'.join("&",$fields));