2016-06-24 8 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

Iは、削除クエリを削除する何かを見つけることができませんでしたので、ユーザーが削除されなかった場合でも、ステートメントが常に正常に実行されるので、$ Trueに評価を削除すると信じています。

私は個人的になります。

  • まず、彼らが全くでログインしている場合は、
  • セカンドをやっているように、チェック、とユーザーの行を引いて、ID /セッションに基づいてセキュリティをチェックしますSELECT、およびそれが存在することを確認する/ permissions/etc。
  • 第三に、ユーザーが権限を持っている場合は、行を削除して行を削除しないでください他に...真の変数$ bDeleted =設定と設定$ bDeleted = falseを
  • 第四に、
  • $ bDeletedに基づくエコー

また、ユーザーの行は削除しません。データベース内のブールフィールドで行を削除済みとしてマークし、アプリケーションのロジックを調整して削除された行だけを考慮すると、より安全です。こうすることで、事故や心臓の変化に備えて、ユーザーアカウントをすばやく削除することができます。

+0

申し訳ありません...私は仕事を逃しました。実際にはユーザーが自分自身を削除するのを止めることです。したがって、ログインしたユーザーは、自分以外の人をすべて削除することができます。どのように私はそれについて行くだろうか? – Tatws24

関連する問題