我想收集有人访问网页时可能获得的所有信息:例如:
clients screen resolution: <script type='text/javascript'>document.write(screen.width+'x'+screen.height); </script>
referer: <?php print ($_SERVER['HTTP_REFERER']); ?>
client ip: <?php print ($_SERVER['REMOTE_ADDR']); ?>
user agent: <?php print ($_SERVER['HTTP_USER_AGENT']); ?>
还有什么?
答案 0 :(得分:12)
这些是基本的信息。除此之外的任何事情都可以被视为类似间谍软件,而隐私权倡导者将[理所当然]对它不屑一顾。
从用户那里获取更多信息的最佳方式是询问他们,使字段成为可选字段,并告知用户您将使用该信息的确切内容。你会给他们邮寄一份时事通讯吗?
如果您计划向他们发送电子邮件,那么您必须使用“已确认的选择加入”方式 - 获得他们的同意(通过让他们回复电子邮件,使用特殊密码唯一编号,确认他们是允许您首先向他们发送简报或您计划发送给他们的任何通知。
只要您预先知道如何使用这些信息,并让用户选择决定如何使用它(默认情况下,这些选项都应该是“您没有权限”),您可能会吸引更多愿意信任您并为您提供更高质量信息的用户。对于那些不想透露任何关于他们自己的个人信息的人,不要浪费你的时间去尝试,因为他们中的许多人采取措施防止这种情况并且无论如何都要隐藏(这是他们的权利)。
答案 1 :(得分:5)
可以找到PHP可用的列表here。
如果您需要更多详细信息,可以考虑使用Browserhawk。
答案 2 :(得分:5)
使用这个小PHP获取客户机器的所有信息:
<?php
foreach($_SERVER as $key => $value){
echo '$_SERVER["'.$key.'"] = '.$value."<br />";
}
?>
答案 3 :(得分:4)
为了什么结局?
请记住,客户端IP现在几乎毫无意义。来自同一代理或相同NAT点的所有用户将具有相同的客户端IP。多年以后,所有的AOL流量来自几个代理,但现在实际的AOL用户数量可能超过代理:)。
如果您想要唯一地识别用户,则可以轻松地在apache(mod_usertrack)或您使用的任何框架中创建cookie。如果此人阻止cookie,请尊重这一点,并且不要尝试使用技巧来跟踪它们。或者接受谷歌的教训,使它变得如此有用,人们会选择实用程序而不是cookie担心。
请记住Javascript在客户端上运行。您的document.write()将在其网页上显示信息,而不是为您的服务器执行任何操作。您希望使用Javascript将此信息放入cookie中,或者如果您有任何表单,则使用表单提交存储。
答案 4 :(得分:1)
phpinfo(32);
打印包含整个可提取信息的表格。您只需将变量直接复制并粘贴到PHP代码中即可。
e.g:
_SERVER["GEOIP_COUNTRY_CODE"] AT
将使用php代码:
echo $_SERVER["GEOIP_COUNTRY_CODE"];
答案 5 :(得分:0)
我喜欢使用这样的东西:
$log = array(
'ip' => $_SERVER['REMOTE_ADDR'],
're' => $_SERVER['HTTP_REFERER'],
'ag' => $_SERVER['HTTP_USER_AGENT'],
'ts' => date("Y-m-d h:i:s",time())
);
echo json_encode($log);
您可以将该字符串保存在文件中,JSON非常小,只有一行。
答案 6 :(得分:0)
获取$ _SERVER变量的所有输出:
<?php
$test_HTTP_proxy_headers = array('GATEWAY_INTERFACE','SERVER_ADDR','SERVER_NAME','SERVER_SOFTWARE','SERVER_PROTOCOL','REQUEST_METHOD','REQUEST_TIME','REQUEST_TIME_FLOAT','QUERY_STRING','DOCUMENT_ROOT','HTTP_ACCEPT','HTTP_ACCEPT_CHARSET','HTTP_ACCEPT_ENCODING','HTTP_ACCEPT_LANGUAGE','HTTP_CONNECTION','HTTP_HOST','HTTP_REFERER','HTTP_USER_AGENT','HTTPS','REMOTE_ADDR','REMOTE_HOST','REMOTE_PORT','REMOTE_USER','REDIRECT_REMOTE_USER','SCRIPT_FILENAME','SERVER_ADMIN','SERVER_PORT','SERVER_SIGNATURE','PATH_TRANSLATED','SCRIPT_NAME','REQYEST_URI','PHP_AUTH_DIGEST','PHP_AUTH_USER','PHP_AUTH_PW','AUTH_TYPE','PATH_INFO','ORIG_PATH_INFO','GEOIP_COUNTRY_CODE');
foreach($test_HTTP_proxy_headers as $header){
echo $header . ": " . $_SERVER[$header] . "<br/>";
}
?>