1

我用过这个: Generate Google Analytics events (__utm.gif requests) serverside

这个: http ://www.garyrgilbert.com/blog/index.cfm/2008/10/21/Tracking-Digital-Content

构建一个 cfhttp 字符串,以便当用户点击一个页面时,它会调用谷歌分析。我这样做是因为我提供的页面是 XML 页面,我不能将 javascript 与 xml 混合使用。

我的问题是谷歌分析忽略了我的请求。我已经在普通的 html 服务器上激活了我的存储桶代码,所以它认为/知道它存在,但是现在当我调用我的任何 xml 服务器页面并从冷融合服务器发出 cfhttp 请求时,它没有被注册。

更新:

按照 Sergii 的建议,我做了一个转储来找出 cfhttp 正在做什么(我之前缺少一个导致它出错的变量),我现在得到一个 200 的 http 返回,尽管分析没有将请求应用到我的账户。

更新第二个,包括代码:

    <cfset var_utmac='UA-myUA'> <!--- enter the new urchin code --->
    <cfset var_utmhn='www.myaddress.co.uk'>
    <cfset var_utmn = RandRange(10000000,99999999)>
    <cfset var_cookie = RandRange(10000000,99999999)>
    <cfset var_random = RandRange(1000000000,2147483647)>
    <cfset var_today = now()>
    <cfset var_referer = #cgi.HTTP_REFERER#>
    <cfset var_uservar = 'jevans'>
    <cfset var_utmp= ''>
    <cfset apiname = 'listings.getlistings'>

    <cfhttp method="get" url="http://www.google-analytics.com/__utm.gif">
        <cfhttpparam type="url" name="utmwv" value="1" />
        <cfhttpparam type="url" name="utmn" value="#var_utmn#" />
        <cfhttpparam type="url" name="utmsr" value="-" />
        <cfhttpparam type="url" name="utmsc" value="-" />
        <cfhttpparam type="url" name="utmul" value="-" />
        <cfhttpparam type="url" name="utmje" value="0" />
        <cfhttpparam type="url" name="utmfl" value="-" />
        <cfhttpparam type="url" name="utmdt" value="#apiName#" />
        <cfhttpparam type="url" name="utmhn" value="#var_utmhn#" />
        <cfhttpparam type="url" name="utmr" value="#var_referer#" />
        <cfhttpparam type="url" name="utmp" value="#var_utmp#" />
        <cfhttpparam type="url" name="utmac" value="#var_utmac#" />
        <cfhttpparam type="url" name="utmcc" value="__utma%3D#var_cookie#.#var_random#.#var_today#.#var_today#.#var_today#.2%3B%2B__utmb%3D#var_cookie#%3B%2B__utmc%3D#var_cookie#%3B%2B__utmz%3D#var_cookie#.#var_today#.2.2.utmccn%3D(direct)%7Cutmcsr%3D(direct)%7Cutmcmd%3D(none)%3B%2B__utmv%3D#var_cookie#.#var_uservar#%3B" />
    </cfhttp>

有什么想法吗?

干杯

4

4 回答 4

1

查看您的代码,我猜您需要将&amp代码中的 's 替换为常规&符号。您只需要转义 & 符号即可验证 XML 文档等。如果您通过 URL 发送它们,那么它们可能不会被识别为分隔符。

我实际上会这样构建它:

<cfhttp method="get" url="http://www.google-analytics.com/__utm.gif">
    <cfhttpparam type="url" name="utmwv" value="5.1.2" />
    <cfhttpparam type="url" name="utmn" value="#var_utmn#" />
    ... all your other URL variables
<cfhttp>

这将使您的代码更易于阅读,并确保您的所有变量都以属性格式发送,而无需连接一个巨大的字符串。

于 2011-08-15T00:01:32.017 回答
0

看起来你的几个参数应该是不同的类型。您将它们全部作为 URL 参数发送。例如,应该将 HTTP_REFERER 作为 type="CGI" 发送。

查看我自己的 GA HTTP,我看到我的 URL 字符串中有 utmr=-

但该请求还发送了一个 CGI 标头,用于Referer:http: //12robots.com/

也许尝试使用 type="CGI" name="HTTP_REFERER" value="#CGI.HTTP_REFERER#" 添加另一个参数

于 2011-08-15T14:32:11.550 回答
0

您可能想看看它是如何在这个 PHP 类中完成的,看看您是否可以将它调整为您的 ColdFusion 代码。看起来需要设置的可能不止几个 URl 参数。很可能你需要更好地模拟一个真实的浏览器,让 GA 认为你是一个真实的浏览器。 http://code.google.com/p/serversidegoogleanalytics/

于 2011-08-15T16:58:07.830 回答
0

很确定 cfset var_today = now() 是错误的。GA 不知道什么是 ColdFusion 日期/时间对象

于 2013-06-12T15:17:27.960 回答