javascript - 捕获按Print Screen的用户并提交用户IP、论坛名称、成员(member)ID和URL

标签 javascript java php html mysql

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

MEMBER_ID、名称、IP、日期、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
};

最佳答案

您的代码将无法工作,因为它既不是有效的 JavaScript,也不是有效的 PHP。您从 <script> 开始标签和 JavaScript 变量声明 var afterPrint ,但你可以用 PHP 来跟进代码。

Could anyone please help me finish this or point me in the right direction :)

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

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

我认为的问题是,一开始就很难可靠地检测到屏幕截图。当浏览器未处于焦点时,它可以由与浏览器完全独立的应用程序获取。在这种情况下,浏览器将不知道已拍摄屏幕截图,您的应用程序也不会。

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

关于javascript - 捕获按Print Screen的用户并提交用户IP、论坛名称、成员(member)ID和URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429011/

相关文章:

javascript - 如何在 react 中用 Jest 和 enzyme 测试表单提交?

javascript - 我可以通过 API 调用在 AngularJS 中动态创建路由吗?

java - 尝试压缩转换程序

php - 如何在 PHP (Laravel) 中使用多个接口(interface)实现?

javascript - 无法使用 jquery/ajax/json 从 mysql 获取数据以选择框

PHP 7.2.14 "short_open_tag = On"被忽略

javascript - Angular 2.什么是渲染 : [ngClass] or class ="{{}}"? 更快

javascript - 如何在 JavaScript 文件中嵌入 CSRF token ?

java - 如何为 Swagger Codegen 处理 org.springframework.core.io.Resource

java - 在 Java 中获得与 Python 相同的左移值