2016-06-30 6 views
3

Ich habe jetzt Stunden gesucht und es ist Zeit, Sie zu fragen, ob es eine Lösung gibt.PDFs Dateien, auf die nur von angemeldeten Joomla-Benutzern zugegriffen werden kann

Ich versuche, nur eingeloggte Joomla-Benutzer können meine PDFs in einem Verzeichnis sehen und herunterladen.

Dazu habe ich eine .htaccess:

# Adding PDF compatibility for the control 
AddHandler php5-script .pdf 
php_value auto_prepend_file "prepend.php" 

# Check wether or not user is logged-in 
php_value include_path "./journal/" 
php_value auto_prepend_file "download.php" 

Ich habe auch eine Datei "download.php" genannt, ob zu überprüfen oder nicht die Joomla Benutzer loggged-in:

<?php 
define('_JEXEC', 1); 
define('JPATH_BASE', '../'); 
require_once (JPATH_BASE .'/includes/defines.php'); 
require_once (JPATH_BASE .'/includes/framework.php'); 

/* Create the Application */ 
$app = JFactory::getApplication('site'); 

$user = &JFactory::getUser(); 
if ($user->guest) die(); 
else { 

} 
?> 

Und die letzte Datei: prepend.php

<?php 

header('Content-type: application/pdf'); 
readfile($_SERVER['SCRIPT_FILENAME']); // serve the requested file 
exit(0); 

?> 

Problem ist, wenn ich auf einen der pdf zuzugreifen versuchen, erhalte ich die Klartextversion davon. Hier sind die ersten Zeilen ... Und es geht lange danach.

