• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Как сделать авторизацию на md5?

Статус
В этой теме нельзя размещать новые ответы.

trevison123

Умник
Код:
<?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;
    }

 // print_r();
 require("../config.php");
 //require("../mysql.php");
 //require("../recaptchalib.php");

 $db = new PDO('mysql:host=' . $config['mysql_host'] . ';dbname=' . $config['mysql_database'], $config['mysql_user'], $config['mysql_pass']);
 $text__ = "Вам необходимо авторизоваться!";

 if(isset($_POST['postlog_in']))
 {
    $login = $_POST['postnickname'];
    $password = $_POST['postpassword'];

    $query = sprintf('SELECT * FROM `%s` WHERE `%s` = :user_name', $config['table_account'], $config['field_name']);
    $stmt = $db->prepare($query);
    $stmt->execute(array('user_name' => $login));
    $data = $stmt->fetchAll();
    if(isset($data[0][$config['field_name']]))
    {
        if($password == $data[0][$config['field_password']])
        {
            $hash = md5(generateCode(10));
            $ipc = $_SERVER['REMOTE_ADDR'];

            $sql = "INSERT INTO session (`id`, `nick`, `hash`, `ip`) VALUES ('', :login, :hash, :ip)";
            $stmt = $db->prepare($sql);
            $stmt->bindParam(':login', $login, PDO::PARAM_STR);       
            $stmt->bindParam(':hash', $hash, PDO::PARAM_STR);
            $stmt->bindParam(':ip', $ipc, PDO::PARAM_STR);
            $stmt->execute();

            setcookie("nick", $login, time()+60*60*24*30);
            setcookie("hash", $hash, time()+60*60*24*30,null,null,null,true); // httponly !!!

            $text__ = "Вы успешно авторизовались. Перенаправление..";

            header("Refresh:2");
        } else $text__ = "Неверный пароль!";
    } else $text__ = "Аккаунт с таким именем не обнаружен";
 }

 if(isset($_COOKIE['nick']) && isset($_COOKIE['hash']) && !isset($_POST['postlog_in']))
 {
     $login = $_COOKIE['nick'];
     $hash = $_COOKIE['hash'];
     $stmt = $db->prepare('SELECT * FROM `session` WHERE `nick` = :user_name AND `hash` = :hash');
     $stmt->execute(array('user_name' => $login, 'hash' => $hash));
     $data = $stmt->fetchAll();
     if(isset($data[0]['id']))
     {
        if(isset($_GET['logout']))
        {
            $sql = "DELETE FROM session WHERE nick=':login'";
            $stmt = $db->prepare($sql);
            $stmt->bindParam(':login', $login, PDO::PARAM_INT);   
            $stmt->execute();
            setcookie("nick", "", time() - 3600);
            setcookie("hash", "", time() - 3600);
            header("Refresh:1");
        } else {
            $query = sprintf('SELECT * FROM `%s` WHERE `%s` = :user_name', $config['table_account'], $config['field_name']);
            $stmt = $db->prepare($query);
            $stmt->execute(array('user_name' => $login));
            $data = $stmt->fetchAll();

            $number_acc = $data[0][$config['field_ID']];
            $level = $data[0][$config['field_level']];
            $exp = $data[0][$config['field_exp']];
            $money = $data[0][$config['field_money']];
            $bank = $data[0][$config['field_bank']];
            if($data[0][$config['field_gender']]) $gender = "Мужской";
            else $gender = "Женский";
            if($data[0][$config['field_house']] == -1) $house = "Нет";
            else $house = $data[0][$config['field_house']];
            if($data[0][$config['field_business']] == -1) $business = "Нет";
            else $business = $data[0][$config['field_business']];
            
            if($data[0][$config['field_hotel']] == -1) $hotel = "Нет";
            else $hotel = $data[0][$config['field_hotel']];

            if($data[0][$config['field_online']] == 0)
            {
                $online = "Не в сети";
                $online_color = "e03c3c";
            }
            else
            {
                $online = "В сети";
                $online_color = "5dbb3f";
            }
            
            $warns = $data[0][$config['field_warns']];
            $donate = $data[0][$config['field_donate']];
            $skin = $data[0][$config['field_skin']];
            $nick = $data[0][$config['field_name']];

             $template =
         str_replace(array(
                '{%forum%}',
                '{%nameproject%}',
                '{%isclass%}'
            ),
            array(
                $config['forum'],
                $config['_name_project_'],
                ''
            ),
            file_get_contents('../../templates/header.tpl')) .
            str_replace(array(
                '{%login%}',
                '{%numberacc%}',
                '{%level%}',
                '{%exp%}',
                '{%money%}',
                '{%bank%}',
                '{%gender%}',
                '{%house%}',
                '{%business%}',
                '{%hotel%}',
                '{%warns%}',
                '{%donate%}',
                '{%skin%}',
                '{%nick%}',
                '{%online%}',
                '{%online_color%}'
            ),
            array(
                $login,
                $number_acc,
                $level,
                $exp,
                $money,
                $bank,
                $gender,
                $house,
                $business,
                $hotel,
                $warns,
                $donate,
                $skin,
                $nick,
                $online,
                $online_color
            ),
            file_get_contents('../../templates/cabinet.tpl')) .
            str_replace(array(
                '{%forum%}',
                '{%group%}',
                '{%nameproject%}',
                '{%ip%}',
                '{%port%}',
                '{%youtube%}'
            ),
            array(
                $config['forum'],
                $config['vk'],
                $config['_name_project_'],
                $config['_ip_'],
                $config['_port_'],
                $config['youtube']
            ),
            file_get_contents('../../templates/footer.tpl'));
         }
     } else {
         setcookie("nick", "", time() - 3600);
         setcookie("hash", "", time() - 3600);
         header("Refresh:1");
     }
} else {
    $template =
     str_replace(array(
            '{%forum%}',
            '{%nameproject%}',
            '{%isclass%}'
        ),
        array(
            $config['forum'],
            $config['_name_project_'],
            ''
        ),
        file_get_contents('../../templates/header.tpl')) .
        str_replace(array('{%t%}'), array($text__),
        file_get_contents('../../templates/login.tpl')) .
        str_replace(array(
            '{%forum%}',
            '{%group%}',
            '{%nameproject%}',
            '{%ip%}',
            '{%port%}',
            '{%youtube%}'
        ),
        array(
            $config['forum'],
            $config['vk'],
            $config['_name_project_'],
            $config['_ip_'],
            $config['_port_'],
            $config['youtube']
        ),
        file_get_contents('../../templates/footer.tpl'));
    }
    /* Выходим, показав сам шаблон */
    exit($template);
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу