2017-01-19 7 views
0

残念なことに、それらのうちのどれかが私のために働いています。pdfから直接アクセスをブロックするが、サーバーからpdfjsを要求できるようにする

私は直接アクセスからpdfをブロックしようとしていますが、サーバーにPDFJSで表示させようとしています。

PDFJSでPDFを表示しようとすると、私が得ることができるものです:ファイルが欠落している、403は禁じられ、予期しないサーバーの応答

私が試したと動作しませんでした:

  • を拒否すべてから(.htaccessファイル)
  • のRewriteRule:サーバールートパスから
  • Accessファイル
  • 「とすべての拒否のhtaccessの「全てから拒否」有しながら127.0.0.1" からLLOW/『』ローカルホストから

を許可するここで、すべての検証

<?php 

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

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

      echo "<!DOCTYPE html><html dir='ltr' mozdisallowselectionprint moznomarginboxes><head><link rel='stylesheet' href='web/style/style.css'></head>"; 

      // Error Messages 
      $error1 = "Veuillez vous connecter."; // You need to Log-in 
      $error2 = "Votre compte n'est pas abonné au journal électronique. <br /> <span style='font-size: 0.6em;'>Merci de visiter la <a href='' target='_blank'>page d'abonnement</a> si vous souhaiter vous y inscrire.</span>"; // Your account isn't subscribed to our web newspaper 
      $error3 = "Une erreur s'est produite durant votre requête. <br /> <span>Merci de réessayer. Si cette erreur persiste, merci de nous en faire part à travers le <a href='' target='_blank'>formulaire du support technique</a>.</span>"; // You encountered an error during your request. Plese refresh the page 
      $error4 = "Le lien ne dirige vers aucun pdf. <br /> <span style='font-size: 0.6em;'> Merci d'utiliser un lien correcte."; // You link doesn't lead to any pdf. Please use a correct link 
      $error5 = "Le fichier pdf est introuvable. <br /> <span style='font-size: 0.6em;'>Il s'aggit soit d'une erreur du lien URL ou bien le fichier pdf demandé n'existe plus. Veuillez vous refferrez à nos archives si vous souhaitez retrouver une ancienne édition.</span>"; // There's an error in your link. 

      if(empty($_GET["page"])) { 
       $page = ""; 
      } else { 
       $page = htmlspecialchars($_GET["page"]); 
      } 

      // Get pdf 
      $file = "./pdf/" . $page . ".pdf"; 

      // Get account 
      $user = JFactory::getUser(); 

      // Define user id 
      $userId = $user->id; 

      // Connect to databases 
      $link = mysqli_connect("localhost", "root", "", "dbName"); 

      // Define query to execute if page isn't empty and file exists 
      $resultabo = mysqli_query($link, "SELECT * FROM tableName WHERE user_id='$userId' ORDER BY id DESC LIMIT 1"); 

      // STARTING FILES REQUEST 
      if(empty($page)) { 
        // If nothing is entered in the page, display error 
        header("HTTP/1.0 404 Not Found"); 
        echo "<p id='errorMsg'>" . $error4 . "</p>"; 
        exit(0); 

      } elseif(file_exists($file)) { 

       // If file is existing, continu php 

       // Check wether the user is a visitor or a registered member 
       if($userId == 0) { 

        header('HTTP/1.0 403 Forbidden'); 
        echo "<p id='errorMsg'>" . $error1 . "</p>"; 
        exit(0); 

       } else { 

        // Controling wether the user is logged-in in a subscribed account 
        while($row = $resultabo->fetch_assoc()) { 

         // Getting account type for checking if subcribed 
         $abo = $row["account_id"]; 

           if($abo == 1) { 

            // Note : 1 is a registered member but not subscribed 

            // echo message : Your account is not subscribed to our website, please go on WebsiteName to subscribe. 
            header('HTTP/1.0 403 Forbidden'); 
            echo "<p id='errorMsg'>" . $error2 . "</p>"; 
            exit(0); 

           } else { 

            // Note : All $abo between 6 and 7 are "subscribed" 
            // SUCCESS, PDF IS BEING SHOWED 

            // Viewer.html 
            echo 'PDFJS html code from viewer.html (code example)'; 

           } 

        } 
       } 

      } else { 

       // Cannot find file, give an error. 
       header("HTTP/1.0 404 Not Found"); 
       echo "<p id='errorMsg'>" . $error5 . "</p>"; 
       exit(0); 
      }  

     echo "</head></html>"; 

     exit(0); 

?> 

を実行するPHPファイルのコードは、全体のHTMLビューアコードを貼り付けることができませんでしたが、それはだています彼らのウェブサイト上のデモとして与えられた例と同じです。ファイルを表示するために、DEFAULT_URLをmy $ファイルで変更しました。

おかげでそのような

答えて

1

最善の解決策は、プロジェクトフォルダの外にファイルを置くことで、気にいら:あなたのpdfファイルのファイルはURLからアクセス可能であることはできませんが、このように

-joomla folder 
--administrator 
--components 
--... 
-pdf 

は、スクリプトからづけしたまま:

$file = JPATH_ROOT."/../pdf/" . $page . ".pdf"; 
+0

ありがとうございます。しかし、上記のように、サーバールートは何らかの理由で動作しません。おそらく、pdf.jsやviewer.jsのファイルパスを変更/消去しているスクリプトでしょう。あなたのコードを使用するとエラーが発生します。メッセージ:Missing PDF "http://domain.name/pdf/filename.pdf"。 –

+0

したがって、application/pdfでpdfの内容を返すPHPページを呼び出す必要がありますコンテンツタイプとして – Yoleth

+0

これはすでにpdfを表示しているphpファイルなので意味が分かりませんが、サーバールートは動作していますが、パスとして設定しようとすると自動的にドメインに追加されます例: 'Message:Missing PDF 'https://domain.name/server/root/path/domain.name/pdf/filename.pdf"。 –

関連する問題