已经有几天时间来处理干旱和问题并且无法完全解决它。 我需要计算广告的点击次数。当有人点击广告时,请在数据库中保存IP和日期......
广告代码如下:
<!-- Kontextová reklama Sklik -->
<div id="sklikReklama_12112"></div>
<script>
var sklikData = { elm: "sklikReklama_12112", zoneId: "12112", w: 468, h: 60 };
</script>
<script src="//c.imedia.cz/js/script.js"></script>
当有人点击广告时,我需要在表格ips上保存ip和日期以获取列ip,日期......
IP知道:
$ip_uzivatel = $_SERVER['HTTP_X_FORWARDED_FOR']
//uložení ip do db
$ipp = "'$ip_uzivatel'";
这种格式的时间:
$t=time();
$time=(date("Y-m-d",$t));
$times = "'%$time%'";
保存ip:
INSERT INTO `d130729_20`.`ips` ( `id` , `ip` , `time` ) VALUES ( NULL , '.$ipp.', '.$times.' );
那我怎么知道是否有人点击广告然后我将数据保存在数据库中呢?
答案 0 :(得分:0)
这可以使用javascript实现。单击带有id="sklikReklama_12112"
的div时,在javscript中创建一个触发器,并向另一个在数据库中插入的php脚本(insert.php)发送一个post请求。
所以你的代码就像这样:
<div id="sklikReklama_12112" style="width:468;height:60;"></div>
<script src="//c.imedia.cz/js/script.js"></script>
<script>
var sklikData = { elm: "sklikReklama_12112", zoneId: "12112", w: 468, h: 60 };
document.getElementById("sklikReklama_12112").onclick = function() {
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
xhr.open( 'post', 'insert.php', true );
xhr.send();
};
</script>
然后在新的insert.php中添加处理sql查询的代码,如下所示:
<?php
$db = new mysqli("YOUR_HOST", "YOUR_USERNAME", "YOUR_PASSWORD", "YOUR_DATABASE");
mysqli_set_charset ( $db , "utf8" );
$ip_uzivatel = $_SERVER['HTTP_X_FORWARDED_FOR'];
//uložení ip do db
$ipp = "'$ip_uzivatel'";
$t=time();
$time=(date("Y-m-d",$t));
$times = "'%$time%'";
$db->query("INSERT INTO `d130729_20`.`ips` ( `id` , `ip` , `time` ) VALUES ( NULL , '.$ipp.', '.$times.' );");
?>
insert.php不会出现在用户中,只会在数据库中插入数据。我希望这有效并解决你的问题。请让我知道!
修改强>
由于onclick功能不显着(显然),因为在广告的div中有一个iframe,我在这个stackoverflow answer找到了我测试和工作的解决方案。因此,经过一些修改以便根据您的问题进行调整,以下是您需要的代码:
<div id="sklikReklama_67864"></div>
<script>
var sklikData = { elm: "sklikReklama_67864", zoneId: "67864", w: 468, h: 60 };
</script>
<script src="//c.imedia.cz/js/script.js"></script>
<script>
var monitor = setInterval(function(){
var elem = document.activeElement;
if(elem && elem.tagName == 'IFRAME'){
elem.blur();
var xhr = (window.XMLHttpRequest) ? new XMLHttpRequest() : new activeXObject("Microsoft.XMLHTTP");
xhr.open( 'post', 'insert.php', true );
xhr.send();
}
}, 100);
</script>
这段代码的作用是每100毫秒检查一次(最后一行中的'100',你可以根据需要改变它)。如果焦点在iframe上,则表示用户单击了广告,然后将请求发送到insert.php脚本,以便执行数据库查询。 insert.php保持不变,因为它工作正常。如果有效,请告诉我。