Легкий сценарий входа в систему без базы данных

Вот решение, но я не знаю, является ли это лучшим....

Select              
Coalesce(Case When Len(listing.Offer_Text) = 0 Then Null Else listing.Offer_Text End, company.Offer_Text, '') As Offer_Text,         
from tbl_directorylisting listing  
 Inner Join tbl_companymaster company            
  On listing.company_id= company.company_id
10
задан jdtech 31 July 2015 в 03:10
поделиться

8 ответов

Это не идеальное решение, но вот быстрый и грязный пример, который показывает, как вы можете сохранить информацию для входа в PHP-код :

<?php
session_start();

$userinfo = array(
                'user1'=>'password1',
                'user2'=>'password2'
                );

if(isset($_GET['logout'])) {
    $_SESSION['username'] = '';
    header('Location:  ' . $_SERVER['PHP_SELF']);
}

if(isset($_POST['username'])) {
    if($userinfo[$_POST['username']] == $_POST['password']) {
        $_SESSION['username'] = $_POST['username'];
    }else {
        //Invalid Login
    }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Login</title>
    </head>
    <body>
        <?php if($_SESSION['username']): ?>
            <p>You are logged in as <?=$_SESSION['username']?></p>
            <p><a href="?logout=1">Logout</a></p>
        <?php endif; ?>
        <form name="login" action="" method="post">
            Username:  <input type="text" name="username" value="" /><br />
            Password:  <input type="password" name="password" value="" /><br />
            <input type="submit" name="submit" value="Submit" />
        </form>
    </body>
</html>
23
ответ дан 3 December 2019 в 13:27
поделиться

FacebookConnect или OpenID - два отличных варианта.

По сути, ваши пользователи входят в систему на других сайтах, участниками которых они уже являются (Facebook или Google), а затем вы получаете подтверждение с этого сайта, говорящее, что пользователь заслуживает доверия - начните сеанс и они вошли в систему. База данных не требуется (если вы не хотите связать дополнительные данные с их учетной записью).

11
ответ дан 3 December 2019 в 13:27
поделиться

Сохраните хэши имени пользователя и пароля в массиве в файле php вместо db.

Когда вам нужно аутентифицировать пользователя, вычислите хэши его учетных данных, а затем сравните их с хешами в массиве .

Если вы используете безопасную хеш-функцию (см. хеш-функцию и хеш-алгоритмы в документации PHP), она должна быть довольно безопасной (вы можете подумать об использовании соленого хеша), а также добавить некоторую защиту к самой форме .

4
ответ дан 3 December 2019 в 13:27
поделиться

Если у вас нет базы данных, где будет храниться ПОСТОЯННАЯ запись данных для входа ваших пользователей? Конечно, пока пользователь находится в системе, минимальная информация о пользователе, необходимая для работы вашего сайта, может храниться в сеансе или cookie. Но что тогда после выхода из системы? Сеанс завершается, файл cookie можно взломать.

Итак, ваш пользователь возвращается на ваш сайт. Он пытается войти в систему. С чем ваш сайт сравнивает данные для входа в систему?

2
ответ дан 3 December 2019 в 13:27
поделиться

, если вы этого не сделаете. у вас есть база данных, вам придется жестко закодировать данные для входа в свой код или прочитать их из плоского файла на диске.

0
ответ дан 3 December 2019 в 13:27
поделиться

Вы можете управлять доступом на уровне веб-сервера, используя базовую аутентификацию HTTP и htpasswd . С этим возникает ряд проблем:

  1. Это не очень безопасно (имя пользователя и пароль тривиально закодированы на проводе)
  2. Сложно поддерживать (вам нужно войти на сервер, чтобы добавить или удалить пользователей)
  3. У вас нет контроля над диалоговым окном входа в систему, представленным браузером.
  4. Нет способа выйти из системы, кроме перезапуска браузера.

Если вы не создаете сайт для внутреннего использования с небольшим количеством пользователей, я бы не стал не очень рекомендую.

0
ответ дан 3 December 2019 в 13:27
поделиться

Нет причин не использовать базу данных для реализации входа в систему, самое меньшее, что вы можете сделать, - это загрузить и установить SQLite, если ваша хостинговая компания не предоставляет вам достаточно БД.

-3
ответ дан 3 December 2019 в 13:27
поделиться

Я бы использовал настройку из двух файлов, например:

index.php

<?php 
session_start(); 

define('DS',  TRUE); // used to protect includes
define('USERNAME', $_SESSION['username']);
define('SELF',  $_SERVER['PHP_SELF'] );

if (!USERNAME or isset($_GET['logout']))
 include('login.php');

// everything below will show after correct login 
?>

login.php

<?php defined('DS') OR die('No direct access allowed.');

$users = array(
 "user" => "userpass"
);

if(isset($_GET['logout'])) {
    $_SESSION['username'] = '';
    header('Location:  ' . $_SERVER['PHP_SELF']);
}

if(isset($_POST['username'])) {
    if($users[$_POST['username']] !== NULL && $users[$_POST['username']] == $_POST['password']) {
  $_SESSION['username'] = $_POST['username'];
  header('Location:  ' . $_SERVER['PHP_SELF']);
    }else {
        //invalid login
  echo "<p>error logging in</p>";
    }
}

echo '<form method="post" action="'.SELF.'">
  <h2>Login</h2>
  <p><label for="username">Username</label> <input type="text" id="username" name="username" value="" /></p>
  <p><label for="password">Password</label> <input type="password" id="password" name="password" value="" /></p>
  <p><input type="submit" name="submit" value="Login" class="button"/></p>
  </form>';
exit; 
?>
8
ответ дан 3 December 2019 в 13:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: