Админка php

Exynos

Сообщения
49
Симпатии
1
Онлайн
4ч 34м
#1
помогите сделать форму авторизации php, желательно скиньте исходники может какие
 
Последнее редактирование:

Темы из этой же категории

Mr.Flo

Сообщения
23
Симпатии
10
Онлайн
5d 8ч 0м
#2
Причём тут админка php?
И помогите и скиньте разные вещи
Либо просто сказать что где как искать
Либо скинуть нечто готовое уже

Уж не сочтите за грубость, но стоит детальнее свои мысли выражать

P.S. Вот такой ответ мне на ум приходит к этому посту: Форума авторизации а админке сделана. Всё нормально.
 

Exynos

Сообщения
49
Симпатии
1
Онлайн
4ч 34м
#3
Причём тут админка php?
И помогите и скиньте разные вещи
Либо просто сказать что где как искать
Либо скинуть нечто готовое уже

Уж не сочтите за грубость, но стоит детальнее свои мысли выражать

P.S. Вот такой ответ мне на ум приходит к этому посту: Форума авторизации а админке сделана. Всё нормально.
мне нужна форма авторизации, посоветуйте где искать
 

khukazov

Сообщения
76
Симпатии
24
Онлайн
4d 6ч 55м
#4
мне нужна форма авторизации, посоветуйте где искать
Структура таблицы `users` в базе данных 'testtable'
PHP:
CREATE TABLE `users` (
    `user_id` int(11) unsigned NOT NULL auto_increment,
    `user_login` varchar(30) NOT NULL,
    `user_password` varchar(32) NOT NULL,
    `user_hash` varchar(32) NOT NULL default '',
    `user_ip` int(10) unsigned NOT NULL default '0',
    PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
register.php
PHP:
<?
// Страница регистрации нового пользователя

// Соединямся с БД
$link=mysqli_connect("localhost", "mysql_user", "mysql_password", "testtable");

if(isset($_POST['submit']))
{
    $err = [];

    // проверям логин
    if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))
    {
        $err[] = "Логин может состоять только из букв английского алфавита и цифр";
    }

    if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)
    {
        $err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
    }

    // проверяем, не сущестует ли пользователя с таким именем
    $query = mysqli_query($link, "SELECT user_id FROM users WHERE user_login='".mysqli_real_escape_string($link, $_POST['login'])."'");
    if(mysqli_num_rows($query) > 0)
    {
        $err[] = "Пользователь с таким логином уже существует в базе данных";
    }

    // Если нет ошибок, то добавляем в БД нового пользователя
    if(count($err) == 0)
    {

        $login = $_POST['login'];

        // Убераем лишние пробелы и делаем двойное хеширование
        $password = md5(md5(trim($_POST['password'])));

        mysqli_query($link,"INSERT INTO users SET user_login='".$login."', user_password='".$password."'");
        header("Location: login.php"); exit();
    }
    else
    {
        print "<b>При регистрации произошли следующие ошибки:</b><br>";
        foreach($err AS $error)
        {
            print $error."<br>";
        }
    }
}
?>

<form method="POST">
Логин <input name="login" type="text" required><br>
Пароль <input name="password" type="password" required><br>
<input name="submit" type="submit" value="Зарегистрироваться">
</form>
login.php
PHP:
<?
// Страница авторизации

// Функция для генерации случайной строки
function generateCode($length=6) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    $code = "";
    $clen = strlen($chars) - 1;
    while (strlen($code) < $length) {
            $code .= $chars[mt_rand(0,$clen)];
    }
    return $code;
}

// Соединямся с БД
$link=mysqli_connect("localhost", "mysql_user", "mysql_password", "testtable");

if(isset($_POST['submit']))
{
    // Вытаскиваем из БД запись, у которой логин равняеться введенному
    $query = mysqli_query($link,"SELECT user_id, user_password FROM users WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");
    $data = mysqli_fetch_assoc($query);

    // Сравниваем пароли
    if($data['user_password'] === md5(md5($_POST['password'])))
    {
        // Генерируем случайное число и шифруем его
        $hash = md5(generateCode(10));

        if(!empty($_POST['not_attach_ip']))
        {
            // Если пользователя выбрал привязку к IP
            // Переводим IP в строку
            $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
        }

        // Записываем в БД новый хеш авторизации и IP
        mysqli_query($link, "UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");

        // Ставим куки
        setcookie("id", $data['user_id'], time()+60*60*24*30);
        setcookie("hash", $hash, time()+60*60*24*30,null,null,null,true); // httponly !!!

        // Переадресовываем браузер на страницу проверки нашего скрипта
        header("Location: check.php"); exit();
    }
    else
    {
        print "Вы ввели неправильный логин/пароль";
    }
}
?>
<form method="POST">
Логин <input name="login" type="text" required><br>
Пароль <input name="password" type="password" required><br>
Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>
<input name="submit" type="submit" value="Войти">
</form>
check.php
PHP:
<?
// Скрипт проверки

// Соединямся с БД
$link=mysqli_connect("localhost", "mysql_user", "mysql_password", "testtable");

if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
{
    $query = mysqli_query($link, "SELECT *,INET_NTOA(user_ip) AS user_ip FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1");
    $userdata = mysqli_fetch_assoc($query);

    if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])
 or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR'])  and ($userdata['user_ip'] !== "0")))
    {
        setcookie("id", "", time() - 3600*24*30*12, "/");
        setcookie("hash", "", time() - 3600*24*30*12, "/");
        print "Хм, что-то не получилось";
    }
    else
    {
        print "Привет, ".$userdata['user_login'].". Всё работает!";
    }
}
else
{
    print "Включите куки";
}
?>
 
Последнее редактирование:

Exynos

Сообщения
49
Симпатии
1
Онлайн
4ч 34м
#5
Структура таблицы `users` в базе данных 'testtable'
PHP:
CREATE TABLE `users` (
    `user_id` int(11) unsigned NOT NULL auto_increment,
    `user_login` varchar(30) NOT NULL,
    `user_password` varchar(32) NOT NULL,
    `user_hash` varchar(32) NOT NULL default '',
    `user_ip` int(10) unsigned NOT NULL default '0',
    PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
register.php
PHP:
<?
// Страница регистрации нового пользователя

// Соединямся с БД
$link=mysqli_connect("localhost", "mysql_user", "mysql_password", "testtable");

if(isset($_POST['submit']))
{
    $err = [];

    // проверям логин
    if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login']))
    {
        $err[] = "Логин может состоять только из букв английского алфавита и цифр";
    }

    if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30)
    {
        $err[] = "Логин должен быть не меньше 3-х символов и не больше 30";
    }

    // проверяем, не сущестует ли пользователя с таким именем
    $query = mysqli_query($link, "SELECT user_id FROM users WHERE user_login='".mysqli_real_escape_string($link, $_POST['login'])."'");
    if(mysqli_num_rows($query) > 0)
    {
        $err[] = "Пользователь с таким логином уже существует в базе данных";
    }

    // Если нет ошибок, то добавляем в БД нового пользователя
    if(count($err) == 0)
    {

        $login = $_POST['login'];

        // Убераем лишние пробелы и делаем двойное хеширование
        $password = md5(md5(trim($_POST['password'])));

        mysqli_query($link,"INSERT INTO users SET user_login='".$login."', user_password='".$password."'");
        header("Location: login.php"); exit();
    }
    else
    {
        print "<b>При регистрации произошли следующие ошибки:</b><br>";
        foreach($err AS $error)
        {
            print $error."<br>";
        }
    }
}
?>

<form method="POST">
Логин <input name="login" type="text" required><br>
Пароль <input name="password" type="password" required><br>
<input name="submit" type="submit" value="Зарегистрироваться">
</form>
login.php
PHP:
<?
// Страница авторизации

// Функция для генерации случайной строки
function generateCode($length=6) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    $code = "";
    $clen = strlen($chars) - 1;
    while (strlen($code) < $length) {
            $code .= $chars[mt_rand(0,$clen)];
    }
    return $code;
}

// Соединямся с БД
$link=mysqli_connect("localhost", "mysql_user", "mysql_password", "testtable");

