点击javascript广告PHP

时间:2016-10-30 12:47:12

标签: javascript php jquery mysql

已经有几天时间来处理干旱和问题并且无法完全解决它。 我需要计算广告的点击次数。当有人点击广告时,请在数据库中保存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.' );

那我怎么知道是否有人点击广告然后我将数据保存在数据库中呢?

1 个答案:

答案 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保持不变,因为它工作正常。如果有效,请告诉我。