PHP如何实现最简单的访问记录(记录IP及时间)

haring 2008-10-15 01:51:23
能否实现最简单的方式
通过在页面内添加PHP语句的方式
实现,获取访问IP,并在页面显示(不显示来源地址只显示IP地址)
同时,记录访问IP及访问时间和访问页面,并以追加记录的形式,保存到TXT(非SQL数据库)文本文档当中...即系以文本的形式记录所有的访问记录
...全文
2191 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanqou149 2010-12-31
  • 打赏
  • 举报
回复
学习一下子嘛
tiamodolly 2009-02-05
  • 打赏
  • 举报
回复
简单易懂,不必太复杂!
dandande 2008-10-15
  • 打赏
  • 举报
回复
<?php
$ip=$HTTP_SERVER_VARS['REMOTE_ADDR'];//这句由服务器设置,查你的phpinfo().php
echo "你的ip是:".$ip;
$t="这个页面的名子/".date("Y.m.d")."/".$ip;
$fp=fopen("visit.txt",'a+');
fwrite($fp,$it."\n");
fclose($fp);
?>
程序猿之殇 2008-10-15
  • 打赏
  • 举报
回复

var _countBase = './count.php';//统计页面的url

var _type;
var _show;
var _showStr='';
var _iframe;
var _debug = false;

var _countPage = _countBase + '/count/count.php';

if( _iframe == true )
{
var _pageurl = escape(location.href);
var _referer = escape(document.referrer);
}
else
{
var _pageurl = escape(top.location.href);
var _referer = escape(top.document.referrer);
}var _countUrl = _countPage + '?'
+ '&counturl=' + _countBase
+ '&pageurl=' + _pageurl
+ '&referer=' + _referer
+ '&timezone=' + (new Date()).getTimezoneOffset()/60;

if( _debug )
{
document.write(_countUrl);
document.write("<iframe src='" + _countUrl + "' width=100% height=500></iframe>");
}
else
{
document.write("<script src='" + _countUrl + "'></script>");



//获取IP,获取js传过来的数据,
fopen('./log/xxx.log', 'a+');
//写入,格式自己写
...
//关闭
...
yeah920 2008-10-15
  • 打赏
  • 举报
回复
学习了。帮顶。
fxs_2008 2008-10-15
  • 打赏
  • 举报
回复
如果要用PHP,则必须一直是PHP程序才能行,如查静态页,则需要嵌入 iframe或frame
另一个方法是js获取并直接显示,同时将IP传给PHP
xiaoya_php 2008-10-15
  • 打赏
  • 举报
回复
获取IP直接用$_SERVER['REMOTE_ADDR']不就得了,怎么搞的那么复杂呢?
hicms 2008-10-15
  • 打赏
  • 举报
回复
对了!记住在建一个interview.txt这个文件。
hicms 2008-10-15
  • 打赏
  • 举报
回复
你好!我写了很久。不知道这不是你想要的?
我说说的的思路:
首先我是我是获取当前访问的用户的IP(用PHP)
然后获取当前页面的URL(用PHP)
获取当前页面的TITLE标签的innerHTML{因为FireFox他不支持innerText)} (用JavaScript)
接着使用Ajax 把获取的数据提交到write.php这个文件里去进行txt文件的写入。
就这样。思路很简单。但是能实现的代码有点多。对不起。个人能力有限

ip.php文件:

<?php
//获取IP地址
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$onlineip = $_SERVER['REMOTE_ADDR'];
}
//获取当前的URL
$URL = 'http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hello</title>
</head>

<body>
<input type="hidden" id="userIP" value="<?php echo $onlineip ?>" />
<input type="hidden" id="pageURL" value="<?php echo $URL ?>" />
</body>
</html>
<script type="text/javascript">
t = document.getElementsByTagName('title');
var pageTitle = t[0].innerHTML;
//初始化ajax
function initXMLHttpClient() {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP' );
var success = false;
for (var i=0;i < XMLHTTP_IDS.length && !success; i++) {
try {
xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);
success = true;
} catch (e) {}
}
if (!success) {
throw new Error('Unable to create XMLHttpRequest.');
}
}
return xmlhttp;
}

function Ajax(url,Action,Method){
var formAction = Action;
var formMethod = Method;
//实现XMLHttpRequest这个类
ajax = initXMLHttpClient();
//打开这个文件
/**
formMethod表示地址 而且这个地址必须是成对的出现如:

<form action="action" method="GET"></form>

var url = "myPost=aa&myAjax=abc&aaa=1q23";
然后提交当服务器端的数据是以array 方式呈现出来的

*/
ajax.open(formMethod,formAction,true);
//声明表示什么方式来提交 就等于 form 属性里的enctype
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//像服务器端方式请求
ajax.send(url);
//判断是否方式完全和 接收完全
//如果都如果都成功就alert();
ajax.onreadystatechange = function(){
if(ajax.readyState == 4 && ajax.status == 200){
//alert(ajax.responseText);
}
}
}
var userIp = document.getElementById('userIP').value;
var userUrl = document.getElementById('pageURL').value;
url = 'ip='+userIp+'&url='+userUrl+'&title='+pageTitle;
Ajax(url, 'write.php', 'post')
</script>



write.php文件


<?php
$ip = $_POST['ip'];
$url = $_POST['url'];
$title = $_POST['title'];
$filename = 'interview.txt';
$content = "IP:$ip|URL:$url|TITLE|$title\n";
// 确定文件存在并且可写。
if (is_writable($filename)) {
// 我们将使用添加模式打开$filename,
// 因此,文件指针将会在文件的开头,
// 那就是当我们使用fwrite()的时候,$content将要写入的地方。
// a表示写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
if (!$handle = fopen($filename, 'a')) exit;
// 将$content写入到我们打开的文件中。
if (fwrite($handle, $content) === FALSE) exit;
fclose($handle);
}
###个人习惯不喜欢最后加结束符号



dandande 2008-10-15
  • 打赏
  • 举报
回复
fwrite($fp,$it."\n");写错了
改为fwrite($fp,$t."\n");

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