【问题标题】:Capturing Users Who Press Print Screen and Submitting User IP, Forum Name, Member ID, and the URL捕获按下Print Screen的用户并提交用户IP、论坛名称、会员ID和URL
【发布时间】:2016-11-20 14:32:44
【问题描述】:

我目前正在编写一个脚本来捕获按下打印屏幕的用户,完成后它将提交以下信息:

成员 ID、姓名、IP、日期、网址

我还希望它上传他们筛选的内容并将其上传到 imgur,并在数据库中也有指向该链接的链接。

我目前正在编写脚本,这就是我目前所拥有的。

谁能帮我完成这个或指出我正确的方向:)

<script>
var afterPrint = function() {
     // Get member ID
                $ips_username = $this->request['ips_username'];
                $this->DB->build(array(
                    'select' => 'member_id',
                    'from'   => 'members',
                    'where'  => 'name = "' . $ips_username . '"'
                ));
                $this->DB->execute();
                $row = $this->DB->fetch();
                $member_id = $row['member_id'];

                // Get IP
                $ip = '';
                if (getenv('HTTP_CLIENT_IP'))
                   // $ip = getenv('HTTP_CLIENT_IP');
                //else if(getenv('HTTP_X_FORWARDED_FOR'))
                    $ip = getenv('HTTP_CF_CONNECTING_IP');
                else if(getenv('HTTP_CF_CONNECTING_IP'))
                    $ip = getenv('HTTP_CF_CONNECTING_IP');
                else if(getenv('HTTP_X_FORWARDED'))
                    $ip = getenv('HTTP_X_FORWARDED');
                else if(getenv('HTTP_FORWARDED_FOR'))
                    $ip = getenv('HTTP_FORWARDED_FOR');
                else if(getenv('HTTP_FORWARDED'))
                   $ip = getenv('HTTP_FORWARDED');
                else if(getenv('REMOTE_ADDR'))
                    $ip = getenv('REMOTE_ADDR');
                else
                    $ip = 'UNKNOWN';       

                // Connect to logs database
                $conn = mysqli_connect("localhost","","","");

                if (mysqli_num_rows($result) == 0) {
                    // New IP for member ID, insert new row
                    // Get current forum display name
                $this->DB->build(array(
                    'select' => 'members_display_name',
                    'from'   => 'members',
                    'where'  => 'member_id = ' . $member_id . ''
                ));
                $this->DB->execute();
                $row = $this->DB->fetch();
                $current_name = $row['members_display_name'];

                    mysqli_query($conn, 'insert into screenshot_logs(MEMBER_ID,NAME,IP,DATE,URL)
                   values(
                       ' . $member_id . ',
                       "' . $current_name . '",
                       "' . $ip . '",
                       NOW(),
                   );');
                } 

                //End screenshot tracking
};

【问题讨论】:

  • 你在javascipt里面写过php代码吗?
  • 如果有人能帮我弄清楚为什么这不起作用,我将不胜感激:)
  • 我对语法感到困惑。这是 PHP 吗?你从一个&lt;script&gt;标签和一个var关键字开始声明一个暗示Javascript的变量,但其余的代码似乎是PHP
  • 您需要更具体地了解您正在努力解决的问题。我们无法帮助您完成您的代码,但我们可以帮助您了解为什么特定的事情可能会或可能不会工作。
  • 基本上我要做的是捕获用户打印屏幕何时可以提交他们正在访问的当前 URL、他们在 IPB 论坛上的成员 ID、他们的 IP 和他们这样做的日期。

标签: javascript java php html mysql


【解决方案1】:

您的代码将无法运行,因为它既不是有效的 JavaScript,也不是有效的 PHP。您从 &lt;script&gt; 标记和 JavaScript 变量声明 var afterPrint 开始,然后使用 PHP 代码。

谁能帮我完成这个或指出我的正确方向 方向:)

PHP 和 JavaScript 不在同一个上下文中运行。 PHP 在服务器上运行,不知道浏览器上发生了什么。如果您的问题存在一个好的解决方案,它将遵循以下设计模式:

  1. 在 JS 中,为screenshot 事件注册一个监听器
  2. 用户截图
  3. 您的监听器被触发;它收集有关浏览器上下文的信息(用户信息、屏幕截图)并将其提交给 PHP 脚本。
  4. 在 PHP 中,您记录 IP 地址、日期和提交到数据库中的信息

我看到的问题是,首先要可靠地检测屏幕截图确实很困难。当浏览器不在焦点时,它可以由与浏览器完全分离的应用程序获取。在这种情况下,浏览器将不知道屏幕截图已被截取,您的应用程序也不会。

屏幕截图甚至可以用相机对准电脑屏幕来拍摄。不能在浏览器中阻止用户保存她在浏览器中看到的内容。我认为你应该退后一步问问自己:我为什么要这样做?我最终想要达到什么目的?可能会出现另一种解决方案。

【讨论】:

  • 我并不是要阻止用户使用其他程序等。我只需要能够在用户按下打印屏幕按钮或任何变体并提交其 IP 时捕获用户, IPB 数据库中的成员 ID,他们按下它的数据,以及他们当前所在的 URL。我不介意花钱请人帮我完成这项工作。它正在IPB论坛中实施,以寻找试图窃取论坛数据的间谍。我并不是要阻止他们这样做或使用任何程序。但是,如果用户愚蠢到可以打印屏幕,我想知道。
  • 所以你可以接受别人截图;您不是想阻止它们,只是想知道它们何时打印屏幕?
  • BettleJuice 你的额外正确。这就是我想要做的一切:) 有可能吗?
  • 基本上我要做的是捕获用户打印屏幕何时可以提交他们正在访问的当前 URL、他们在 IPB 论坛上的成员 ID、他们的 IP 和他们这样做的日期。
  • 如果你愿意付钱,你可以雇我来做,但我在解决方案中所说的适用。基本上没有办法可靠地知道用户何时截取了屏幕截图,因为您的脚本位于浏览器中,并且可以在浏览器未聚焦时截取屏幕截图(这意味着浏览器无法判断用户在做什么)跨度>
猜你喜欢
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
相关资源
最近更新 更多