%PDF-1.6 %âãÏÓ 1983 0 obj <>stream hÞì[MoGý+uLÖYŸ‚Fc^†e ÇXŒ¥Ž<°4­ùß/ÉjN„8Y U ìE>oº«Y$«ºÛôà¼ôè DÁ%O2—ß*…¯d¾R}rÙWÙ¡ÏYPq ת ƒ bT#ð.d,‚€[email protected]Á…*v+DFUg$(3d½ZcG¢Ï^Pu‚Πѳ¿=£*6\Il ºAƱC1faÆèb z7¹˜A<@¶‘«øÌNÆ’± Y #¶Q•ÃIùØñHÊÇn$¯+±"|!º(^…ĨˆW!;‹x8 ¨ÖBåбÁ¥PÅFô.Å(6"0"±Á?SŠb#J¼Øˆl#'±ÙFAa‰l£Žcµˆ5ž–¨ñ§ dFò’@™‘ÀeH2#¡ËÍ?^~š¦Ï¡èN9PPv9ézSaD:£ºœ³Î`%ÈNTnñËl£Å‡ä¿Ì6Zürt¥Å–?.©Òâ—#_®®4ÿ¸KðrX‚VO+1*BWˆ]®×’´"x %«\Ž\Çz—mHé1bU«¸° Ç6¨ˆ§Õ;.Nñ´#nEÇ*žr¹ÊôZdTõZrœwaæsî„ÝàX‹µ2"GŽÍÊ]"{&×ø[”•Û3b¤s‰mPf.òºJÊŒKq\ñ™$På9B©òÞQÊáyŒ$«ÄIæÒ(‚‚£ÄCEFâ=±Ì)K™Ÿ‘Ä8ìT$ƒÄ’¤Rõ.Ûtƒ8I$Ù'–Q»2Øû,†%ÚX£@)xb©ƒÇ(eAIb±ƒI§1^§‘@õ„õ> %±àŠRH–ïsÃÒƒ|‘’”’—ÞÃP¬I Š5*:€ÿây².I&ÿ‘…IæH¬IáV =‚Ô.I‚¨áeñ$¹§à¶)&d­5JRtÜY%LA¬Isb(Ö¤Š5=èXº/q`(ÝBEŒ ’h!ªµ(Í:ht¸0,:9¦:' *‚ÄSLº n€,U†I¬Fo¬Z%I¬IU3k”uÿfc² ñ4€šFÐë€"PÓ-m%I/IÆ‚ö7’B QŠ˜d§X¦IèYÉÂ+·‚tãï¾Û¼|Òݽ{+¶JÜÜÀùPÀ suÙË®¥@v-b€Á‡Í›íaÚߦ©mw|ñѵ×ÓÃñåôÅÑæí|=½ÚÞ¶ÍQ½ûr;m·ûùvžßÏÞ>ßïçãö¸›÷›óéâ¸y~8î~Ý2Ð_?|ÚûOÓtƒÇÍ»íÕa{³y±»º?Lòóz¾ztÿ§ý%3O›×ò×67‘àßïücÚ^Úî¯wûéüÓV\•¯¶‡ùç›íÕlê·†ü â …Š'”N(ŸP9¡zB¤èüzw95{ï8žç‡æÌÏóáóÇyþ¼ùq¾¸¿áˆë•ß½Óp¾¾¿¹{_ÛáB¦ß[email protected]Óp¾”ŽŸ®§›?Vÿt×—ìQKT´îghÀÊ ¢dÀ­å¼²cFcFcFcFcFcFcFcFcFcFcÆŒ9s0æ`̦$9,À˜ƒ1cŽÆ9s4f¢J`Ìј£1GcNÆœŒ9s2ædÌɘ“1'cNÆœŒ9s6ælÌÙ˜³1gcÎÆœ9s6æbÌŘ‹1ŸZN1æbÌŘ‹1c.Æ\¹³õ99n,À˜«1Wc®Æ\¹3333333333-Ìrº[email protected]Á@4`ؤG¾¨ŒÙ4H¦A2 ’iLƒd$Ó ™É4H¦A2 ’iLƒd$Ó ™É4H¦A2 ’iLƒd$Ó ™É4H¦A2 ’iLƒd$Ó ™É4H¦A2 ’iLƒd$Ó ™É4H¦A2 ’iLƒd$Ó ™É4H¦A2 ’iš?<îÒo®ä´Vulú‹ŽíuÞ²ÿqÞ×sž:üS‡êðOþ©Ãÿ:|;bÿ½†­s°cNè˜ÿöœç×ÇoÎåAå,„o™!ý†åyî¯hŽü<¶û¸uÓ³»ãýån>‹) eî§\L‡ùÁ]^Ü–v”Í]ðöz>§ƒÒ7AR‘ç&ø(YÔ’UÖ!kA¯Ý™ï)ØÒs,,=Ç‚G(ðº–îGÓÒ÷eº8l÷ÿ¾ÛÞÜÝï¯ÔƒÔíÁÈ2jÕ–B{¸›¿MÏ~=Ìû£r l»ÿÚM{wùe¿½Ùýç~:C=Z0h˨~-BeƒÕ܃¤ŽÚ½1מ¹öl̵gc®=síÙ˜kÏÆ\{úùõ¡×“3uoÊ„CÖõœLݽâPçmÖ»ûõTõTu½y'1µ—ÂÃÏÛ;\?üÔ€¾½ÅõÝí |Ùª–÷äq<$ИRÿBzj‡tͪ]³zš€ïš]³úz×÷ÌöBÂz»pn…q•Ó7š‡ýÕyH!,ˆÊz4XBUWüè„Ðz_ÿG @¿JÀ°e×;á!¶€!®HÙº†)Û7+Œ+R¶âô"e«xä~5_N7gKK½Õ®zѧž=<€ûå›^üòmó£¿îÃð["lH ߉¡3éò5<¿$Çö Äq¦V»!3µ’ yœiù¤Þ_´¡®Ò$ãR0´âcäø \Ό㟀pùŒû¿1¬ïVBqÅÞ¼<"Ä{s{¯#ß„¾¢¤F9üyS+ÙXûsÙuºNCï Ú¿Ž‚ñÏ?˜Z õ‚´N-§V%iÅZNµQvŸ¶?|ý¿gÀ=ö¿*ôo, endstream endobj 1984 0 obj <>stream hÞŒË1 €0ЫäéoSmAÜÜ‹õ"ÅEADoov:äÿ^`!8´ä"Aœ§6hKмˆF£t‰žºŽÁèÛșӼðô…óuÞË5leïû?f똫cRÇ|k¾ì`TÔN> endstream endobj 1985 0 obj <>stream hÞŒ“KOƒ@€ç§ÌQÊ.°<’¦IcÓ“QR=øˆ´›º ²»4õ'û'ÔÙbÒ‡¹,³0û}Ìpž¤Èó”a»+G.„|ôƒÄAê‚Ã6(ÂÐFí©c±Å$˜ˆmNŠ©»ã3Z¼™Òƶ.†sï:w;—àv÷µôn[¨Ršñ˜Ò¯ª¦´xÁ™7•Æ>—MQxO”„ÙËŽÇ;xY®eéžn$¾²…<[¹1U‰Zš¼Ù\®Íâ|ë:a¸‘Ûöâù[@‹œ*cµzm¬"îd±Rå dЉ̴\ï*êPBM/od·DÐlö$a¯Ä?%1R¯e£Í ‡èu{Ž¯o˜Ã'CXÀ ”ƒDQ¯(<e IUÓ*Iè”|Ð`â^ø_ãÒ$½šèPsoðN¢5)®(ª¡ Ôº´WïÉfU£KEß×áø9‹Û¬ŽZþüqGødŸåK‰ioƒNaÒcgÄù`D„N 

