使用Curl
发布到文件我正在尝试在用户进入网站后立即发布文件,假设他们点击了广告。
示例网址= http://myFabSite.com/?tr=213
这是我正在尝试的但它没有捕获tr
网址变量或引荐来源:
if($_GET['tr']){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://myFabSite.com/actions/tracksAds.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
$data = array(
'referrer' => $_SERVER['HTTP_REFERER'],
'track_code' => $_GET['tr']
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
}
trackAds.php:
$mysqli = dbConnect();
$referrer = $mysqli->real_escape_string(urldecode(trim($_REQUEST['referrer'])));
$track_code = $mysqli->real_escape_string($_REQUEST['track_code']);
$query = "insert into ad_tracking ( tracking_code, referrer ) VALUES ( '$track_code', '$referrer' )";
$result = $mysqli->query($query);
有什么明显的吗?
更新
这来自print_r($data);
Array
(
[referrer] => none
[track_code] => fb1
)
这是来自trackAds.php的$ query
insert into ad_tracking ( tracking_code, referrer ) VALUES ( '', '' )
因此,数组未完全或正确地传递给trackAds.php
答案 0 :(得分:0)
您在第一行的$_GET[tr]
中缺少引号。将其更改为$_GET['tr']
。
另外,在$_POST
中使用$_REQUEST
代替trackAds.php
。这里很有可能你无意中获得了cookie值而不是POST值,或者只是在$_REQUEST
中有错误的数据。 See this page in the documentation
答案 1 :(得分:0)
实际上找到了一种不同的方法,但仍然不知道为什么其他方法没有。
这假定PHP 5 +
$url = 'http://myFabSite.com/actions/tracksAds.php';
$data = array('referrer' => $_SERVER['HTTP_REFERER'], 'track_code' => $_GET['tr']);
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);