php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.10.2010, 14:27  
Neuer Benutzer
 
Registriert seit: 14.05.2010
Beiträge: 4
PHP-Kenntnisse:
Anfänger
hailander befindet sich auf einem aufstrebenden Ast
Standard Bilder nur angemeldeten Benutzern anzeigen

Hallo,
ich arbeite gerade an einem Informationssystem, in dem Infos zu Personen angezeigt werden, inclusive einem Bild. Das soll aber nur dann angezeigt werden können, wenn ein Benutzer am System angemeldet ist. Also normalerweise wird dem Browser ja ein <img> Tag geschickt und er holt sich dann das Bild ab, aber so kann ja jeder von außen auf das Bild zugreifen. htaccess ist da glaub ich keine Lösung. Wie mache ich das stattdessen?
hailander ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.10.2010, 14:33  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Wenn du HTTP Auth verwendest, ist das natürlich eine Lösung - ohne Zugangsdaten kein Zugriff auf die Bild-Ressource.

Ansonsten, wenn dein „Login“ über PHP realisiert ist - dann kannst du statt der Bilder ein PHP-Script bei <img src="..."> einbinden, welches zunächst die Berechtigung prüft, und dann die Bilddaten an den Client durchschleust (readfile o.ä.). Dabei passenden Content-Type-Header nicht vergessen.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 29.10.2010, 17:51  
Neuer Benutzer
 
Registriert seit: 19.04.2010
Beiträge: 15
PHP-Kenntnisse:
Fortgeschritten
Slikey befindet sich auf einem aufstrebenden Ast
Standard

Wobei du dabei beachten solltest, dass solch ein Script nicht besonders Performance freundlich ist und bei größeren Bildern Wartezeiten auswirft, die manchen Benutzern zu hoch ist.
Slikey ist offline   Mit Zitat antworten
Alt 29.10.2010, 22:46  
Neuer Benutzer
 
Registriert seit: 29.10.2010
Beiträge: 10
PHP-Kenntnisse:
Anfänger
nicoMcF befindet sich auf einem aufstrebenden Ast
Standard

Ich würde das Problem mit einer Session-ID lösen.

Für die registrierten Mitglieder gibt es in einer MySQL-Datenbank z.B. eine Tabelle user,
in der jedes Mitglied mit einer eigenen id eingetragen ist.

login.php
PHP-Code:
<?php

session_start
();
// Zugriff auf die Datenbank
$db_link mysql_connect ("Hostname""Benutzer""Passwort");
mysql_select_db ("Datenbankname");

// prüfen, ob das Dokument ordnungsgemäß aufgerufen wurde
if(isset($_POST["username"]) AND isset($_POST["passwort"]))
{
    
$username $_POST["username"];
    
$password $_POST["passwort"];
    
// zur Sicherheit eine md5-Verschlüsselung
    
$passwort md5($password);
    
    if(
$username != "" AND $password != "")
    {
        
// Datenbank-Abfrage
        
$abfrage "SELECT id, passwort, username FROM user WHERE passwort LIKE '$passwort' 
            AND username LIKE '$username'"
;    
        
$ergebnis mysql_query($abfrage);
        while(
$row mysql_fetch_object($ergebnis))
        {
            
$pass $row->passwort;
            
$user $row->username;
            
$UserID $row->id;
        }
    
        if(
$pass == $passwort AND $user == $username)
        {
            
$_SESSION['UserID'] = $UserID;
            echo 
"Login erfolgreich";
            echo 
"<br><a href=\"sicher.php\">Weiter</a>";
        }
        else
        {
            echo 
"Login fehlgeschlagen. Username und/oder Passwort falsch.";
            echo 
"<a href=\"...\">Zurück</a>";
            exit;
        }
    }
    else
    {
        echo 
"Login fehlgeschlagen. Bitte geben sie Login-Daten an.";
        echo 
"<a href=\"...\">Zurück</a>";
        exit;
    }
}
else
{
    echo 
"Login fehlgeschlagen. Bitte geben sie Login-Daten an.";
    echo 
"<a href=\"...\">Zurück</a>";
    exit;
}
?>
Die Datei, indem die Daten für angemeldete Mitgleder sichtbar sein sollen habe ich einfach mal sicher.php genannt.
PHP-Code:
<?php
session_start
(); // muss auf jede Seite, die mit Session-IDs arbeitet

if(!isset($_SESSION['UserID']))
{
    echo 
"Bitte erst <a href=\"login.php\">einloggen</a>!";
    exit;
}
?>
Dieser Teil muss in jeder Datei, die vor unangemeldeten Personen sicher sein soll ganz oben stehen.

