2013-08-14 3 views
0

В основном у меня есть данные, представленные в таблицу через форму, и вы хотите, чтобы конкретный пользователь мог удалять свои собственные сообщения и ничего другого. Этот код работает, но он позволяет удалять чей-то пост. Как ограничить его только вашим собственным?Удаление сообщений с PHP MYSQL

Delete.php

<?php session_start(); 
include('db.php'); 
if(isset($_SESSION['username'])) 
{ 
$id=$_GET['id']; 
$username=$_GET['username']; 
$query1=mysql_query("delete FROM search WHERE id='$id'"); 
$query2=mysql_query("delete FROM users WHERE username='$username'"); 
if($query1 || $query2) 
{ 
header('location:search.php'); 
} 
else { echo "You did not make this post"; 
} 
} 
?> 
+0

в Query2 ** $ Query2 = mysql_query (" удалить из пользователей, где имя пользователя = '$ имя пользователя ") **; это постоянное удаление информации о пользователе , Вам нужно только удалить сообщение для конкретного пользователя для своего собственного сообщения никому другому. – Chinmay235

+0

Можете ли вы разместить здесь структуру таблицы? – undone

+1

Обязательно не принимайте входные данные из суперглобальных переменных $ _GET или $ _POST. Это дает вам широкую открытость для так называемых «инъекций SQL-инъекций». В принципе, вместо того, чтобы передавать ожидаемый идентификатор в URL-адресе, человек может создать URL-адрес, содержащий фрагмент sql, который может быть выполнен сервером без вашего разрешения. – djheru

ответ

1

Сохранить вошедшего в идентификатор пользователя тоже в $ _SESSION, например, $ _SESSION [ "UserID"]. Таким образом, вы можете использовать WHERE, например

Я не уверен в том, что представляют собой эти таблицы mysql. но, например.

mysql_query("DELETE FROM `post` WHERE `id`='$id' and `userid`='" . $_SESSION["userid"] . "';"); 

Конечно на странице, где пользователь добавляет новую должность, код должен сохранить свой «идентификатор автора» в таблице MySQL.

Edit:

И напечатать, что пользователь не имеет авторизацию для удаления использовать сообщение Условный

if(mysql_affected_rows() == 0) echo "You are not the author of this post"; 

Addon: повышение безопасности, всегда устанавливают целые значения, которые приходят из «ненадежных источников "($ _GET, $ _ POST, внешние файлы), как

$id = intval($_GET["id"]); 
+0

'intval' является ** не ** заменой надлежащего SQL-экранирования. – tadman

Смежные вопросы