發現問題:權限管理問題
前端只是把按鈕藏起來,但真的無法編輯、刪除嗎 ? 透過直接存取 url 送資料給頁面,只是把它隱藏起來,不表示他改不到。
解決上述問題:
第一步、確定使用者的身分,決定他有無該權限。
第二步、修改 sql query
範例、delete_comment.php
require_once('conn.php');
$id = $_GET['id'];
$username = $_SESSION['username'];
if (empty($id)) {
header('Location: main.php?errCode=1');
die('資料未輸入齊全');
}
$sql ='update comments set is_deleted=1 where id=? and username=?';
$stmt = $conn->prepare($sql);
$stmt->bind_param("is",$id, $username);
範例、handle_update_comment.php
<?php
require_once('conn.php');
session_start();
$content = $_POST['content'];
if (empty($content)) {
header('Location: update_comment.php?errCode=1&id='.$_POST['id']);
die('資料未輸入完整');
}
$username = $_SESSION['username'];
$id = $_POST['id'];
$sql = 'update comments set content=? where id=? and username=?';
$stmt = $conn->prepare($sql);
$stmt->bind_param("sis", $content, $id, $username);
$result = $stmt->execute();
if (!$result) {
die($conn->error);
}
header('Location: main.php');
?>
重點回顧
後端相關服務,權限管理必放心裡。顯示資料、刪除資料、修改資料,都要注意現在存取頁面的人是否有權限做這件事情。所以要加上權限檢查。