воскресенье, 21 января 2018 г.

Авторизация пользователей на PHP

Здравствуйте, коллеги по web-алхимии!
Вот такая функция, простая и рабочая создана мной для своих целей.

Часть первая (html-код)

<form action="" method=post>
<input type="text" id="login" name="login">
<input type="password" id="password" placeholder="пароль" name="password" oninput="var input = document.getElementById('password').value;heshmd5=md5(input);document.getElementById('md5pass').value = heshmd5;">
<input type=hidden id="md5pass" name="md5pass">
<button type="submit" class="button success columns expand">Войти</button>
</form>

Здесь на поле ввода пароля навешен js-скрипт, который при изменении значения в поле (ну, когда вы вводите пароль), хеширует значение в md5 и тут же присвает его в значение скрытого поля формы с id=md5pass

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

Здесь добавлю только, что функции md5 в JS не бывает, поэтому я пользовался функцией взятой отсюда .

Часть вторая (PHP)

В свой index.php я вставил инклюдом login.php, который выглядит так

<?php

$login=$_POST['login'];  // получаем значение post от формы
$md5pass=$_POST['md5pass'];  // получаем значение post от формы
$filename = '$_POST['login'].'/conf.php';  // конфигурируем предполагаемый путь к директории пользователя
if (file_exists($filename)){// если путь к директории существует, то инклудим его
    include ("$filename");
}

session_start();// открываем сессию. Это нужно на случай если ранее пользователь уже авторизировался
if(isset($_SESSION['login'])){// если уже авторизирован, то...
   $auth="Авторизированно";
}elseif(file_exists($filename)&$md5pass==$pass){ // если путь к директории пользователя существует и хеши паролей совпадают, то ...
    $auth="Авторизация успешна";
    $_SESSION['login'] = $login;// инициализируем переменную в сессии
}elseif(file_exists($filename)&$md5pass!=$pass){// хеши пароля не совпали и тогда ...
    $auth="Авторизация неуспешна";
}elseif (!file_exists($filename)&isset($_POST['md5pass'])){// нет директории такого пользователя, а значит ...
    $auth="Отсутствует пользователь";
}elseif(!isset($_GET["logout"])&!isset($md5pass)){// если это не разлогинивание и если поля формы не переданы, то это первоначальная загрузка страницы
    $auth="Неавторизированный вход";
}

if (isset($_GET["logout"])){// Разлогинились передачей get-запроса
    $auth="Разлогинивание успешно";
    session_unset();// уничтожили сессию
    session_destroy();
    header("Location: index.php");
    exit(); // после передачи редиректа всегда нужен exit или die
    // иначе выполнение скрипта продолжится.
}

/*
echo $login;// для проверки
echo "->";
echo $md5pass;
echo "<br>";
echo $auth;
*/
?>

Часть третья - использование внутри файлов и скриптов

Там где нужно разделить авторизированный и неавторизированный допуск, используем конструкцию

<? if (isset($_SESSION['login'])){
              echo " Здесь, то что относится к аккаунту пользователя";
     }else{
               echo " Здесь, то что видно всем";
      }



пятница, 5 мая 2017 г.

Война пикселей

Проект, который был создан на базе найденного в интернете JS скрипта. Я внес небольшие изменения в основном касающиеся адаптации под разные размеры окон браузера.

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

вторник, 18 апреля 2017 г.

Макет эволюции

Автор Алексей Ершов
Макет эволюции собран на javascript.
В пилотной версии настройки предустановленные, в последствии прилажу форму настроек.

Смысл макета следующий:
Роль вселенной генезиса играет длинное число- пока оно 300 знаков. Роль существ играют трехзначные числа. Всего их в предустановке 10. Они генерируются первоначально случайным образом.
Затем каждый "зверь" проверяется на "вселенной". А именно, есть ли в числе вселенной комбинация равная числу зверя. Если такая находится, значит зверь адаптировался к среде и эволюционирует. Эволюция зверя это прирост значения числа зверя.
Если комбинации равной числу зверя не нашлос, то зверь инволюционирует. От его значения отнимается единица, ну или указанный параметр.
Звери у которых значение стало меньше 100 (меньше трехзначного), условно проиграли битву видов и больше не участвуют в эволюции.
Как только проверили всех зверей, год завершен.

В конце года вселенная меняется. В ней произвольно меняются несколько знаков на любые случайные. Это эволюция вселенной.

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

Настоящей эволюцией является увеличение разрядности числа зверя на порядок. То есть достижение 4-х значного значения и более.

На javascript, к сожалению, нельзя посчитать циклы в несколько миллионов актов. Это подвесит браузер. А самое интересное начнется после нескольких разрядов звериной эволюции. И при увеличении числа вселенной до нескольких десятков тысяч едениц, а количества зверей до нескольких тысяч.
Вот здесь то и посмотреть на рост разрядности, но....   нам и того хватит.

А пока макет эволюции подтверждает, что эволюция возможна, при некоторых условиях.

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

Макет доступен по адресу http://mcsweb.myjino.ru/evolution/
Вся работа- это страница html. Если вам будет интересно развить тему - пишите в коменты. Бросайте свои варианты.



Макет имеет лицензию wtfpl .

понедельник, 4 января 2016 г.

Бесплатный хостинг и бесплатный домен 2-го уровня

Хостинг с PHP, MySQL, FTP, неограниченное количество доменов 3-го уровня, 1гБ памяти
https://byet.host/

Домены 2-го уровня бесплатно на http://dot.tk
Авторизироваться лучше с Google+