Zum Inhalt springen

PHP Seite mit Passwort, Bilder Passwort?


Empfohlene Beiträge

Hi

Ich will eine Seite erstellen, die eine Passwortabfrage per PHP/MySQL hat, mehrere Benutzer mit verschiedenen Rechten auf verschiedene Seiten etc.das ist nicht das Problem, jetzt will ich aber Bildergalerien auf der Seite haben, auf die nur bestimmte Benutzer Zugriff haben. Wie mache ich das am besten? Wenn ich die Bilder in bestimmte Verzeichnisse packe, kann ja theoretisch jeder darauf zugreifen. Any Ideas?

Noxy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kommt drauf an, was du für Zugriffsrechte auf deinen Webspace hast. Du brauchst den Verzeichnissen ja beispielweise nur die Zugriffsrechte für den Apache-User entziehen (Sofern das System Apache benutzt), dann kann Apache dass Verzeichniss nicht in einem Browser von irgendeinem Surfer öffnen.

Aber mir fällt grad ein, dann kommst du wahrscheinlich ja selber nichtmehr an die Bilder....

hm, das ist dumm

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tach auch!

Bei mir habe ich ein Admin-Interface, das passwortgeschützt ist. Nennen wir die Seite einfach admin.php. Folgender Code steht dort am Anfang:

<?

include ("include/login.inc.php");

$PHP_SELF = $_SERVER['PHP_SELF'];

?>
[/PHP]

Die login.inc.php enthält dann folgendes:

[php]<?
require ("include/adminincluder.inc.php");

if (!isset($_SERVER[PHP_AUTH_USER])) {
authenticate();
} else {
$query = mysql_query("SELECT usr_id FROM user WHERE usr_login = '$_SERVER[PHP_AUTH_USER]' ".
"AND usr_passwd = MD5('$_SERVER[PHP_AUTH_PW]')");
if (mysql_num_rows($query)) {
$dummy = mysql_fetch_array($query);
$userid = $dummy[0];
} else {
authenticate();

}
}

?>

In adminincluder.inc.php wir lediglich die DB-Connection verwaltet.

Das Konzept ist folgendes: Die Tabelle user hält die Daten der Nutzer, u.a. Login und das MD5-verschlüsselte Passwort. Die Function authenticate weist den Apache an, die Autentifizierung einzutreiben. Source:

function authenticate() {
Header("WWW-authenticate: basic realm=\"SharksReef Authorisation\"");
Header("HTTP/1.0 401 Unauthorized");
echo "Sie sind nicht für diesen Bereich berechtigt.\n";
exit;
}[/php]

Die Informationen werde übermittelt in den Server-Variablen PHP_AUTH_USER und PHP_AUTH_PW. Die vergleichst du mit der Datenbank und kannst dort auch eine Rechtekontrolle machen. Die Tabelle user kann noch ein Feld usr_privileges tragen, dort kannst du die jeweiligen Privilegien einträgen.

Ich hoffe, es kam einigermaßen rüber. Ansonsten hier: http://www.php.net/manual/de/features.http-auth.php

Eine Out-Of-The-Box Gallery kannst du dir übrigens hier runterladen: http://gallery.menalto.com/modules.php?op=modload&name=News&file=index Die ist sehr schnell aufgesetzt, lässt sich gut konfigurieren und administrieren, enthält auch Benutzerverwaltung etc. Fertig kann es dann so aussehen: http://gallery.sharksreef.de

Gruß,

Florian

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Noxy

Wenn ich die Bilder in bestimmte Verzeichnisse packe, kann ja theoretisch jeder darauf zugreifen.

Ich würde die Bilder als Blob-Objekt in die MySQL-Datenbank packen. Somit hast Du die volle Kontrolle, welche Bilder angezeigt werden können und welche nicht.

Informationen dazu (und auch die Nachteile dieser Lösung) findest Du unter http://www.dclp-faq.de/q/q-mysql-blob.html!

Eine andere Lösung wäre es, Bilder in einem für die Öffentlichkeit gesperrten (entweder oberhalb vom DOCUMENT_ROOT oder ein per Apache-Authentifizierung gesperrtes) Verzeichnis abzulegen, und die Bilder per Skript zu laden und anzuzeigen.

Dazu schaust Dir am Besten im PHP-Manual mal die Grafikfunktionen, speziell die imagecreatefrom*, an.

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Vorschläge

Also von der Blob Variante bin ich irgendwie nicht so überzeugt.

Die Gallery PHP Seite schau ich mir mal an

Hab ich die PHP Hilfe Seite richtig verstanden, dass ich z.B. mit der imagecreatefromjpeg Funktion Bilder darstellen kann, ohne, dass der Benutzer die URL braucht? Dafür benötige ich aber zusätzliche Module zu PHP oder?

Hab ich noch was vergessen? Noch andere Vorschläge?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Noxy

Hab ich die PHP Hilfe Seite richtig verstanden, dass ich z.B. mit der imagecreatefromjpeg Funktion Bilder darstellen kann, ohne, dass der Benutzer die URL braucht? Dafür benötige ich aber zusätzliche Module zu PHP oder?

Yep, Du brauchst die GD-Bibliothek. In vielen Fällen ist die aber schon installiert. Das kannst Du recht einfach prüfen, indem Du phpinfo() aufrufst. Dort sollte bei "Configure Command" etwas stehen wie "--with-gd" und im "gd"-Bereich bekommst Du dann nähere Informationen zu der installierten Version.

Original geschrieben von Jaraz

du kannst auch einfach die Datei binär an den Browser schicken, du musst vorher nur den Content Typ setzen.

Richtig, daran hatte ich gar nicht gedacht. *anshirnlang*

Trotzdem bevorzuge ich die andere Methode, da ich bei einem nicht existierenden Bild ein leeres Bild zurückgebe mit einem Warnhinweis (wie bei der Doku zu imagecreatefromjpeg()).

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von *I C Q*

Richtig, daran hatte ich gar nicht gedacht. *anshirnlang*

Trotzdem bevorzuge ich die andere Methode, da ich bei einem nicht existierenden Bild ein leeres Bild zurückgebe mit einem Warnhinweis (wie bei der Doku zu imagecreatefromjpeg()).

Nur als Alternative! ;)


<?php
header("Content-Type: ".$content);
if (file_exists($path.$file)) {
readfile($path.$file);
}else{
readfile($default_file);
}
?>
[/php]

Die gdlib functionen, können einen Server schon ganz schön belasten, natürlich nur wenn sich nicht gerade 2 Leute am Tag auf den Server verirren.

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm ich habe dies per Sessions realisiert, in der Datenbank stehen die Usernamen sowie Passwort etc. und das "level" Das lese ich nach dem Login von dem User aus und schreibe es in die Session, je nach $_SESSION['level'] wird nun auf jeder Seite geprüft was er darf und was nicht. :-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Jaraz

Nur als Alternative! ;)

Die gdlib functionen, können einen Server schon ganz schön belasten, natürlich nur wenn sich nicht gerade 2 Leute am Tag auf den Server verirren.

Manchmal kommt man auf die einfachsten Lösungen nicht... ;-)

Aber bei den Projekten, bei denen ich's z.Z. einsetze, ist's eh wurscht, da die Frequenz nicht wirklich hoch ist, bzw. ich die GD-Funktionen wirklich benötige (u.a. für Resize, etc.).

Trotzdem Danke! :)

ICQ

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...