Arhn - архитектура программирования

Использование нескольких паролей для простой страницы, защищенной паролем

Я пытаюсь защитить некоторые страницы своего веб-сайта с помощью PHP, но без создания базы данных или имени пользователя.

Я следовал инструкциям, написанным в комментарии к этому сообщению: Как лучше всего защитить паролем папку / страницу с помощью php без базы данных или имени пользователя Что отлично работает! Но я хотел бы пойти еще дальше и изменить код, чтобы принимать несколько паролей на одной странице. Это возможно?

Я предполагаю, что это будет что-то вроде: проверьте, существует ли полученное значение в массиве $ password

//access.php

<?php
//put sha1() encrypted password here - example is 'hello'
$password = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d';

session_start();
if (!isset($_SESSION['loggedIn'])) {
   $_SESSION['loggedIn'] = false;
}

if (isset($_POST['password'])) {
  if (sha1($_POST['password']) == $password) {
    $_SESSION['loggedIn'] = true;
  } else {
     die ('Incorrect password');
  }
} 

if (!$_SESSION['loggedIn']): ?>

<html><head><title>Login</title></head>
<body>
 <p>You need to login</p>
 <form method="post">
  Password: <input type="password" name="password"> <br />
  <input type="submit" name="submit" value="Login">
</form>
</body>

<?php
exit();
endif;
?> 

Ответы:


1

Создайте массив паролей, затем используйте функцию in_array, чтобы проверить, есть ли там пароль пользователя.

Необходимо изменить следующие строки:

$passwords = array("aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d", "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d", "etc..");

и

if (in_array(sha1($_POST['password']), $passwords)) {
03.12.2015
  • Ты пригвоздил Том! Спасибо за помощь! :) 03.12.2015

  • 2

    Вы можете установить свои пароли в виде массива и цикла, чтобы проверить их следующим образом

    $passwords = [
        'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d',
        'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d',
        'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d',
    ];
    
    
    if (isset($_POST['password'])) {
    
      $result = false;
    
      foreach($passwords as $password){
          if (sha1($_POST['password']) == $password) {
            $result = true;
         }
      }
    
      if($result) {
         $_SESSION['loggedIn'] = true;
      } else {
         die ('Incorrect password');
      }
    
    }
    
    03.12.2015
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..