Я пытаюсь создать простую систему сообщений PHP/MySQL. Следующий код представляет собой раздел страницы, на котором отображаются сообщения, полученные пользователем, messages.php
. Сообщения пользователя были получены из MySQL и сохранены в переменной $messages
.Как я могу предотвратить свободный доступ к этому сценарию?
foreach($messages as $message) {
// formatting, printing the text, etc.
echo '<a href="msg_del.php?id=' . $message['id'] . '">Remove</a>';
}
А вот файл msg_del.php
:
<?php
$id = $_GET['id'];
// Connect to the database
require("../info/dbinfo.php");
$db_user = constant("DB_USER");
$db_pass = constant("DB_PASS");
$db_name = constant("DB_NAME");
$db_server = constant("DB_SERVER");
try {
$conn = new PDO("mysql:host=$db_server;dbname=$db_name", $db_user, $db_pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("DELETE FROM messages WHERE id = " . $conn->quote($id) . ";");
$stmt->execute();
}
catch(PDOException $e) {
echo "Error connecting to database!";
exit();
}
// Redirect to messages page
header("Location: messages.php");
exit();
?>
код полностью работоспособен, но проблема в том, что любой человек может ввести msg_del.php?id=SOMEID
в браузер и удалять сообщения. Как я могу защитить это, где сообщения могут быть удалены только из ссылок на messages.php
?