Darunter kannst du dann deinen HTML-Teil schreiben.
natürlich brauchst du noch eine index.php o.ä. wo du den Benutzer die Daten eingeben lassen musst.

Als Übergabe-Variablen habe ich "passwort" und "username" mit der Methode "post" verwendet.

Ich hab den Code nicht getestet aber es sollte funktionieren.
nicoMcF ist offline   Mit Zitat antworten
Alt 31.10.2010, 16:24  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.631
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Zitat:
Zitat von Slikey Beitrag anzeigen
Wobei du dabei beachten solltest, dass solch ein Script nicht besonders Performance freundlich ist und bei größeren Bildern Wartezeiten auswirft, die manchen Benutzern zu hoch ist.
Wenn man den Browsercache und last modified header richtig berücksichtigt dann nicht.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 04.11.2010, 14:48  
Neuer Benutzer
 
Registriert seit: 04.11.2010
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
HostedDinner befindet sich auf einem aufstrebenden Ast
Standard

Wie ChrisB schon sagte:

Bild.php
Code:
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'bildverzeichnis/';
$imagecache = "http://$host$uri/$extra";

if($login_user){
    header("Location: ".$imagecache."user_pic.jpg");
}else{
    header("Location: ".$imagecache."vorbidden.jpg");
}
Ich glaube der User bekommt so die echte Url nicht zu sehen und es ist sehr performancefreundlich, da nicht das Bild geparst wird, sondern einfach weitergeleitet wird. Jedoch kann es sein das im Netwerkprotokoll die echte Url irgendwo abgegriffen werden kann...
HostedDinner ist offline   Mit Zitat antworten
Alt 04.11.2010, 14:50  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von HostedDinner Beitrag anzeigen
Wie ChrisB schon sagte:
Das war nicht das, was ich meinte.

Zitat:
Jedoch kann es sein das im Netwerkprotokoll die echte Url irgendwo abgegriffen werden kann...
Dazu reicht selbst Firebug oder vergleichbares vollkommen aus.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
top 10 Bilder anzeigen lassen Schnaddi PHP Tipps 2010 6 18.10.2010 19:24
[Erledigt] Problem MYSQL Bilder aus DB anzeigen alexalbion Datenbanken 20 08.09.2010 22:17
Bilder auslesen aus Ordner und per dropdown anzeigen Sp1n PHP Tipps 2010 2 11.06.2010 13:10
Bilder aus Spalten in Zeilen anzeigen Typ15 PHP Tipps 2010 5 31.03.2010 21:46
Mit curl Bilder anzeigen AllOnline PHP Tipps 2010 2 03.02.2010 22:48
[Erledigt] Bilder anzeigen 3jfx PHP Tipps 2009 11 08.01.2010 18:15
Bilder anzeigen und nicht anzeigen Cyrus PHP Tipps 2005-2 7 26.10.2005 20:23
[Erledigt] Vergrößerte Bilder im selben Pop Up Fenster anzeigen lassen PHP Tipps 2005 8 01.04.2005 12:24
Bilder nach Namen anzeigen PHP Tipps 2005 11 06.03.2005 15:41
Bilder anzeigen Tschuu PHP Tipps 2005 1 05.02.2005 14:07
Bilder Automatisch anzeigen lassen? test022 PHP Tipps 2004-2 7 23.12.2004 00:11
bilder aus ordner lesen und geordnet anzeigen Beitragsarchiv 9 01.12.2004 10:06
Bilder nur von einer Seite aus anzeigen Beitragsarchiv 0 13.11.2004 18:41
Bilder im Verzeichnis anzeigen? PHP Tipps 2004 8 15.07.2004 19:09
[Erledigt] Bilder nur auf eigenem Server anzeigen lassen Server, Hosting und Workstations 9 30.06.2004 15:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bild zum user anzeigen php, nur eingeloggte benutzer auf seite zu lassen php und mysql, php angemeldeter benutzer anzeigen, einfach sicher php login, php benutzer anzeigen, benutzern bildern geben php, php bild nur für benutzer, php bilder nur für user, php bilder nur im login, php session verzeichnis nur für eingeloggte benutzer sichtbar, html nur angemeldeten leuten seite zeigen, bildergalerie nur mit login, php bilder nur angemeldeten besuchern zeigen, bilder nur vom user php, php bild nur für user, php benutzer bilder, steht nur angemeldeten benutzern, userliste php script ohne sql, php bilder nur mit login anzeigen, php datei nur angemeldeten nutzern

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum