Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

UCP Arizona 2019, проблема с md5

Авг
47
2
Пользователь
Вкратце, мне нужно чтобы сайт принимал пароль который указывает человек при регистрации, вместо зашифрованного в бд, как это сделать?

PHP:
<?
    session_start();
    if($_POST['captcha'] == $_SESSION['rand_code'])
    {   
            $_SESSION['server'] = $_POST['server'];
            require_once('../core/connect.php');
            $password = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['password']))));
            // так не работает
            $password = md5($password);
            //
            $name = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['username']))));
            $key = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['code']))));
            
            $mysqli->set_charset("utf-8");
            $sql = "SELECT `Password`, `ID`, `Key` FROM `accounts` WHERE `NickName` = '{$name}'";
            $result = $mysqli->query($sql);
            //так тоже
            $password = md5($password);
            //
            if($result->num_rows == 1)
            {   
                $result->data_seek(0);
                $account = $result->fetch_assoc();
                $dbpassword = $account['Password'];
                $dbkey = $account['Key'];
                $id = $account['ID'];
                // и так тоже
                if(md5($password) == $dbpassword)
                //
                {           
                    if($dbkey > 0)
                    {
                        if($dbkey == $key)
                        {
                            $_SESSION['account_name'] = $name;
                            $_SESSION['account_id'] = $id;
                            $_SESSION['account_logged'] = 'try';
                            header("Location: /account");
                        }
                        else
                        {
                            $_SESSION['error'] = 3;               
                            header("Location: /login");
                        }
                    }
                    else
                    {
                        $_SESSION['account_name'] = $name;
                        $_SESSION['account_id'] = $id;
                        $_SESSION['account_logged'] = 'try';
                        header("Location: /account");
                    }
                    
                }
                else
                {
                    $_SESSION['error'] = 2;
                    header("Location: /login");
                }
            }
            else
            {
                $_SESSION['error'] = 1;
                   header("Location: /login");
            }
            $result->close();
            $mysqli->close();
    }
    else
    {
        $_SESSION['error'] = 4;
           header("Location: /login");
    }
?>

Сайт слитый, помогите кто нибудь пожалуйста
 
𝚖𝚘𝚛𝚜 𝚌𝚎𝚛𝚝𝚊, 𝚑𝚘𝚛𝚊 𝚒𝚗𝚌𝚎𝚛𝚝𝚊.
Янв
1,537
3,350
Команда форума
Администратор
код:
<?php
session_start();
if($_POST['captcha'] == $_SESSION['rand_code'])
{   
    $_SESSION['server'] = $_POST['server'];
    require_once('../core/connect.php');
    
    //очистка входных аднных
    $password = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['password']))));
    $name = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['username']))));
    $key = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['code']))));
    
    $mysqli->set_charset("utf-8");
    $sql = "SELECT `Password`, `ID`, `Key` FROM `accounts` WHERE `NickName` = '{$name}'";
    $result = $mysqli->query($sql);
    
    if($result->num_rows == 1)
    {   
        $result->data_seek(0);
        $account = $result->fetch_assoc();
        $dbpassword = $account['Password'];
        $dbkey = $account['Key'];
        $id = $account['ID'];
        
        if(md5($password) == $dbpassword)
        {           
            if($dbkey > 0)
            {
                if($dbkey == $key)
                {
                    $_SESSION['account_name'] = $name;
                    $_SESSION['account_id'] = $id;
                    $_SESSION['account_logged'] = 'try';
                    header("Location: /account");
                }
                else
                {
                    $_SESSION['error'] = 3;               
                    header("Location: /login");
                }
            }
            else
            {
                $_SESSION['account_name'] = $name;
                $_SESSION['account_id'] = $id;
                $_SESSION['account_logged'] = 'try';
                header("Location: /account");
            }
        }
        else
        {
            $_SESSION['error'] = 2;
            header("Location: /login");
        }
    }
    else
    {
        $_SESSION['error'] = 1;
        header("Location: /login");
    }
    $result->close();
    $mysqli->close();
}
else
{
    $_SESSION['error'] = 4;
    header("Location: /login");
}
?>

не понял, зачем автор сайта применял два раза хеш md5. Из-за этого наверное у вас все и ломалось
 
Авг
47
2
Пользователь
код:
<?php
session_start();
if($_POST['captcha'] == $_SESSION['rand_code'])
{  
    $_SESSION['server'] = $_POST['server'];
    require_once('../core/connect.php');
   
    //очистка входных аднных
    $password = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['password']))));
    $name = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['username']))));
    $key = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['code']))));
   
    $mysqli->set_charset("utf-8");
    $sql = "SELECT `Password`, `ID`, `Key` FROM `accounts` WHERE `NickName` = '{$name}'";
    $result = $mysqli->query($sql);
   
    if($result->num_rows == 1)
    {  
        $result->data_seek(0);
        $account = $result->fetch_assoc();
        $dbpassword = $account['Password'];
        $dbkey = $account['Key'];
        $id = $account['ID'];
       
        if(md5($password) == $dbpassword)
        {          
            if($dbkey > 0)
            {
                if($dbkey == $key)
                {
                    $_SESSION['account_name'] = $name;
                    $_SESSION['account_id'] = $id;
                    $_SESSION['account_logged'] = 'try';
                    header("Location: /account");
                }
                else
                {
                    $_SESSION['error'] = 3;              
                    header("Location: /login");
                }
            }
            else
            {
                $_SESSION['account_name'] = $name;
                $_SESSION['account_id'] = $id;
                $_SESSION['account_logged'] = 'try';
                header("Location: /account");
            }
        }
        else
        {
            $_SESSION['error'] = 2;
            header("Location: /login");
        }
    }
    else
    {
        $_SESSION['error'] = 1;
        header("Location: /login");
    }
    $result->close();
    $mysqli->close();
}
else
{
    $_SESSION['error'] = 4;
    header("Location: /login");
}
?>

не понял, зачем автор сайта применял два раза хеш md5. Из-за этого наверное у вас все и ломалось
это я написал какие варианты я пробовал чтобы заработало, но увы ни один из них не сработал. Этот кстати тоже
 
𝚖𝚘𝚛𝚜 𝚌𝚎𝚛𝚝𝚊, 𝚑𝚘𝚛𝚊 𝚒𝚗𝚌𝚎𝚛𝚝𝚊.
Янв
1,537
3,350
Команда форума
Администратор
Авг
47
2
Пользователь
покажите код регистрации
его нет, вот код странички входа в личный кабинет:
PHP:
<?php
session_start();
if($_POST['captcha'] == $_SESSION['rand_code'])
{  
    $_SESSION['server'] = $_POST['server'];
    require_once('../core/connect.php');
   
    $password = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['password']))));
    $name = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['username']))));
    $key = $mysqli->real_escape_string(stripslashes(htmlspecialchars(trim($_POST['code']))));
   
    $mysqli->set_charset("utf-8");
    $sql = "SELECT `Password`, `ID`, `Key` FROM `accounts` WHERE `NickName` = '{$name}'";
    $result = $mysqli->query($sql);
   
    if($result->num_rows == 1)
    {  
        $result->data_seek(0);
        $account = $result->fetch_assoc();
        $dbpassword = $account['Password'];
        $dbkey = $account['Key'];
        $id = $account['ID'];
       
        if($password == $dbpassword)
        {          
            if($dbkey > 0)
            {
                if($dbkey == $key)
                {
                    $_SESSION['account_name'] = $name;
                    $_SESSION['account_id'] = $id;
                    $_SESSION['account_logged'] = 'try';
                    header("Location: /account");
                }
                else
                {
                    $_SESSION['error'] = 3;              
                    header("Location: /login");
                }
            }
            else
            {
                $_SESSION['account_name'] = $name;
                $_SESSION['account_id'] = $id;
                $_SESSION['account_logged'] = 'try';
                header("Location: /account");
            }
        }
        else
        {
            $_SESSION['error'] = 2;
            header("Location: /login");
        }
    }
    else
    {
        $_SESSION['error'] = 1;
        header("Location: /login");
    }
    $result->close();
    $mysqli->close();
}
else
{
    $_SESSION['error'] = 4;
    header("Location: /login");
}
?>

Сайт берет логин и пароль с бд сервера, а после входа и информацию об аккаунте.
 
𝚖𝚘𝚛𝚜 𝚌𝚎𝚛𝚝𝚊, 𝚑𝚘𝚛𝚊 𝚒𝚗𝚌𝚎𝚛𝚝𝚊.
Янв
1,537
3,350
Команда форума
Администратор
код:
<?php
session_start();
if($_POST['captcha'] == $_SESSION['rand_code'])
{ 
    $_SESSION['server'] = $_POST['server'];
    require_once('../core/connect.php');
  
    $password = trim($_POST['password']);
    $name = $mysqli->real_escape_string(trim($_POST['username']));
    $key = $mysqli->real_escape_string(trim($_POST['code']));
  
    $mysqli->set_charset("utf-8");
    $sql = "SELECT `Password`, `ID`, `Key` FROM `accounts` WHERE `NickName` = '{$name}'";
    $result = $mysqli->query($sql);
  
    if($result->num_rows == 1)
    { 
        $result->data_seek(0);
        $account = $result->fetch_assoc();
        $dbpassword = $account['Password'];
        $dbkey = $account['Key'];
        $id = $account['ID'];
      
        if(strtoupper(md5($password)) == $dbpassword)
        {         
            if($dbkey > 0)
            {
                if($dbkey == $key)
                {
                    $_SESSION['account_name'] = $name;
                    $_SESSION['account_id'] = $id;
                    $_SESSION['account_logged'] = 'try';
                    header("Location: /account");
                    exit;
                }
                else
                {
                    $_SESSION['error'] = 3;             
                    header("Location: /login");
                    exit;
                }
            }
            else
            {
                $_SESSION['account_name'] = $name;
                $_SESSION['account_id'] = $id;
                $_SESSION['account_logged'] = 'try';
                header("Location: /account");
                exit;
            }
        }
        else
        {
            $_SESSION['error'] = 2;
            header("Location: /login");
            exit;
        }
    }
    else
    {
        $_SESSION['error'] = 1;
        header("Location: /login");
        exit;
    }
    $result->close();
    $mysqli->close();
}
else
{
    $_SESSION['error'] = 4;
    header("Location: /login");
    exit;
}
?>
попробуйте этот код, что-ли
 
Авг
47
2
Пользователь
код:
<?php
session_start();
if($_POST['captcha'] == $_SESSION['rand_code'])
{
    $_SESSION['server'] = $_POST['server'];
    require_once('../core/connect.php');
 
    $password = trim($_POST['password']);
    $name = $mysqli->real_escape_string(trim($_POST['username']));
    $key = $mysqli->real_escape_string(trim($_POST['code']));
 
    $mysqli->set_charset("utf-8");
    $sql = "SELECT `Password`, `ID`, `Key` FROM `accounts` WHERE `NickName` = '{$name}'";
    $result = $mysqli->query($sql);
 
    if($result->num_rows == 1)
    {
        $result->data_seek(0);
        $account = $result->fetch_assoc();
        $dbpassword = $account['Password'];
        $dbkey = $account['Key'];
        $id = $account['ID'];
     
        if(strtoupper(md5($password)) == $dbpassword)
        {        
            if($dbkey > 0)
            {
                if($dbkey == $key)
                {
                    $_SESSION['account_name'] = $name;
                    $_SESSION['account_id'] = $id;
                    $_SESSION['account_logged'] = 'try';
                    header("Location: /account");
                    exit;
                }
                else
                {
                    $_SESSION['error'] = 3;            
                    header("Location: /login");
                    exit;
                }
            }
            else
            {
                $_SESSION['account_name'] = $name;
                $_SESSION['account_id'] = $id;
                $_SESSION['account_logged'] = 'try';
                header("Location: /account");
                exit;
            }
        }
        else
        {
            $_SESSION['error'] = 2;
            header("Location: /login");
            exit;
        }
    }
    else
    {
        $_SESSION['error'] = 1;
        header("Location: /login");
        exit;
    }
    $result->close();
    $mysqli->close();
}
else
{
    $_SESSION['error'] = 4;
    header("Location: /login");
    exit;
}
?>
попробуйте этот код, что-ли
Спасибо большое, сработал
 
Сверху