我有一个HTML主页。我希望每次有人查看页面时都能输出到服务器上的文本文档。
我想把IP地址,页面和日期/时间放在任何人都知道的简单方法吗?
如果必须在html之外完成,我宁愿使用ASP。
答案 0 :(得分:1)
正如@Alp所说,PHP将是最佳选择:
$_SERVER['REMOTE_ADDR']; //gives you the visitor's IP address
basename($_SERVER["SCRIPT_NAME"]); //gives you the page name
date(); // gives you the current date
然后,只会运行一个小脚本,将其写入每个页面上的文件。
可能值得关注Google Analytics - 它提供了很多关于访问者的有用统计数据(不是100%你可以获得个人IP地址,有人可以澄清这个吗?)
编辑:
ASP.NET
Request.ServerVariables["REMOTE_ADDR"]; // ip
Request.ServerVariables["HTTP_REFERER"]; // page
答案 1 :(得分:1)
首先,将页面重命名为.aspx
扩展名,并在文件后面添加代码。
其次,将此方法添加到后面的代码中:
private void WriteLog()
{
string currentFileName = Path.GetFileNameWithoutExtension(Request.FilePath);
string logFileName = string.Format("{0}_{1}.log.txt", currentFileName, DateTime.Now.ToString("ddMMyyyy"));
string logFilePath = Server.MapPath(logFileName);
string IP = Request.ServerVariables["REMOTE_ADDR"];
string logMessage = string.Format("[{0}] [IP: {1}] [Page: {2}]", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), IP, Request.FilePath);
File.AppendAllLines(logFilePath, new string[] { logMessage });
}
最后只需在Page_Load
事件中调用上述方法,例如
protected void Page_Load(object sender, EventArgs e)
{
WriteLog();
}
这将创建与.aspx
同名的文本文件(在同一位置)加上当前日期,以避免使用数百万行阻塞同一文件,并为每次点击附加一行。
编辑:这是.NET 4.0代码,因此您必须在Visual Studio中将其定义为目标框架(如果您正在使用它),并且在IIS配置中。工作室应更新web.config
,如果您不使用它,以下是额外的行:
<system.web>
<httpRuntime requestValidationMode="2.0" />
<compilation debug="true" targetFramework="4.0" />
</system.web>
答案 2 :(得分:0)
如果您的服务器支持PHP,您可以使用PHP。
答案 3 :(得分:0)
您可以使用Log4Net等现有日志框架。