我目前正在编写一个脚本来捕获按打印屏幕的用户,完成后它将提交以下信息:
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 运行在服务器上,不知道浏览器上发生了什么。如果存在解决您的问题的良好解决方案,它将遵循以下设计模式:
- 在 JS 中,您为
screenshot
注册一个监听器。 Activity - 用户截取屏幕截图
- 你的监听器被触发;它收集有关浏览器上下文的信息(用户信息、屏幕截图)并将其提交给 PHP 脚本。
- 在 PHP 中,您记录 IP 地址、日期以及数据库中提交的信息
我认为的问题是,一开始就很难可靠地检测到屏幕截图。当浏览器未处于焦点时,它可以由与浏览器完全独立的应用程序获取。在这种情况下,浏览器将不知道已拍摄屏幕截图,您的应用程序也不会。
甚至可以用相机对准计算机屏幕来拍摄屏幕截图。无法在浏览器内阻止用户保存她在浏览器中看到的内容。我认为你应该退一步问自己:我为什么要这样做?我最终想要实现什么目标?另一种解决方案可能会出现。
关于javascript - 捕获按Print Screen的用户并提交用户IP、论坛名称、成员(member)ID和URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429011/