@rollex_x93

Как заблокировать редактирование input,select?

Существует 3 верстки(1 с максимальным доступ к редактированию,2 может редактировать только половину,3 только 2 пункта)
Кусок из кода для 3 верстки.
<select name='doverka' style='height: 30px;width: 150px; margin-left: 10px;' disabled>
  <option value='есть'".($row['doverka'] == 'есть' ? 'selected' : '').">есть</option>
  <option value='нет'".($row['doverka'] == 'нет' ? 'selected' : '').">нет</option>
</select>
<input type='data' name='data' value='".$row['data']."' style='height: 30px;width: 75px; margin-left: 35px;'disabled>

По нажатию кнопки редактировать,выполняется запрос
$update_sql = "UPDATE documents SET number = '{$number}', naklad = '{$naklad}', factura = '{$factura}', doverka = '{$doverka}', data = '{$data}', who = '{$who}' , note = '{$note}'  WHERE id='{$id}'";
mysql_query($update_sql) or die("Ошибка вставки" . mysql_error());

Проблема такая,что те поля,у которых стоит тег disabled,после нажатия кнопки,сбрасываются на пустые значения.
Без disabled все ок,но тогда поля доступны для редактирования,что меня не устраивает,не подскажите как решить?
  • Вопрос задан
  • 17685 просмотров
Решения вопроса 1
Decadal
@Decadal
<input type="text" readonly>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Когда вы выставляете disabled на какое-то поле браузер не отправляет содержимое поля на сервер. Если у вас сугубо внутренний проект и предполагается что пользователи не собираются его "хакать" или что они все как у Задорнова тупыыые можете сделать эти поля скрытыми, например. (type="hidden" или стилями display: none;).

Но вообще так делать нехоршо, ведь любой злоумышленник хоть немного знакомый с консолью вызываемой в браузере по F12 может отредактировать форму, и отправить на сервер что угодно.

И да, вам скорее всего не понравится то, что сейчас напишут в ответах. Напишут про "выбросить эту лапшу и переписать", про то, что mysql_* функции давно deprecated, и пора перейти на ORM или PDO. Напишут, что права на редактирование полей нужно проверять на сервере, и использовать разные запросы в базу для разных прав. И будут правы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы