Как добавить окно подтверждения с паролем в php перед удалением?

#javascript #php #mysql

#javascript #php #mysql

Вопрос:

У меня есть таблица в моем php, которая показывает данные таблицы в моей базе данных: имя пользователя, электронные письма и т. Д., И я также добавил опцию удаления. Опция удаления работает корректно и отображает сообщение с подтверждением перед удалением. Тем не менее, я хочу добавить сообщение с подтверждением с необходимым паролем, когда пользователь нажимает на опцию удаления.

Каждый раз, когда я нажимаю опцию удаления, появляется сообщение с подтверждением удаления нужных мне данных, однако я бы хотел, чтобы в сообщении с подтверждением был пароль для полного удаления сообщения. Я бы хотел, чтобы вы показали тип сообщения : confirm ('Please confirm deletion and enter the password to delete'); .

Кто-нибудь знает, как это можно сделать? Спасибо.

Это то, что у меня есть:

index.php:

 <table>
    <tr>
        <th colspan="3"><h2>Users</h2></th>
    </tr>
    <tr>
        <th> Name </th>
        <th> Email </th>
        <th> Delete</th>
    </tr>

<?php
$sql = "SELECT * FROM users"; 
$result = $conn->query($sql);

if ($result->num_rows==0){

    echo "No users";
}else{
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["username"]."</td><td>".$row["email"]."</td><td><a class='eliminate' onClick="javascript: return confirm('Please confirm deletion');" href="delete.php?id=".$row['id']."">X</a></td></tr>";
    }
}

?>
</table>
  

delete.php:

 <?php
include('Conexion.php');// Check connection with DB
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$id = $_GET['id']; // $id is defined

mysqli_query($conn,"DELETE FROM users WHERE id='".$id."'");
mysqli_close($conn);
header("Location: index.php");
?>
  

Я думал о введении такого скрипта:

     <script>
function myFunction() {
  var txt;
  var password = prompt("Please confirm deletion and enter the password to delete:", "Password");
  if (password == null || password == "" || password != "realpassword") {
    txt = "User cancelled the prompt.";
  } else {
    txt = "Are you sure?";
  }
  document.getElementById("demo").innerHTML = txt;
}
</script>
  

Комментарии:

1. Пароль необходимо будет сохранить на сервере, что также потребует использования ajax и promises. Этот вопрос слишком широкий

2. Единственный безопасный способ сделать это — выполнить удаление как вызов AJAX, чтобы вы не хранили пароли в javascript.

3. Вы могли бы написать диалоговое окно javascript для запроса пароля и отправки пользователю сообщения «Вы уверены»

4. @RiggsFolly Это то, что я считаю лучшим. Я не знаю об Ajax. Знаете ли вы какой-нибудь пример, где я могу посмотреть, как это делается?

5. Не сразу, но я бы начал с сайта jQuery. Поиск в Google должен привести вас к любому количеству руководств

Ответ №1:

У вас есть большой выбор методов для этого, но я бы сказал, что самые простые из них:

Ajax Приглашение :

Приглашение позволяет создать окно предупреждения, в которое вы можете включить некоторый текст. Затем вы получаете этот текст и выполняете Ajax-вызов PHP-скрипта, который удалит пользователя (в основном аналогично вашему delete.php но без вызова функции header())

Промежуточная страница PHP

Вы также можете использовать другую страницу PHP с формой, в которой пользователю предлагается ввести пароль, а затем нормально перейти к delete.php страница, если она правильная. Конечно, вам нужно будет передать $id на промежуточную страницу (например, в качестве переменной GET), чтобы сделать это.

Комментарии:

1. Я отредактировал вопрос с помощью скрипта, который использует функцию, запрашивающую пароль. Знаете ли вы, как приступить к удалению после сообщения «Вы уверены?»?