it-swarm.com.de

Leiten Sie den Benutzer um, wenn er nicht angemeldet ist

kannst du mir mit kleinen problemen helfen.

Ich muss eine Lösung finden, wie der Benutzer zur Anmeldeseite umgeleitet werden kann, wenn er die Datei über den Link in den Post-Inhalten herunterladen möchte. Ich möchte, dass einige Dateien nur für angemeldete Benutzer verfügbar sind, ansonsten sollten sie verfügbar sein auf der Anmeldeseite umgeleitet werden, zum Beispiel möchte ich den Zugriff (Download) für alle Dateien aus dem Ordner "wp-content" verbieten. Beachten Sie, dass ich mehrere dieser Ordner im Stammverzeichnis habe. Ich habe versucht, die Datei ".htaccess" zu verwenden, aber sie funktioniert nicht

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://(www\.)?brt\.keezst\.com/ [NC]
RewriteCond %{REQUEST_URI} !hotlink\.(gif|png|jpg|doc|xls|pdf|html|htm|xlsx|docx|mp4|mov) [NC]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule .*\.(gif|png|jpg|doc|xls|pdf|html|htm|xlsx|docx|mp4|mov)$ http://brt.keezst.com/ [NC]
2
Marko.dev

Dank Marcelo Henriques Antwort habe ich herausgefunden, wie ich das mit der .htaccess Datei machen kann und hier ist der Code:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} ^.*(mp3|m4a|pdf|doc|xlsx|docx|xls)$
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule (.*) http://website.com/login/

platzieren Sie die .htaccess-Datei in einem Ordner, den Sie vor nicht registrierten Benutzern schützen möchten. Die letzte Zeile wird umgeleitet.

Wenn Sie also den Dateizugriff über einen Ankerlink schützen möchten, erstellen Sie aus einem bestimmten Ordner (Uploads/Medien) eine .htaccess-Datei im Ordner und fügen Sie diesen Code ein. Wenn Sie nur 403 (verbieten) möchten, ändern Sie RewriteRule (.*) http://website.com/login/ mit [R=403,L]

1
Marko.dev

Ich würde htaccess dafür nicht verwenden.

Was ich tun würde, ist eine "Download-Seite" -Vorlage zu erstellen und sie zum "Bereitstellen" der Dateien zu verwenden.

Auf diese Weise kann ich eine Überprüfung mit is_user_logged_in()Codex durchführen und mit wp_login_url()Codex umleiten.

Mach einfach:

if ( is_user_logged_in() ) :
//file link
else :
    wp_login_url();
endif;

Ich denke, das ist einfacher und sicherer. Außerdem können Sie das später sogar in ein Plugin umwandeln und in anderen Projekten verwenden oder es weiter verwenden, wenn Sie Ihre Websitevorlage ändern.

Ich wollte vor kurzem dasselbe, außer dass ich nur Rechnungen sichern wollte.

Ich habe dies über den WordPress-Teil des .htaccess gestellt

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^.*wp-content/uploads/invoices/.*
RewriteRule ^wp-content/uploads/(invoices/.*)$ read-file.php?file=$1 [QSA,L]
</ifmodule>

Diese Weiterleitung führt alle, die zu einer Datei im Rechnungsverzeichnis gehen möchten, zu read-file.php, die sich ebenfalls in der obersten Ebene von WordPress befindet. read-file.php enthält den folgenden Code, um zu überprüfen, ob der Benutzer angemeldet ist

<?php
// Load wp
require_once('wp-load.php');

// If user is logged in
if( ! is_user_logged_in() ) {

    // Redirect to home
    wp_redirect( url to your login page );
    exit;
}

// Additional checks here
// Headers to open or download the file
// readfile( $file );
// exit;

Ich hoffe es hilft!

1
Wilco