PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateien nur vom Forum aus zugreifen



LD
02.06.2016, 09:21
z.b. hier im Forum hat ein Smilie die Adresse

https://www.szenebox.org/images/smilies_v2/emoji06.png

wie kann ich z.b. unter htaccess einstellen dass ich den Smilie nur sehe wenn ich eingeloggt bin.

denn wenn ich im Szenenbox nicht eingeloggt bin und gebe die Addy ein dann sehe ich den Smilie.

Mir geht es nicht um die Smilie, ich wollte Dateien in einem Ordner machen die nur für eingeloggte User zum ziehen da sind. Will damit verhindern das jemand den link weiter gibt, denn wer dann nicht geloggt ist soll auch nix bekommen.

LG LB

jbs
02.06.2016, 09:31
Am einfachsten wäre das über Cookies und .htaccess möglich. Sprich wenn dein Forum bzw. deine Website Cookies beim Login schreibt, kannst du einfach die Cookies abfragen ob sie vorhanden sind und entsprechend den Zugriff erlauben.

Einfache Anleitung dafür: A simple way to limit file downloads to only logged in users in WordPress | The Gippy Pages (http://top-frog.com/2010/07/01/a-simple-way-to-limit-file-downloads-to-only-logged-in-users-in-wordpress/)

Müsstest nur den Code entsprechend dem Cookienamen anpassen und den Pfad zu den Smilies genauso.



# These next two lines will already exist in your .htaccess file
RewriteEngine On
RewriteBase /
# Add these lines right after the preceding two
RewriteCond %{REQUEST_FILENAME} ^/images/smilies_v2/(.*)\.png$ # Hier ist der Pfad zum Ordner mit den Bildern, welche nur eingeloggten Benutzern zur Verfügung stehen sollen
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC] # Hier musst du den Namen des Cookies einbauen, das beim Login gesetzt wird
RewriteRule . - [R=403,L]

LD
02.06.2016, 10:34
bin nicht so bewandert darin,
ich nutze mit familie ein WBB 3.1
https://www.szenebox.org/images/_imported/2016/06/6.jpg

in meiner htaccess steht momentan das

RewriteEngine on
RewriteCond %{HTTP_HOST} ^XXXX\.XX$ [OR]
RewriteCond %{HTTP_HOST} ^www\.XXXX\.XX$
RewriteRule ^/?$ "http\:\/\/www\.XXXX\.XX\/upload" [R=301,L]

*statt x halt der name

ich weiß leider nicht welcher cookie name ich habe und wo finde ich den?

habe das schon gemacht
RewriteCond %{REQUEST_FILENAME} ^/datein/(.*)\.rar$
aber wie ich das noch richtig dazu gebe weiß ich leider nicht

RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC] # <- ich weiß nicht welchen cookie name ich überhaubt habe
RewriteRule . - [R=403,L] #<- brauch ich das noch da oben schon das steht [R=301,L]

Bin leider nicht so in der Materie drin, mein Board hat ein bekannter gemacht mit den ich leider kein kontakt mehr habe.
Ich bedanke mich für jede hilfe

FLX
02.06.2016, 12:00
Bei Firefox reicht ein rechtsklick auf die Seite > Seiteninformation anzeigen > Sicherheit > Cookies anzeigen
(hmm lecker Kekse)

LD
02.06.2016, 12:55
danke FLX
aber kein erfolg

habe 2 cookies undzwr die

cookieHash
wcf_boardLastActivityTime

man kann immer noch von außen laden.

RedDevil
02.06.2016, 13:15
Funzt das nicht mit dem Code ? Any text goes here...

LD
02.06.2016, 14:15
im forum kann ich den Code Hide ja nutzen, nur das hilft ja nicht weiter weil so ein nicht eingeloggter User mit dem link trotzdem ziehen kann.

RedDevil
02.06.2016, 14:18
Normal sollte ja kommen: Bitte Reg Sie sich um den Link sehen zu können [oder so ähnlich]

Unlimiter
02.06.2016, 15:02
Wenn du tatsächlich HIDE und nicht SPOILER verwendest, dann hast du etwas falsch konfiguriert.

Bei WBB solltest du einstellen können, ob der Inhalt nachdem man einen Beitrag oder einer Bedankung abgegeben hat sichtbar wird. Außerdem solltest du dringend deine Benutzerrechte überprüfen, denn sollten die ersten beiden Punkte korrekt sein, so ist wahrscheinlich "immer sichtbar" in der "JEDER"-Gruppe aktiviert.

Weiteres dazu direkt bei der Beschreibung des BB-Codes:
https://pluginstore.woltlab.com/file/3-hide-bbcode/

- - - - - - - - - - Beitrag nachträglich erweitert - - - - - - - - - -

Moment, meinst du eher Folgendes:

Das Bild selbst soll nicht angezeigt werden können, wenn ein User nicht eingeloggt ist? Sprich der User soll keine "file permissions" auf die Dateien im Ordner selbst haben?

Dann ist die Lösung natürlich mit dem Hide nicht anwendbar, denn sobald man den Link hat, kann man ihn jederzeit öffnen.

LD
02.06.2016, 16:51
Moment, meinst du eher Folgendes:

Das Bild selbst soll nicht angezeigt werden können, wenn ein User nicht eingeloggt ist? Sprich der User soll keine "file permissions" auf die Dateien im Ordner selbst haben?

Dann ist die Lösung natürlich mit dem Hide nicht anwendbar, denn sobald man den Link hat, kann man ihn jederzeit öffnen.

genau das wollte ich haben

Unlimiter
02.06.2016, 17:10
dann solltest du alternativ nicht lastactivity nehmen (die bleibt nämlich gesetzt), sondern auf user_id zurückgreifen.

etwas in der Art z.b.:



RewriteCond %{HTTP_COOKIE} ^.*user_id=(\d+).*$ [NC]


(an jbs Beispiel anpassen).

LD
03.06.2016, 09:38
ich habe es nicht hinbekommen

FLX
03.06.2016, 09:56
Dazu wird es nötig sein die Bilder ausserhalb vom Webroot abzulegen.
Diese können dann nur indirekt mit zb. readfile() angezeigt werden da der direktaufruf ins leere führt.



/* nicht direkt erreichbarer Imagepfad */
$image = "/var/www/images/".my_image;

/* auslesen und anzeigen */
header('Content-Type: image/jpg');
readfile($image);


Anmerkung: Auslesen mit PHP wirkt bei hohen Zugriffszahlen sehr ressourcenlastig aber trifft bei dir ja auch eher nicht zu :D