2016-10-13 16 views
0

今、私は自分のネットワークから投稿を削除できるPHPスクリプトを手に入れました。しかし、今、誰もがすべての投稿を削除することができますログインしている場合は、私は投稿の作者に制限したいので、彼らは自分の投稿を削除することができます。これどうやってするの?ポストが表示されているメインページで投稿を削除して投稿の投稿者に制限する

<?php 
session_start(); 
if (empty($_SESSION['user_id'])) { 
    header('Location: index.php'); 
    exit; 
} 
$user_id = $_SESSION['user_id']; 

include "connect.php"; 

if(isset($_GET['id'], $user_id)) 
{ 

mysqli_query($GLOBALS["___mysqli_ston"], "DELETE FROM posts WHERE id=".$_GET['id']); 
mysqli_query($GLOBALS["___mysqli_ston"], "UPDATE users SET posts = posts - 1 WHERE id='$user_id' "); 
header("location: index.php"); 
} 
mysqli_connect(); 
?> 

、ボタンは次のように表示されます:

<a href=\"delete.php?id=" . $postid . "\"> Delete </a> 

それを

は、これは私のdelete.phpは、それがどのように見えるかですpostid自体を見つけます。私は2つのテーブル、ユーザと投稿を持っています。両方とも列user_idを持つので、ポストテーブルはusers_idと同じuser_idを取得します。

+0

まずSQLインジェクションを閉じます。パラメータ化されたクエリを使用します。クエリに 'とauthorid =?'を追加し、 '$ _SESSION ['user_id']'をそれに渡すか、投稿の所有者を関連づけます。 – chris85

+0

最初にログインしたユーザーのみが編集または削除できるかどうかを確認する必要があります。まず、クエリを使用して投稿テーブルのユーザーを確認します。 –

+0

クリックする人がクリックを表すものを何でもすることが許可されているかどうかを確認してください。それはデータベースの問題ではありません。それは強制するあなたのコードまでです。 –

答えて

0

まず、あなたのコードは安全ではありません!

ユーザ入力をエスケープしないと、誰もがあなたのシステムを混乱させる可能性があることに注意してください。 here

削除ユーザーがログインしているかどうかをセッションで確認しているので、削除ポストからデータを取得する必要があります(指定された投稿IDが$ _GETの投稿を探してください)。 ['id'](ESCAPE IT !!!))in table "posts"。あなたのテーブル "投稿"には "user_id"というフィールドが含まれています。この値を取得した場合、$ _SESSION ["user_id"]で指定されたIDで簡単に比較できます。

関連する問題