首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Impression Beacons读取服务器调用数据(像素)

如何使用Impression Beacons读取服务器调用数据(像素)
EN

Stack Overflow用户
提问于 2018-01-13 05:08:40
回答 1查看 75关注 0票数 0

我需要对使用像素发送服务器到服务器的信息有一些了解。我们使用validclick,他们说他们的信标必须发送到1x1透明图像。从我所做的一切来看,我找不到关于使用1x1 gif接收数据的基本“如何”。

我现在拥有的是一个带有gif的.php文件,然后是从URL读取查询字符串并将其插入数据库的脚本。

代码语言:javascript
复制
   <?php

    header('Content-Type: image/png');
    echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=');


   $conversion = $_SERVER['QUERY_STRING'];
    $info = explode("&", $conversion);
    $variables = array('id' => '', 'ts' => '', 'slotid' => '', 'q' => '', 'u' => '', 'ty' => '', 'nq' => '', 'nr' => '');
    foreach ($info as $i) {
        $temp = explode("=", $i);
        $variables[$temp[0]] = $temp[1];
    }

    // Connect to the database
    try {
        // Info to connect to the database
        $servername = "****";
        $dbusername = "****";
        $password = "****";
        $dbname = "****";

        // To connect to the database please
        $conn = new mysqli($servername, $dbusername, $password, $dbname);
        if ($conn->connect_error) {
            die('Connect Error (' . $conn->connect_errno . ') ' . $conn->connect_error);
        }
    } catch (mysqli_sql_exception $e) { 
        throw $e;
    }

    $variables['ts'] = str_replace("%", " ", $variables['ts']);
    echo $variables['ts'];
    $insert = "INSERT INTO validclickimpressions (id, ts, slotid, q, u, ty, nq, nr) " . 
        "VALUES ('" . $variables['id'] . "', '" .
            $variables['ts'] . "', '" .
            $variables['slotid'] . "', '" .
            $variables['q'] . "', '" .
            $variables['u'] . "', '" .
            $variables['ty'] . "', '" .
            $variables['nq'] . "', '" .
            $variables['nr'] . "')";

    if(!$conn->query($insert)){
        die('There was an error running the query "' . $insert . '" [' . $conn->error . ']');
    }

    $conn -> close;
?>

我想我只是错过了一些关于这些信标如何工作的基本理解。validclick应该将信息发送到此URL,并将这些变量附加到URL的末尾。因此,当我使用测试URL (例如:http://www.mywebsite.com/beacon_url/impression_beacon.php?id=1234&ts=2018-01-12%14:44:30&slotid=1234&q=1234&u=1234&ty=1234&nq=1234&nr=1234)进行访问时,这是有效的,但是当我们收到印象时,似乎不会将数据插入到表中。

编辑:我想我的问题是我的php和我的图片在一起。我认为页面只能包含图像。但是,如果从页面中删除信标,我不知道如何从信标接收数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 07:10:18

希望这段php代码能在未来帮助任何想要建立印象信标的人。这个代码是给因纽沃的。

代码语言:javascript
复制
/*
* YPA Impression BEACON END POINT
*/

// *** lowercase all param names ***
$_REQUEST = array_change_key_case($_REQUEST);

// Default impression args
$id = isset($_REQUEST['id']) ?  $_REQUEST['id'] : null; //  = coresponding impression ID
$ts = isset($_REQUEST['ts']) ?  $_REQUEST['ts'] : null; //  = unix timestamp of impression
$slotid = isset($_REQUEST['slotid']) ?  $_REQUEST['slotid'] : null; //  = location in page
$q = isset($_REQUEST['q']) ?  $_REQUEST['q'] : null; // = keyword
$u = isset($_REQUEST['u']) ?  $_REQUEST['u'] : null; // = landing page url
$ty = isset($_REQUEST['ty']) ?  $_REQUEST['ty'] : null; // = affid
$nq = isset($_REQUEST['nq']) ?  $_REQUEST['nq'] : null; // = number of ads requested for that ad unit / slot (New)
$nr = isset($_REQUEST['nr']) ?  $_REQUEST['nr'] : null; // = number of ads returned for that ad unit / slot (New)


// Your custom args defined in your YPA code block
// serveBeacon:"x=1&y=2&z=3", //string of key value pairs you want to hit this end point.
$x = isset($_REQUEST['x']) ?  $_REQUEST['x'] : null;
$y = isset($_REQUEST['y']) ?  $_REQUEST['y'] : null;
$z = isset($_REQUEST['z']) ?  $_REQUEST['z'] : null;

// write to your storage/db here


// Return image 1x1 gif content
header('Content-Type: image/gif');
echo base64_decode('R0lGODlhAQABAJAAAP8AAAAAACH5BAUQAAAALAAAAAABAAEAAAICBAEAOw==');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48234019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档