Jede Hilfe wird sehr geschätzt!

+1

Sie wahrscheinlich eine 'Header bereits sent' Problem haben und Ihre app/pdf-Header ignoriert/übersprungen –

+0

Es gibt einige Komponenten von Drittanbietern, die Sie probiert haben? Sie finden viele unter http://extensions.joomla.org. –

+0

Nun, die einzige Komponente, die ich gefunden habe, war die "PDF-Einbettung", aber es tut nicht, was ich möchte. Ich möchte, dass in Zukunft Personen, die die Website verwalten, nur Dateien in das Verzeichnis übertragen müssen und sofort für Benutzer heruntergeladen werden können. Das ist meine einzige Lösung, denke ich. –

Antwort

0

Ok, damit ich endlich diese Arbeit bekam. Wie Marc B auch erwähnt, meine Header wurde ignoriert. Ich denke, die doppelte php_value auto_prepend_file hat nicht gut funktioniert und die erste "prepend.php" wurde ignoriert. Also kopiere ich einfach den Code eingefügt und alles in einer Datei mit der Kopfzeile Conten-Disposition hinzugefügt.

Hier ist der Arbeitscode: Sein

.htaccess

# Adding PDF compatibility to check 
AddHandler php5-script .pdf 

#Path of the directory where are stored the PDFs 
php_value include_path "./journal/" 

#Check wether or not user is logged-in & show pdf if logged-in 
php_value auto_prepend_file "prepend.php" 

prepend.php

<?php 

/* Loading Joomla User core Files */ 
define('_JEXEC', 1); 
define('JPATH_BASE', '../'); 
require_once (JPATH_BASE .'/includes/defines.php'); 
require_once (JPATH_BASE .'/includes/framework.php'); 

/* Create the Application */ 
$app = JFactory::getApplication('site'); 

/* Check wether Joomla User is logged-in */ 
$user = &JFactory::getUser(); 
if ($user->guest) die(); 
else { 

} 

/* Sending back pdf */ 
header("Content-Disposition", "inline; filename=myfilename.myextension"); 
header('Content-type: application/pdf'); 
readfile($_SERVER['SCRIPT_FILENAME']); // serve the requested file 
exit(0); 

?> 
1

Versuchen mit diesem in Ihrem PHP-Code:

<?php 
header('Content-disposition: attachment; filename=filename.pdf'); 
header('Content-type: application/pdf'); 
readfile($_SERVER['SCRIPT_FILENAME']); // serve the requested file 
exit(0); 

Sie können es auch .htaccess mit Kraft:

<Files *.pdf> 
    Header set Content-Disposition attachment 
</Files> 
+0

Scheint, dass es keine Änderungen vornimmt, und wo sollte ich die Header-Set Content-Disposition Anhang einfügen ? Es gibt mir einen Fehler. –

+0

erhalten Sie einen Fehler? auf Ihrer .htaccess Datei. –

+0

Nun ich denke, ich habe die verlegt Header-Set Content-Disposition Anhang Sollte ich es mit AddHandler php5-Skript .pdf ersetzen? –

1

Sie benötigen zusätzliche Header in Ihrer Antwort - https://stackoverflow.com/a/2882523/823549 für die vollständige Liste sehen.

Insbesondere wird Content-Disposition den Dialog speichern zwingen - http://php.net/manual/en/function.header.php

+0

Ich habe versucht, die content-dispositon hinzuzufügen, aber es ändert nicht die Plain-PDF, die ich bekomme, und ich habe versucht, den gesamten Inhalt -... in Ihrem Beispiel hinzuzufügen und scheint nicht wie es sich geändert hat. Ich fange an zu denken, dass es komplett ignoriert wird. –