Google Analytics PHP(发送信息)

2024-05-11

大意

我正在开发一个项目,我需要使用 Google Analytics 服务器端。我不需要检索信息,但我需要发送信息。我最终可以发送 js 脚本客户端,但在这种情况下它不是一个选项。

以下大多数链接都非常旧。 2012年~

检索 - 不是我需要的

我读过多篇 StackOverflow 帖子,但它们只提到了检索信息的方法。

用于 Google Analytics 的 PHP API(SO) https://stackoverflow.com/questions/12794674/php-api-for-google-analytics

发送 - 我需要什么

有一篇文章讨论了发送信息,但该库的 GitHub 已被弃用。

Google Analytics PHP API 重定向 URI (SO) https://stackoverflow.com/questions/12035292/google-analytics-php-api-redirect-uri

谷歌 api php 客户端(GOOGLE) https://code.google.com/p/google-api-php-client/

Question

如何使用 PHP 将信息发送到我的 Google Analytics 帐户?谢谢


要特别小心...Google 能够使用 cookie 和浏览器功能检索有关用户代理、位置、IP、活动、语言等的大量用户信息。 因此,所有命令通常都是使用客户端 js 脚本发送的。 如果您想在服务器端工作,则必须在发送 HIT 之前处理在统计数据中收集所需的所有必要信息。 例如,如果您没有正确处理 UUID,Google 会将每个 HIT 视为“新访客”。如果你想知道用户的地理位置,并且你的服务器在爱尔兰,那么用户的每一次点击都会被认为是爱尔兰人所做的。每个 ip 都与您的服务器相同,依此类推。 我使用 php 制作了一个考虑所有这些问题的自定义库。 基本上你可以使用curl:

