0

这是我的输入字段禁用代码

<input type="text" class="empl_date form-control" id="staffid" name="staffid" value="<?php echo $employeeworks[0]['employeeCode'];?>" arsley-maxlength="6" placeholder=" Schedule Date"  disabled />

如何防止在此字段中检查元素选项?

4

5 回答 5

4

不,这是不可能的。

代码检查器专为调试 HTML 和 Javascript 而设计。他们总是会显示DOM网页的实时对象。这意味着它会显示您在页面上看到的所有内容的 HTML 代码,即使它们是由 Javascript 生成的。

于 2019-02-15T07:26:36.833 回答
2

您可以通过右键单击来阻止检查。

这种方法可以防止右键单击

document.addEventListener('contextmenu', function(e) {
  e.preventDefault();
});

如果用户按 F12 并单击箭头按钮并检查,它仍然可以。您也可以通过此代码阻止 F12

 document.onkeydown = function(e) {
      if(event.keyCode == 123) { //F12 keycode is 123
         return false;
      }
    }
于 2019-02-15T07:35:42.013 回答
2

正如其他答案中提到的,不能完全防止它,一旦它在浏览器中,用户就可以对其进行操作。与其考虑如何防止在您的输入中使用检查元素或开发工具,不如考虑您的目标,您想通过此实现什么?

如果您想防止输入值被更改,请使用在服务器端生成的一些哈希值,其中包括来自您的staffid字段的值并将其存储在隐藏输入中。

当用户提交表单时,只需使用staffid输入的值和哈希值重新生成哈希值。如果它们不匹配,则用户staffid手动操作了输入。

例子:

<input type="text" class="empl_date form-control" id="staffid" name="staffid" value="<?php echo $employeeworks[0]['employeeCode'];?>" arsley-maxlength="6" placeholder=" Schedule Date"  disabled />
<input type="hidden" name="hash" value="<?php echo md5($employeeworks[0]['employeeCode'] . 'some salt to avoid user just generating hash with md5 using value only'); ?> /> 

然后在提交时:

$staffid = filter_input(INPUT_POST, 'staffid');
$hash_input = filter_input(INPUT_POST,'hash');

$hash_check = md5($staffid . 'some salt to avoid user just generating hash with md5 using value only');
if($hash_input !== $hash_check){
//looks like the user manipulated staffid value, throw a validation error
}
于 2019-02-15T07:35:56.950 回答
1

实际上,您不能限制用户检查任何特定元素的检查元素,但您可以完全禁用。检查下面的代码,它不允许用户打开调试器,甚至不允许打开页面源代码。

document.onkeydown = function(e) {
  if(e.keyCode == 123) {
      e.preventDefault();
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
      e.preventDefault();
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) {
      e.preventDefault();
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
      e.preventDefault();
     return false;
  }
  if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
      e.preventDefault();
     return false;
  }
}

但是这段代码也有一些缺失。希望它可以帮助你。

于 2019-02-15T14:26:11.487 回答
0

尝试这个,

<input type="text" oncontextmenu="return false;" class="empl_date form-control" id="staffid" name="staffid" value="<?php echo $employeeworks[0]['employeeCode'];?>" arsley-maxlength="6" placeholder=" Schedule Date"  disabled />
于 2019-02-15T07:29:53.043 回答