Я хотел бы предложить, что после того как пользователь Зарегистрировавшись, вы назначаете им уникальный идентификатор (или пусть база данных делает это с автоматическим приращением) и сохранит его в базе данных. Затем, когда они входят в систему, вы можете вытащить этот user_id из базы данных и сохранить его в переменной сеанса. Когда создаются крики, вы сохраняете user_id человека, который создал крик вместе с самим криком в таблице криков базы данных. Когда пользователь пытается удалить крик, сначала проверяйте, чтобы удостовериться, что этот крик принадлежит им, прежде чем разрешить им удалить его.
Пример:
<?php
//when user logs in
$email = 'exampl[email protected]';
$password = 'default';
$sql = "SELECT id FROM user_table WHERE email = '$email' AND password = '$password'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$_SESSION['user_id'] = $row['id'] //'id' is the user's id; assign it to the session variable
//user creates the shout
$user_id = $_SESSION['user_id']; //get the user_id from the logged-in user
$shout = $_POST['shout'];
$sql = "INSERT INTO shout_table (user_id, shout) VALUES ('$user_id','$shout')"; //store user id alongside the shout for future queries
mysql_query($sql);
//user about to delete the shout
$id = $_GET['id'];
$user_id = $_SESSION['user_id'];
//the sql to check in the shout_table to see if the shout they are deleting belongs to them
$sql = "SELECT * FROM shout_table WHERE user_id = '$user_id' AND id = '$id'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
if ($row)
{
//everything is alright; this user can delete the shout, so prepare the DELETE query to do so
}
else
{
//the user is not allowed to delete the shout because it's not theirs; tell them so with an echo or whatever you're using for error handling
}
?>
В приведенном выше примере изобилует инъекций SQL. Конечно, проверять и дезинфицировать. Кроме того, функции mysql_query будут устаревать с PHP 5.5, поэтому вместо этого используйте вместо этого mysqli_query functions. Еще лучше, посмотрите, можете ли вы использовать PDO. :)
Ваш код уязвим для [SQL injection] (http://en.wikipedia.org/wiki/SQL_injection). – PeeHaa
вам нужен внешний ключ в таблице криков, чтобы привязывать сообщения определенным пользователям. – Pete
@PeeHaa Спасибо, я собираюсь взглянуть на это. –