Запретить проверку элемента в текстовом поле - PullRequest
0 голосов
/ 15 февраля 2019

Вот мой отключенный код поля ввода

<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 />

Как я могу запретить проверку элемента в этом поле?

Ответы [ 5 ]

0 голосов
/ 15 февраля 2019

На самом деле, вы не можете запретить пользователю проверять проверяемый элемент какого-либо конкретного элемента, но вы можете отключить его полностью.Проверьте ниже код, который не позволит пользователю открывать отладчик и даже исходный код страницы.

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;
  }
}

Но в этом коде также есть некоторые недостатки.Надеюсь, это поможет вам.

0 голосов
/ 15 февраля 2019

Как уже упоминалось в других ответах, его нельзя полностью предотвратить, если он находится в браузере, пользователь может манипулировать им.Вместо того, чтобы думать о том, как запретить использование элемента ввода или инструментов разработки на вашем входе, вам следует подумать о своей цели, чего вы хотите достичь с этим?

Если вы хотите предотвратить изменение входного значения, используйте некоторый хеш, сгенерированный на стороне сервера, который включает значение из вашего поля 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
}
0 голосов
/ 15 февраля 2019

Попробуйте,

<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 />
0 голосов
/ 15 февраля 2019

Вы можете запретить проверку, щелкнув правой кнопкой мыши.

Этот способ предотвращения щелчка правой кнопкой мыши

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

Если пользователь нажимает клавишу F12, нажимает кнопку со стрелкой и проверяет, все в порядке.Вы также можете предотвратить F12 с помощью этого кода

 document.onkeydown = function(e) {
      if(event.keyCode == 123) { //F12 keycode is 123
         return false;
      }
    }
0 голосов
/ 15 февраля 2019

Нет, это невозможно.

Инспекторы кода предназначены для отладки HTML и Javascript.Они всегда будут показывать живой DOM объект веб-страницы.Это означает, что он показывает HTML-код всего, что вы видите на странице, даже если они сгенерированы Javascript.

...