我目前正在编写一个脚本来捕获按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
};
答案 0 :(得分:0)
您的代码无效,因为它既不是有效的JavaScript,也不是有效的PHP。您从<script>
标记和JavaScript变量声明var afterPrint
开始,但是您可以使用PHP
代码进行操作。
有谁可以帮我完成这个或指出我的权利 方向:)
PHP和JavaScript不在相同的上下文中运行。 PHP在服务器上运行,不知道浏览器上发生了什么。如果存在问题的良好解决方案,则会遵循以下设计模式:
screenshot
事件我认为问题在于,首先可靠地检测屏幕截图非常困难。当浏览器不在焦点时,它可以由与浏览器完全分离的应用程序进行。在这种情况下,浏览器不知道截图已被拍摄,您的应用程序也不会。
甚至可以使用指向计算机屏幕的相机拍摄屏幕截图。阻止用户保存她在浏览器中看到的内容无法在浏览器中完成。我想你应退后一步问自己:为什么我这样做?我最终想要实现的目标是什么?另一种解决方案可能会出现。