捕获按Print Screen并提交用户IP,论坛名称,成员ID和URL的用户

时间:2016-07-18 05:15:03

标签: javascript java php html mysql

我目前正在编写一个脚本来捕获按Print Screen的用户,当它完成时,它将提交以下信息:

MEMBER_ID,NAME,IP,DATE,URL

我还希望它上传他们筛选的内容并将其上传到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
};

1 个答案:

答案 0 :(得分:0)

您的代码无效,因为它既不是有效的JavaScript,也不是有效的PHP。您从<script>标记和JavaScript变量声明var afterPrint开始,但是您可以使用PHP代码进行操作。

  

有谁可以帮我完成这个或指出我的权利   方向:)

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

  1. 在JS中,您为screenshot事件
  2. 注册了一个监听器
  3. 用户截取屏幕截图
  4. 你的听众被触发;它收集有关浏览器上下文的信息(用户信息,屏幕截图)并将其提交给PHP脚本。
  5. 在PHP中,您记录了数据库中提交的IP地址,日期和信息
  6. 我认为问题在于,首先可靠地检测屏幕截图非常困难。当浏览器不在焦点时,它可以由与浏览器完全分离的应用程序进行。在这种情况下,浏览器不知道截图已被拍摄,您的应用程序也不会。

    甚至可以使用指向计算机屏幕的相机拍摄屏幕截图。阻止用户保存她在浏览器中看到的内容无法在浏览器中完成。我想你应退后一步问自己:为什么我这样做?我最终想要实现的目标是什么?另一种解决方案可能会出现。