我运行Drupal 7网站与俄罗斯多人纸牌游戏,并不得不阻止一些非常恼人的球员每4-5天。
在Drupal之前,我使用的是phpBB 3。当这些人来自一个小城市/村庄时,我会把他们的IP网络添加到防火墙规则中,这样他们就不能用新的邮件地址重新注册了。这在我的情况下效果很好,我的问题不是关于这项政策的。
我的问题是,对于Drupal,我找不到用户id使用的最后一个IP地址。也就是说,施虐者是由其他用户向我报告的,我知道他的uid,但我在日志中找不到他的IP地址,因为:
发布于 2011-03-29 09:08:28
如果启用了统计模块,则“访问日志”表包含所有访问者的IP。
SELECT hostname FROM accesslog WHERE uid = %UID_FOR_YOUR_USER% LIMIT 1如果您没有启用统计数据,我建议您放弃它,即使这样做也是如此,因为启用它会导致严重的性能损失。
在这种情况下,您可以使用sessions表:
SELECT hostname FROM sessions WHERE uid = %UID_FOR_YOUR_USER% LIMIT 1前者相对于后者的好处是,第一个将始终显示最新的主机名,而后者可能并不总是最新的。
发布于 2011-03-28 22:44:44
据我所知,Drupal没有在用户配置文件中报告用户使用的IP。您可以创建一个自定义模块,验证用户使用的IP,并将其记录在您自己的数据库表中;然后,您可以将其显示在用户配置文件中,显示给拥有正确权限的用户(例如,具有管理用户权限的用户)。
您需要的函数是ip地址_地址(),您可以在钩子_用户_登录()的实现中使用它。实现钩子_用户_视图()之后,您可以使用正确的权限向用户显示这些信息。
发布于 2011-03-28 23:08:26
如果使用的是数据库日志模块,则Drupal将这些信息存储在hostname列下的看门狗表中。您可以编写自定义查询以获取此信息,也可以使用视图监视模块 (目前仅为7.x提供一个开发版本,因此我不确定它在Drupal 7中的工作效果如何)将该表公开给视图。
https://drupal.stackexchange.com/questions/1521
复制相似问题