这是我的输入字段禁用代码
<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="text" class="empl_date form-control" id="staffid" name="staffid" value="<?php echo $employeeworks[0]['employeeCode'];?>" arsley-maxlength="6" placeholder=" Schedule Date" disabled />
如何防止在此字段中检查元素选项?
不,这是不可能的。
代码检查器专为调试 HTML 和 Javascript 而设计。他们总是会显示DOM
网页的实时对象。这意味着它会显示您在页面上看到的所有内容的 HTML 代码,即使它们是由 Javascript 生成的。
您可以通过右键单击来阻止检查。
这种方法可以防止右键单击
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
});
如果用户按 F12 并单击箭头按钮并检查,它仍然可以。您也可以通过此代码阻止 F12
document.onkeydown = function(e) {
if(event.keyCode == 123) { //F12 keycode is 123
return false;
}
}
正如其他答案中提到的,不能完全防止它,一旦它在浏览器中,用户就可以对其进行操作。与其考虑如何防止在您的输入中使用检查元素或开发工具,不如考虑您的目标,您想通过此实现什么?
如果您想防止输入值被更改,请使用在服务器端生成的一些哈希值,其中包括来自您的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
}
实际上,您不能限制用户检查任何特定元素的检查元素,但您可以完全禁用。检查下面的代码,它不允许用户打开调试器,甚至不允许打开页面源代码。
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;
}
}
但是这段代码也有一些缺失。希望它可以帮助你。
尝试这个,
<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 />