Beschreibung

Ich möchte hier kurz und schnell beschreiben, wie ihr euer IMGHost-SQlite so modifizieren könnt, dass ihr mit eurem Account alle hochgeladenen Bilder sehen könnt.

Voraussetzungen

Vorausgesetzt ist, dass ihr eure UserID wisst. Wenn ihr der erste registrierte User seid, habt ihr automatisch die userID 1. Falls dies nicht der fall sein sollte, müsst ihr die Datenbank öffnen. Persönlich kann ich da SQL Buddy empfehlen. Mit SQLBuddy kann man zu einer MySQL Datenbank connecten, oder ein SQLite Datenbank öffnen.

Die Datenbank findet ihr im “inc” Ordner und besteht aus einem 20 Zeichen langen Namen aus Buchstaben und Zahlen. Den Namen findet ihr, wenn ihr mit einem FTP Programm auf den Server geht, oder die inc/config.inc.php öffnet und dort reinschaut. Innerhalb der Datenbank müsst ihr dann in der Tabelle img_users eure UserID suchen.

Los geht’s

Wenn ihr eure UserID habt, kann es losgehen. Es müssen 2 Zeilen innerhalb der index.php abgeändert werden.

Zeile 144

$db->query("SELECT * FROM 'img_images' WHERE uploadedBy = " .$userID);

Diese Zeile bewirkt im Grunde nur alle hochgeladenen Bilder zu laden. Diese werden aber nie ausgegeben. Ich zähle mit dieser Zeile ausschließlich die Anzahl der von dir hochgeladenen Bilder.

Theoretisch müsste man die Datei nur wie folgt ändern, damit man auch Bilder von allen Usern sieht.

Zeile 144

$db->query("SELECT * FROM 'img_images');

Ich gebe also keine Kriterien mehr an. Hole also ALLE Bilder. Wie ich bereits sagte, diese Zeile dient nur zum Zählen der Bilder. Ist aber Notwendig!

Da nun jeder angemeldete User auch alle hochgeladenen Bilder sieht, müssen wir abfragen, ob ein bestimmter User überhaupt die Bilder sehen darf. Das geschieht wie folgt.

if(islogged() && $_COOKIE['img_userid'] == 1) {
	$db->query("SELECT * FROM 'img_images'");
} else {
	$db->query("SELECT * FROM 'img_images' WHERE uploadedBy = " .$userID);
}

Ich habe eine einfache Abfrage gemacht. Zum einen Frage ich ab, ob die userID im Cookie die userID 1 ist. Nun könnte aber jeder ganz einfach seinen Cookie manipulieren und dort ebenfalls ne 1 eintragen und sieht somit direkt alle Bilder. Darum rufe ich gleichzeitig noch die Funktion islogged() auf. Diese gib true bzw. 1 zurück, wenn der Cookie valide ist (zu finden in inc/functions.inc.php).

Sind also beide Ereignisse wahr also true, wird die Query ausgeführt, die keine Begrenzungen hat. Ist eine der Abfragen nicht wahr, was vorausgesetzt ist, wird die andere Query genommen.

Nun geht es zum eigentlichen, das Auslesen der hochgeladenen Bilder. Auch in diesem Fall müssen wir wieder abfragen, ob ein Benutzer eingeloggt ist oder nicht. Ich editiere hiermit folgende Zeile

Zeile 166

$db->query("SELECT * FROM 'img_images' WHERE uploadedBy = " .$userID. " ORDER BY insertDate DESC LIMIT " .$epp. " OFFSET " .$gft);

Wie man sieht, ist auch hier wieder die Abfrage, WHERE uploadedBy. Ich ändere die Zeile also wie folgt ab.

if(islogged() && $_COOKIE['img_userid'] == 1) {
	$db->query("SELECT * FROM 'img_images' ORDER BY insertDate DESC LIMIT " .$epp. " OFFSET " .$gft);
} else {
	$db->query("SELECT * FROM 'img_images' WHERE uploadedBy = " .$userID. " ORDER BY insertDate DESC LIMIT " .$epp. " OFFSET " .$gft);
}

Ich frage also wieder ab, ob der User einen validen Cookie hat und die userID 1 besitzt. Ist das der Fall wird die Query ausgeführt, die keine Begrenzungen hat. Kurz: Alle Bilder werden ausgegeben.

Abschluss

Nun sollten alle Bilder angezeigt werden. Man könnte nun noch im Template profile.tpl.php eine Änderung vornehmen, dass man sieht, ob einem das Bild selbst gehört oder nicht. Das werde ich aber später erklären.

Nachtrag

Um auf die Kommentare einzugehen, erkläre ich kurz, wie man weitere Admins hinzufügt. Man benötigt wieder die ID des entsprechenden Admins, was ich bereits erklärt habe und ändert folgende Zeile

if(islogged() && $_COOKIE['img_userid'] == 1) {

folgendermaßen um:

$validAdmins = array(1, 2, 3, 4);
if(islogged() && in_array($_COOKIE['img_userid'], $validAdmins) {

Im Array $validAdmins stehen nun die userIDs der Leute, die Access auf alle Bilder haben. In diesem Fall sind das die User mit der ID 1, 2, 3 und 4.

Download

Ein Archiv mit der veränderten index.php und einem diff bekommt ihr bei einem Klick unter “Download”. Ordner: tut_imghost_admin

Download

Creative Commons