Аутентифицированные веб-страницы (через php / html + .htaccess) не могут видеть ресурсы в других каталогах (CSS, JavaScript, изображения и т. Д.) - PullRequest
0 голосов
/ 07 июня 2018

Я ищу защитить паролем весь каталог моего сайта с помощью HTML-форм + PHP.Я могу записать сеанс с проверкой подлинности и перемещаться по страницам с помощью этого сообщения (Спасибо!) - однако любые внешние файлы, связанные с этими страницами, не видны браузеру. Вот эталонное изображение


Проблема

страница индекса отображается, но без каких-либо ресурсов (css, js, images, шрифты и т. Д.);)


Каталог

Все находится в корневом каталоге.

├── pages
|   ├── page-1.html
|   └── page-2.html
|   └── page-3.html
├── assets
|   ├── main.css
|   └── all.js
├── .htaccess
├── login.php
└── index.html

.htaccess

RewriteCond %{REQUEST_FILENAME} !login.php
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* login.php?file=$0 [QSA,L] # pass everything thru php

login.php

 <?php
 $file = 'index.html';
 $password = $_POST['password'];
 $key = 'password';
  if(isset($_POST['submit'])){
    if($password === $key){
      $_SESSION['login'] = true;
        readfile($file);

      die();
    } {
      echo "<div class='alert alert-danger'>wrong password.</div>";
    }
  }
?>
<html>
   <head>
     <title>Login</title>
   </head>
<body>
    <form action="" method="post">
      <label for="pwd">Password</label>
      <input type="password" class="form-control" id="pwd" name="password" required>
      <button type="submit" name="submit" class="btn btn-default">Login</button>
    </form>
</body>
</html>

index.html

<html>
<head>
    <meta charset="UTF-8">
    <link href="/assets/main.css" type="text/css" rel="stylesheet">
    <title>A title</title>

</head>
<body>
    A list of links
    <ul>
        <li>
            <a href="/pages/page-1.html">page-1</a>
        </li>
        <li>
            <a href="/pages/page-2.html">page-2</a>
        </li>
        <li>
            <a href="/pages/page-3.html">page-3</a>
        </li>
    </ul>
</body>
<script src="/assets/all.js" ></script>
</html>

Я подозреваю, что активы недоступны, потому что они все еще являются частными.Возможно, решение состоит в том, чтобы разрешить доступ не только к индексному файлу?

У меня нулевой опыт написания сценариев на стороне сервера, таких как PHP, поэтому, пожалуйста, потерпите меня, если ответ на этот вопрос действительно очевиден.Заранее большое спасибо !!

...