2016-06-24 3 views
0

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

У меня есть таблица информации о пользователе и ссылка на эту страницу delete.php. Следующий код позволяет им удалить свою собственную запись, но отображает сообщение $_session['delete'], даже если оно не позволяет им удалять запись другого.

Может ли кто-нибудь посоветовать?

Спасибо.

<?php 


include 'dbconnect.php'; 

session_start(); 

// CHECK IF LOGGED IN // 

if(! $_SESSION['username']) { 

header("Location: project-users-logout.php"); 
die(); 
} 

// Build SQL Query 
$sql = "SELECT * FROM registeredUsers"; 

// Run the Query 
$query = mysqli_query($db,$sql); 

$userid = mysqli_real_escape_string($db, $_GET['id']); 

$deleteQuery = "DELETE FROM registeredUsers 
       WHERE UserID = $userid 
       AND UserName = '$_SESSION[username]'"; 

$delete = mysqli_query($db, $deleteQuery); 

if ($delete) { 

      /* SUCCESS */ 
      $_SESSION['delete'] = 'Record deleted'; 
      header ("Location: project-users-manage.php "); 
      exit; 

} else { 

    echo "You do not have access to delete this user"; 
} 

?>

+0

Посмотрите на использование 'mysqli_affected_rows()' на вашем чеке, если что-то действительно было удалено. –

ответ

0

Я считаю $ удалить принимает значение истина, так как оператор всегда выполняется успешно, даже если пользователь не был удален из-за удаления-запрос не нашел ничего, чтобы удалить.

Я бы лично:

  • Во-первых, проверьте, если они вошли в систему на всех, как вы делаете
  • Во-вторых, проверить безопасность на основе идентификатора/сессии, потянув строку пользователя с SELECT и проверку наличия/разрешений/etc.
  • В-третьих, если пользователь имеет разрешение, удалить строку и установить переменную $ bDeleted = правда ... еще не удалить строку и установить $ bDeleted = ложь
  • В-четвертых, эхо на основе $ bDeleted

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

+0

Прошу прощения ... я пропустил задачу. Фактически это означает, что пользователь не удаляет себя. Таким образом, зарегистрированный пользователь может удалить всех, кроме самих себя. Любая идея, как я буду заниматься этим? – Tatws24