Имя флажка POST, даже если оно не отмечено

0

Возможно ли установить имя почтового ящика POST, даже если оно не проверено?

    <input type='checkbox' class='tinyField' name='alert_by_email' value="1" <?PHP echo $alert_by_emailChecked  ?> />


foreach ($_POST AS $field => $value)
    $sql[] = $field." = '". $value."'";

$sql = implode(' , ',$sql);

$query = "UPDATE user_setup SET ".$sql." WHERE (userID = ".$userID.") " ;               

$res = mysql_query($query);     

Поэтому, когда я PRINT_R POST я получит поле, но оно будет пустым

 Array ( [alert_by_email] => '' ) 
  • 0
    что вы собираетесь делать с именем флажка?
  • 0
    Я очистю данные поля внутри БД - @Maximus2012 Maximus2012
Показать ещё 5 комментариев
Теги:

3 ответа

0

Короче, Нет, это невозможно, если вы отправляете FORM без использования Javascript.

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

Предположим, у вас есть эта HTML-форма:

<form method="POST">
First name:<br />
<input type="text" name="firstname" />
<br />
Last name:<br />
<input type="text" name="lastname" /><br />
<input type="submit" />
</form>

Теперь, если вы хотите обновлять значения с помощью PHP, ваш код должен быть:

<?php
  $columnArray = array('firstname' => NULL, 'lastname' => NULL); // This is list of columns which can be updated using form input values (NULL is default value here)
  $submittedValues = array_intersect_key($_POST, $columnArray); 
// Above code will produce an array like 'array('firstname' => 'anyname', 'lastname' => 'anylastname')

//--> Now you can generate your SQL using '$submittedValues'
$sql = array();
foreach ($submittedValues as $field => $value)
{
  $sql[] = $field." = '". $value."'";
}

$sqlString = implode(' , ',$sql);               

Используя этот способ, хакер не сможет добавить дополнительные столбцы, которые не должны обновляться пользователем, то есть last_login_date или что-то еще.

0

Добавьте это перед своим флажком.

<input type='hidden' name='alert_by_email' value="" />
0

Прямой ответ - нет. Форма HTML не отправит флажок, если он не установлен.

Однако есть некоторые обходные пути:

  1. используйте js для создания скрытого ввода для каждого установленного флажка, установите значение 0 или '', и всякий раз, когда вы их проверяете, удалите скрытый ввод.
  2. вы можете просто проверить, существует ли ключ в сообщении так: if (isset($_POST['alert_by_email']))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню