Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос перед отправкой формы да/нет (https://javascript.ru/forum/misc/78581-vopros-pered-otpravkojj-formy-da-net.html)

Leon2110 07.10.2019 16:29

Вопрос перед отправкой формы да/нет
 
Всем привет. Мой код работал, но почему-то перестал, даже не знаю что случилось.
Есть форма, у нее две кнопки submit, одна для редаткирования или добавления полей в бд, другая для удаления.

Вот кнопка для удаления:
<button type="submit" name="del" value="<?php echo $row["id"]; ?>" onclick="confirm('Вы действительно хотите удалить учреждение с id <?php echo $row["id"]; ?>?') ? this.form.submit() : ''"> Удалить </button>

Вопрос появляется: "Вы действительно хотите удалить учреждение с id 7?". Проблема в том, что он работает в любом случае, и если нажать да, и если нажать нет, вроде когда я только начинал делать все работало как надо, не знаю даже что случилось, в консоли ошибок нет.

Тут если нажать "нет" просто закроется диалоговое окно confirm и все, а если нажать да, отправится форма.
//далее у меня проверяет если есть post['del'].... удаляет из базы нужную строку с нужным id...

laimas 07.10.2019 16:34

Цитата:

Сообщение от Leon2110
работает в любом случае

Все верно, здесь диалог чисто для проформы, так как форма отправляется не по результату диалога, а естественным образом.

Leon2110 07.10.2019 16:41

А можно что-то сделать чтобы работало как надо?)
Мне надо чтобы если нажали нет, ничего не делалось, а если да выполнялось это:
//если нажали удалить учреждение
if (isset($_POST['del'])) {
		$del = htmlspecialchars($_POST['del']);
		$sql_add_cat = "DELETE FROM `cat` WHERE id = '$del'";
		$otvet_cat = mysqli_query($connect, $sql_add_cat);
		logs($user_panel, "Удалил учреждение c ID $del");
		header("Refresh:0");
	}

// А можно как-то подписаться на ответы в теме? не найду((

Leon2110 07.10.2019 16:46

Изменил <button type="submit"... на <button type="button"... в своем коде, теперь "нет" ничего не делает, "да" вроде отправляет форму, но без del, так что код все равно не срабатывает.

laimas 07.10.2019 16:51

Если нужно отправлять форму по условию, значит это условие нужно проверить, и если это диалог, то:

<button type="submit" name="del" value="<?=$row["id"]?>" onclick="return confirm('Вы действительно хотите удалить учреждение с id <?=$row["id"]?>')"> Удалить </button>


Цитата:

Сообщение от Leon2110
$del = htmlspecialchars($_POST['del']);

А это опасность, htmlspecialchars совсем не для этого.

Leon2110 07.10.2019 17:00

Цитата:

Сообщение от laimas (Сообщение 513575)
Если нужно отправлять форму по условию, значит это условие нужно проверить, и если это диалог, то:

<button type="submit" name="del" value="<?=$row["id"]?>" onclick="return confirm('Вы действительно хотите удалить учреждение с id <?=$row["id"]?>')"> Удалить </button>


А это опасность, htmlspecialchars совсем не для этого.

Примного благодарен за код.
Безопасности пока особого внимания не уделяли, это все внутри админки выполняется и юзерам туда доступа нет. Так как там передается id, возможно вместо htmlspecialchars надо сделать проверку что это число (int) и будет достаточно.

laimas 07.10.2019 17:05

Цитата:

Сообщение от Leon2110
Безопасности пока особого внимания не уделяли

Ну а к чему тогда писать глупости, которые к безопасности на сервере отношения не имеют?

Цитата:

Сообщение от Leon2110
это все внутри админки выполняется и юзерам туда доступа нет

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

Цитата:

Сообщение от Leon2110
надо сделать проверку что это число (int)

Именно if($del = (int)$_POST['del']) {код удаления}


Часовой пояс GMT +3, время: 18:20.