function SendGoogleEvent($userid,$category,$action, $label='',$eventvalue=0,$campaign_name='direct',$campaign_source='organic',$campaign_medium='organic'){
$strCookie='';
foreach ($_COOKIE as $key => $value) {
    $strCookie.=$key.'='.$value.'; ';
}
$fields_string='';
$fields = array (
    'v' => 1,
    'tid' => "YOUR GA ID",
    'cid' => $userid,
    'uip' => $_SERVER['REMOTE_ADDR'],
    'dh' => "your site address",
    'ul' => 'it-it', // In this case i dont care the user language
    't' => 'event',
    'ec' => urlencode($category),
    'ea' => urlencode($action),
    'el' => urlencode($label),
    'ev' => $eventvalue
);  
if ($campaign_name!='direct') {
    $fields["cn"]=$campaign_name;
}
if ($campaign_source!='organic') {
    $fields["cs"]=$campaign_source;
}
if ($campaign_medium!='organic') {
    $fields["cm"]=$campaign_medium;
}
if (!(substr($_SERVER['HTTP_REFERER'], 0, strlen("your site url")) === "your site url")&&$campaign_name=='direct') {
    $fields["dr"]=$_SERVER['HTTP_REFERER'];
}
foreach($fields as $key=>$value) {
     $fields_string .= $key.'='.$value.'&'; 
}
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, utf8_encode($fields_string));       
curl_setopt($ch,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_URL,"https://ssl.google-analytics.com/collect");
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);            
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );
curl_exec( $ch );
curl_close($ch);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Analytics PHP(发送信息) 的相关文章

  • PHP 的password_verify() 是否可以抵御极长的密码(DoS 攻击)?

    一般攻击场景 2013 年 Django 存在一个普遍漏洞 攻击者可以通过非常大的密码创建极其密集的 CPU 计算 请参阅此处的安全通知 https www djangoproject com weblog 2013 sep 15 secu
  • PHP 异常处理与 C#

    这是一个非常基本的问题 我希望如此 我所做的大部分异常处理都是使用 C 进行的 在 C 中 任何在 try catch 块中出错的代码都会由 catch 代码处理 例如 try int divByZero 45 0 catch Except
  • 将 PHP 中的 openssl AES 转换为 Python AES

    我有一个 php 文件 如下所示 encryption encoded key c7e1wJFz PBwQix80D1MbIwwOmOceZOzFGoidzDkF5g function my encrypt data key encrypt
  • 如何在没有 session_destroy 的情况下销毁 Zend_Session_Namespace

    我使用以下方法在临时会话中存储一些值 job new Zend Session Namespace application 我如何只销毁会话应用无需清除所有会话 要从会话中删除值 请对对象属性使用 PHP 的 unset 函数 假设 job
  • 如何使用 php DOM 获取 内的值?

    我如何使用 php DOM 获取 内的值 这是我的 xml 中的一些代码
  • Laravel 读写连接不同步

    我在 Laravel 5 2 应用程序中使用读写 MySQL 连接设置 mysql gt write gt host gt env DB HOST WRITE localhost read gt host gt env DB HOST RE
  • Apache 子进程已退出,状态为 255

    经过大量的搜索 尝试 修复 等待和哭泣 在我放弃之前 我想为这个错误抓住最后的机会 我们正在奔跑Microsoft Windows Server 2012 Apache 2 4 6 Win64 OpenSSL 1 0 1e PHP 5 5
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 在 PHP 中将整数转换为十六进制值

    如何将PHP中第一类中的数字转换为第二类中的数字 是否有内置函数来转换数字 也是我的标题 将整数转换为十六进制值 甚至正确 class Permission const READ 1 const UPDATE 2 const DELETE
  • 当路由不存在时重定向 laravel 4

    我正在使用 laravel 4 当我的项目处于生产模式时 我得到 抱歉 找不到您要查找的页面 当我到达一条不存在的路线时 当我 grep 我的代码时 它在两个地方找到 vendor symfony debug Symfony Compone
  • 从检查元素隐藏 ''

    我有这个 HTML 和 PHP 联系表
  • PHP-如何根据条件配对数组中的项目

    如何将数组中的项目配对 假设我有一个数组Fighters 我想根据他们的情况将他们配对Weights 体重最接近的拳手应作为配对最佳匹配 但如果他们是在同一个团队中 他们不应该配对 团队 1 战斗机A体重为60 战斗机B体重为65 2队 战
  • 控制数据是否存在于数组中

    我在mysql中有两个不同的表 我正在使用curl从json文件中获取数据 我的第一个表名称是 tblclients 该表存储客户端数据 我的第二个表名称是 tblcustomfieldsvalues 该表使用 tblclients 表的
  • 使用 Xpath 进行部分匹配

    我正在尝试创建一个搜索功能 允许使用 Xpath 按歌曲标题或流派进行部分匹配 这是我的 XML 文件
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate
  • sqlite3和pdo_sqlite有什么区别

    我正在将我的 Web 应用程序从 MySQL 迁移到 SQLite 数据库 我发现有两个 PHP 扩展用于与 sqlite 通信 php sqlite3 dll and php pdo sqlite dll 什么扩展比较好 或者另一个问题
  • 我如何向 Windows Server IIS 7 中的文件夹授予权限

    我是 PHP 和 Windows Server 新手 在查看我在 PHP 中创建的表单时遇到以下错误 Error in exception handler The stream or file C inetpub wwwroot wrp a
  • 使用 Webmin 设置 cron 作业

    我正在尝试使用 Webmin 设置一个 Cron 作业每 5 分钟运行一次 它需要定位 php 文件并运行该文件中的 php 脚本 当我在 命令 字段中输入文件路径时 它不起作用 我只是想知道我做错了什么 以及我需要 Cron 作业运行的文
  • 管理产品页面自定义字段显示在购物车和结账中

    我在产品页面的常规设置选项卡上的 WooCommerce 管理中创建了一个自定义字段 以插入几天的制造时间 我想在购物车和结帐页面上每个产品名称上方显示此自定义字段值 这是我的代码 Insert a Custom Admin Field f
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时

