我有以下情况:
if(isset($_POST['thisvalue'])) {
$username = $_POST['username'];
$passwd = $_POST['passwd'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.domain.com/scripts/curl/index_general.php' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_REFERER, 'http://www.domain.com.au' );
curl_setopt($ch, CURLOPT_POSTFIELDS, "body goes here" );
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
$result = curl_exec($ch);
curl_close($ch);
echo $result;
我可以通过“http://www.domain.com/scripts/curl/index_general.php”返回一个值。
我需要知道完成这条线的最佳方法: curl_setopt($ ch,CURLOPT_POSTFIELDS,“body goes here”);
我应该如何发送用户名/密码。 我还有其他时间需要发送更多数据,所以我假设(并且从我的阅读中得知数组是最好的)......
目前我的数据是从JQUERY / HTML传递的...我应该如何将这些数据转换为数组并将CURL转换为目标域?
THX
答案 0 :(得分:1)
试试这个:
curl_setopt($ch, CURLOPT_POSTFIELDS, array('username' => $_POST['username'], 'passwd' => $_POST['passwd']));
答案 1 :(得分:1)
在我看来,将用户名和密码作为HTTP HEADER AUTHENTICATION with CURL传递的最佳方式(安全)方法。
if(isset($_POST['thisvalue'])) {
$username = $_POST['username'];
$passwd = $_POST['passwd'];
$data = array('serialno' => '12345');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.domain.com/scripts/curl/index_general.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_USERPWD,'username:password'); // set your username and password
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_REFERER,'http://www.domain.com.au');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
$result = curl_exec($ch);
curl_close($ch);
echo $result;
}
在index_general.php
中您可以访问http用户名和密码
$_SERVER['PHP_AUTH_USER'] and $_SERVER['PHP_AUTH_PW']
答案 2 :(得分:1)
除了凭证安全性,如果您想快速回答“CURL +传递$ _POST变量/数组”的标题主题而不需要担心敏感数据,可以试试这个:
$post_fields = '';
foreach ( $_POST as $a => $b ) { $post_fields .= $a.'='.$b.'&'; }
$post_fields = substr( $post_fields, 0, -1 );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_fields );
然后您不需要手动枚举任何可能的POST字段。