Wenn ich in der member.php
folgende Zeilen (insgesamt 4 mal)
if (!$comment_row || $comment_row['user_id'] <= USER_AWAITING || ($user_info['user_id'] != $comment_row['user_id'] && $user_info['user_level'] != ADMIN)) {
gegen
if (!$comment_row || $comment_row['user_id'] <= USER_AWAITING || ($user_info['user_name'] != $comment_row['comment_user_name'] && $user_info['user_level'] != ADMIN)) {
ersetze, kann der User seine Kommentar editieren und löschen. Die Überprüfung erfolgt nun Anhand des User_Names. Der User kann wenigstens nicht die Kommentare der anderen User bearbeiten. Anscheinend klappt die Abfrage der user_id nicht richtig.
Herausgefunden habe ich es wie folgt. Als ich anstelle von
show_error_page($lang['no_permission']);
das einsetze
show_error_page($comment_row['user_id']);
wird immer die ID des ersten Kommentares in der DB eingesetzt und nicht wie abgefragt die USER_ID!!!
Die MYSQL Abfrage ist immer noch die originale
$sql = "SELECT c.comment_id, c.image_id, c.user_id AS comment_user_id, c.user_name AS comment_user_name, c.comment_headline, c.comment_text, i.image_name, i.cat_id, i.user_id".get_user_table_field(", u.", "user_name")."
FROM (".COMMENTS_TABLE." c, ".IMAGES_TABLE." i)
LEFT JOIN ".USERS_TABLE." u ON (".get_user_table_field("u.", "user_id")." = c.user_id)
WHERE c.comment_id = $comment_id AND i.image_id = c.image_id";
meine admin_links in der details.php
$admin_links = "";
if ($user_info['user_level'] == ADMIN) {
$admin_links .= "<a href=\"".$site_sess->url(ROOT_PATH."admin/index.php?goto=".urlencode("comments.php?action=editcomment&comment_id=".$comment_row[$i]['comment_id']))."\" target=\"_blank\">".$lang['edit']."</a> ";
$admin_links .= "<a href=\"".$site_sess->url(ROOT_PATH."admin/index.php?goto=".urlencode("comments.php?action=removecomment&comment_id=".$comment_row[$i]['comment_id']))."\" target=\"_blank\">".$lang['delete']."</a>";
}
elseif ($is_image_owner || $comment_user_id == $user_info['user_id'] && $user_info['user_level'] >= USER) {
$admin_links .= ($config['user_edit_comments'] != 1) ? "" : "<a href=\"".$site_sess->url(ROOT_PATH."member.php?action=editcomment&".URL_COMMENT_ID."=".$comment_row[$i]['comment_id'])."\">".$lang['edit']."</a> ";
$admin_links .= ($config['user_delete_comments'] != 1) ? "" : "<a href=\"".$site_sess->url(ROOT_PATH."member.php?action=removecomment&".URL_COMMENT_ID."=".$comment_row[$i]['comment_id'])."\">".$lang['delete']."</a>";
}
Vielleicht hilft es 4images so zu erweitern, das die Nutzer Ihre eigenen Kommentare bearbeiten können und die Bildinhabe die Kommentare der Nutzer löschen können.
Gruß
Ingo