随机推荐

  • Spring 的 LdapTemplate 搜索:PartialResultException:未处理的延续引用;剩余名称 '/'

    我通过 LDAP 为某个使用 spring 制作的应用程序添加用户 虽然这适用于大多数情况 但在某些情况下 它不起作用 检索我使用的用户 public class LdapUserServiceImpl implements ILdapUs
  • 用于将用户发送至设备应用商店上的应用评论页面的 URL

    为了将 iTunes App Store 置于最前面并打开它以显示应用程序的评论页面 要启动的 URL 是什么 我想将我的用户发送到 撰写评论 页面 其他一些 SO 答案提供了如下 URL 但它似乎不起作用 itms apps itunes
  • 如何在服务器上获取球衣日志?

    我正在使用球衣进行 REST WS 如何在服务器端启用球衣日志 很长的故事 我收到客户端异常 但我在 tomcat 日志中没有看到任何内容 它甚至没有到达我的方法 由于堆栈跟踪显示 toReturnValue 它确实从服务器获取了一些内容
  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • JAAS keytab 配置的相对路径

    我有一个系统 其中 NET 客户端使用 Kerberos 针对 Java 服务器进行身份验证 一切正常 但我正在尝试改进服务器配置 目前一个keytab根目录中需要文件C 因为我的jaas配置文件看起来像这样 Server com sun
  • Elastic Beanstalk、Bundler 找不到 gem“bundler”的兼容版本

    我已经尝试过将 Elastic Beanstalk 用于 Rails 当我运行 eb deploy 时出现此错误 我需要至少安装bundler 1 8 4 知道如何解决这个问题吗 Bundler could not find compati
  • Angular2排序数组用于在html中的*ngFor中显示

    我正在循环浏览所有帖子 li 当显示每个帖子的日期时 我会执行以下操作 post date date yyyy MM dd HH mm ss 我想要做的是按最新的第一个顺序显示所有帖子 我尝试过使用类似的管道 li li import Pi
  • 在 C# 中使用自定义千位分隔符

    在显示字符串时 我尝试不使用 字符作为千位分隔符 而是使用空格 我想我需要定义一种自定义文化 但我似乎做得不对 有什么指点吗 例如 将 1000000 显示为 1 000 000 而不是 1 000 000 no String Replac
  • 列表框:添加组合框作为项目?

    是否可以将列表框的每个项目都作为组合框 我需要这个 因为我将列表框设置为可检查 然后我需要让用户从列表中每个元素的不同选项中进行选择 Thanks 如果您不打算分发您的应用程序 那么您还可以查看 TreeView 控件 请参阅此示例 COD
  • 如何测试send_file烧瓶

    我有一个小型烧瓶应用程序 它需要上传一些图像并将它们转换为多页 tiff 没什么特别的 但是如何测试多个文件的上传和文件下载呢 我的测试客户端 class RestTestCase unittest TestCase def setUp s
  • CMake 中的 FindSDL2 发生了什么?

    我在游戏中使用 SDL2 我一直使用自定义 FindSDL2 cmake 因为标准 CMake 集中没有 然而 前段时间确实出现了有关 FindSDL2 的帖子 例子 红迪网帖子 https www reddit com r opengl
  • 捕获 SQLAlchemy 异常

    我可以使用什么捕获 SQLAlechmy 异常的上层异常 gt gt gt from sqlalchemy import exc gt gt gt dir exc ArgumentError CircularDependencyError
  • 从外部material-ui组件访问主题

    我有一个使用标准深色主题的主题提供商 我希望能够从我自己的自定义组件访问该主题的详细信息 但我不知道如何做到这一点 在下面的例子中 this props theme未定义 ReactDOM render
  • 在 LP2844Z(Zebra 打印机)上的收据中包含 PNG [重复]

    这个问题在这里已经有答案了 我正在致力于创建一个基于 HTML5 画布的签名 绘图框 目前我们在服务器上将画布保存为PNG 但可以轻松地将base64字符串保存在数据库中 现在的问题是我们如何在打印的收据上添加签名 目前我们使用 GF 字段
  • Pandas:如何删除以 nan 作为列名的多个列?

    根据标题 这是一个可重现的示例 raw data x this that this that this np nan np nan np nan np nan np nan np nan y np nan np nan np nan np
  • 为什么 as.character() 返回日期列表中的整数?

    我惊讶地发现 R 中出现以下行为 as character c Sys Date gt 1 2018 02 05 as character list Sys Date gt 1 17567 为什么会出现这种情况 也就是说 显然 17567
  • 如何在不显示父活动的情况下将一个全屏对话框片段替换为另一个全屏对话框片段?

    我有一个使用单个自定义 DialogFragment 类的活动 它的外观是数据驱动的 因此不同的调用看起来可能相当不同 它是 全屏 即 setStyle DialogFragment STYLE NO FRAME android R sty
  • 如何通过API退出Win32应用程序?

    我有一个使用 Win32 API 编写的 C Win32 应用程序 我希望强制它在其中一个函数中退出 有没有类似的东西Exit or Destroy or Abort 类似的东西会终止它吗 哎呀呀呀呀呀呀 不要做任何这些事情 exit 和
  • Vuex store.watch 只接受 Vue routerguard 中的函数

    我正在尝试观察并等待 Vue 路由器防护从 Vuex 获取最终值 但它会抛出异常 vuex store watch 只接受一个函数 这是代码 const isAdmin get store getters user isAdmin unde
  • Google Analytics PHP(发送信息)

    大意 我正在开发一个项目 我需要使用 Google Analytics 服务器端 我不需要检索信息 但我需要发送信息 我最终可以发送 js 脚本客户端 但在这种情况下它不是一个选项 以下大多数链接都非常旧 2012年 检索 不是我需要的 我