if(isset($_POST['submit']))
{
    // Вытаскиваем из БД запись, у которой логин равняеться введенному
    $query = mysqli_query($link,"SELECT user_id, user_password FROM users WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");
    $data = mysqli_fetch_assoc($query);

    // Сравниваем пароли
    if($data['user_password'] === md5(md5($_POST['password'])))
    {
        // Генерируем случайное число и шифруем его
        $hash = md5(generateCode(10));

        if(!empty($_POST['not_attach_ip']))
        {
            // Если пользователя выбрал привязку к IP
            // Переводим IP в строку
            $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
        }

        // Записываем в БД новый хеш авторизации и IP
        mysqli_query($link, "UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");

        // Ставим куки
        setcookie("id", $data['user_id'], time()+60*60*24*30);
        setcookie("hash", $hash, time()+60*60*24*30,null,null,null,true); // httponly !!!

        // Переадресовываем браузер на страницу проверки нашего скрипта
        header("Location: check.php"); exit();
    }
    else
    {
        print "Вы ввели неправильный логин/пароль";
    }
}
?>
<form method="POST">
Логин <input name="login" type="text" required><br>
Пароль <input name="password" type="password" required><br>
Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>
<input name="submit" type="submit" value="Войти">
</form>
от души, я все сделал, но возникает еще один вопрос

Слова логин,пароль,войти итд
имеют знаки вопросов
�� ����� ������������ �����

как вылечить?
 

khukazov

Сообщения
76
Симпатии
24
Онлайн
4d 6ч 55м
#6
от души, я все сделал, но возникает еще один вопрос

Слова логин,пароль,войти итд
имеют знаки вопросов
�� ����� ������������ �����

как вылечить?
Добавил check.php
А вообще куда Вам нужна форма авторизации :)
Скорее всего кодировка "cp1251" а у Вас "utf-8" по этому это "�� ����� ������������ �����"
 

Exynos

Сообщения
49
Симпатии
1
Онлайн
4ч 34м
#7
Добавил check.php
А вообще куда Вам нужна форма авторизации :)
Скорее всего кодировка "cp1251" а у Вас "utf-8" по этому это "�� ����� ������������ �����"
ладно, не суть.
вот смотрите, у меня есть 1.html после авторизации в login.php перебрасывает на 1.html
но дело в том что на 1.html можно попасть прямиком набрав в строке адреса минуя авторизацию, как сделать что бы без авторизации доступ к 1.html был закрыт?
 

khukazov

Сообщения
76
Симпатии
24
Онлайн
4d 6ч 55м
#8
ладно, не суть.
вот смотрите, у меня есть 1.html после авторизации в login.php перебрасывает на 1.html
но дело в том что на 1.html можно попасть прямиком набрав в строке адреса минуя авторизацию, как сделать что бы без авторизации доступ к 1.html был закрыт?
А у Вас в вашем скрипте (сайте) присутствуют файлы index.php (или у Вас он 1.html) и .htaccess :) Я уже давно не занимаюсь php (делал модули для FF) надоело, трудно сказать не понимая всей сути, может это надо Вам:
В index.php (или у Вас он 1.html) в самом начале файла:
PHP:
<?php
session_start(); //обязательно в самом начале файла
 
if($isset($_SESSION['login']) and isset($_SESSION['password']))
  {
?>
    //Тут то что нужно скрыть!
    <div id = "commentFormContent"></div>
    <script src = "/1.html?jquery&script" type = "text/javascript" charset = "utf-8"></script>
 
<?php } ?>
 

Exynos

Сообщения
49
Симпатии
1
Онлайн
4ч 34м
#9
А у Вас в вашем скрипте (сайте) присутствуют файлы index.php (или у Вас он 1.html) и .htaccess :) Я уже давно не занимаюсь php (делал модули для FF) надоело, трудно сказать не понимая всей сути, может это надо Вам:
В index.php (или у Вас он 1.html) в самом начале файла:
PHP:
<?php
session_start(); //обязательно в самом начале файла

if($isset($_SESSION['login']) and isset($_SESSION['password']))
  {
?>
    //Тут то что нужно скрыть!
    <div id = "commentFormContent"></div>
    <script src = "/1.html?jquery&script" type = "text/javascript" charset = "utf-8"></script>

<?php } ?>
мне нужно закрыть все файлы .php - .html паролем(полем аунтефикации)
 

khukazov

Сообщения
76
Симпатии
24
Онлайн
4d 6ч 55м
#10
Последнее редактирование: