Php 如何在启用javascript的情况下测试%的用户
如果启用了javascript,尝试测试用户的#。我原以为这个技巧会奏效,但忘了php是以任何一种方式执行的Php 如何在启用javascript的情况下测试%的用户,php,javascript,Php,Javascript,如果启用了javascript,尝试测试用户的#。我原以为这个技巧会奏效,但忘了php是以任何一种方式执行的 <script> <?php $sql_insert = "INSERT IGNORE into `test_javascript` (`javascript`,`dateTime`) VALUES ('1',now())"; mysql_query($sql_insert,$link) or die("Insertion Faile
<script>
<?php
$sql_insert = "INSERT IGNORE into `test_javascript` (`javascript`,`dateTime`) VALUES ('1',now())";
mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error());
?>
</script>
<noscript>
<?php
$sql_insert = "INSERT IGNORE into `test_javascript` (`javascript`,`dateTime`) VALUES ('0',now())";
mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error());
?>
</noscript>
您可以使用AJAX,让javascript调用一个单独的页面,该页面将使用PHP处理您的数据库查询。您可以使用js和AJAX调用一个包含插入代码的PHP页面。因此,只有启用了javascript的人员才会进行调用
您可能希望在AJAX帖子中确保将某些内容传递到此PHP页面,以便任何碰巧登录此页面的人(如机器人或其他东西)都不会触发提交到DB。为访问您的服务器的每个用户生成唯一的ID(例如SessionID)。
使用此ID向计数器注入(如果不是allready计数的话)javascript发送ajax请求。加载页面时,可以在PHP中向数据库插入一个条目。这将提供页面请求的总数
在Javascript中,可以使用AJAX启动另一个请求。这将发布到PHP脚本,但需要Javascript才能正常工作。此查询将告诉您支持Javascript的浏览器的请求数
如果记录时间戳和IP地址(或任何其他状态变量),则应该能够将两个插入之间的条目关联起来
或者,另一种方法是让AJAX调用更新PHP查询插入的行。在我看来,这将是一种更干净的方法。记录每个人以计算有多少人访问您的网站(没有脚本或noscript标记),然后使用AJAX调用记录启用javascript的人。最简单的解决方案可能是将此注入您的页面:
<script>document.cookie = "javascript=1";</script>
document.cookie=“javascript=1”;
然后检查$\u COOKIE[“javascript”]
。当然,这只适用于第二页/请求。(因此,如果还没有cookie,更详细的探测方法会使用重定向到检测页面。)下面是一个策略概述:
首先,您需要一种适当可靠的方式来了解“用户”何时查看您的页面
其次,您需要将该id放入cookie中,这样一旦他们拥有cookie,您就可以对其进行测试;将其存储在db表中
现在,在页面加载时,如果cookie可用,请尝试使用JS设置另一个cookie;用用户ID对其进行加密
在页面请求上(或者使用AJAX),测试id的存在并测试cookie;将其存储在一个表中,其中用户id和测试cookie字段都是唯一的
执行查询以查看有多少id没有相应的测试cookie值
您可以像其他人建议的那样使用ajax,也可以只记录每个人的日志并插入添加以下内容的脚本
document.write('<img src="/javascript-enabled-tracking" width="0" height="0"/>');
document.write(“”);
指向计算支持javascript的人员的php脚本
此外,您可能可以将图像放入noscript
部分,在这种情况下,您不需要javascript,它将跟踪未启用js的灵魂。您应该能够为页面请求分配一个ID,将其作为HTML请求记录到数据库中,然后添加类似的内容
document.write('<img src="/javascript-enabled-tracking" width="0" height="0"/>');
当服务器端代码在客户端之前执行时,两个PHP块都将运行,因此您的脚本
/noscript
是不相关的
您可以在第一个页面加载时通过PHP编写cookie,然后使用JS设置另一个cookie。在下一个页面加载中,您可以检查是否已设置了两个cookie,如果仅设置了PHP cookie,则可以假设JS已禁用。当然,如果用户禁用了cookies,那么您将不知道
或者,您可以使用script
/noscript
加载跟踪像素图像
<script>
trackingPixel = new Image();
trackingPixel.src = '/tracking.php?yesjs';
</script>
<noscript>
<img src="/tracking.php?nojs" alt="">
</noscript>
trackingPixel=新图像();
trackingPixel.src='/tracking.php?yesjs';
然后让tracking.php文件根据需要记录信息,并在将来的请求中禁用检查。确保在脚本末尾返回适当的内容(MIME类型、内容等)。这不是工作原理。/完全是浏览器端的。不过这很有趣。就像《代码》中的Madmartigan。。。这是未来:-)顺便说一句,这里不需要任何noscript标记。没有JS,没有AJAX,没有通过AJAX进行的数据库查询。我想在标签中添加相同类型的跟踪图像也会起作用,因为启用javascript的浏览器不应该调用该图像,但统计每个人可能更安全。我认为最佳的方法是统计每个人,而在noscript
中最酷,除了人们可能使用javascript,但是图像被关闭了。在这种情况下,iframe
应该可以。如果您想要无JS+无图像人员的统计信息,请使用iframe加载图像;-)OP没有要求那么多;-)这种策略可能产生误报的一种方法是,客户机有一个脚本禁用插件。我有一个文件不允许执行,但.js文件仍在下载中。