これはリンクを削除するためのコードです:
<a href="picture_manager.php?do=delete&id=<?php print $picturedata['id']; ?>" >Delete</a>
これは私の現在のデータベース構文です:
if (array_key_exists('do', $_GET) && $_GET['do'] == "delete" && array_key_exists('id', $_GET))
{
$pictureid = trim(sanitize($_GET['id']));
if ($picture->delete($pictureid) === true)
{
header('Location: picture_manager.php?success=removed');
}
}
上記のコードを使用すると、他のユーザーは、= picture_manager.php?do=delete&id=(victim) のように他のユーザーの写真を削除できます。
他のユーザーによる悪用を防ぐための解決策を見つけたので、古い構文を次のように変更します。
これは私の新しいデータベース構文です:
if (!array_key_exists('id', $_GET) || $_GET['id'] == "" || $picture->pictureExists(trim(sanitize($_GET['id']))) === false || $picture->checkOwn($user->getUserID(trim(sanitize($_SESSION['key']))), trim(sanitize($_GET['id']))) === false)
{
header('Location: picture_manager.php');
}
else
{
$pictureid = trim(sanitize($_GET['id']));
if ($picture->delete($pictureid) === true)
{
header('Location: picture_manager.php?success=removed');
}
}
悲しいことに、それは機能しませんでした
現在専門家を探しています。
以下の回答で解決策を見つけました。
今編集:以下のようにコーディングしたとき、私には難しい:
if (isset($_GET['do']) && $_GET['do'] == 'delete' && (!array_key_exists('id', $_GET) || $_GET['id'] == "" || $picture->pictureExists(trim(sanitize($_GET['id']))) === false || $picture->checkOwn($user->getUserID(trim(sanitize($_SESSION['key']))), trim(sanitize($_GET['id']))) === false))
{
header('Location: picture_manager.php');
}
else
{
$pictureid = trim(sanitize($_GET['id']));
if ($picture->delete($pictureid) === true)
{
header('Location: picture_manager.php?success=removed');
}
}
Picture_manager.php?do=delete&id=6125 をクリックしてもファイルが削除されない
私のコードの何が問題なのですか?