Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Базы данных (JDBC, JPA, Hibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2022, 17:17   #1
Реинкарнация
Новичок
Джуниор
 
Регистрация: 13.02.2022
Сообщений: 2
По умолчанию Java + php + MySQL авторизация для лаунчера

В чём суть вопроса: Я написал код в Java, который обращается к скрипту и отправляет ему данные, которые ввёл пользователь(логин и пароль). Скрипт должен брать данные из БД(MySQL) и сравнивать их с теми, что получил от пользователя и возвращать ответ(Bad Login - неправильные логин или пароль. WV - неверная версия лаунчера. При успешном логине - пароль, никнейм и сессию пользователя).

Всё запускается и кажется, что работает, ошибок нет, но при вводе правильного логина и пароля авторизация не проходит. Всё никак не могу понять почему, весь инет перешерстил.. Надеюсь поможете.


Скрипт php

Код:
include ('conn.php'); //Вызываем файл с коннектом
 
    $act = mysqli_real_escape_string($connect, $_POST['a']); // Честно скажу, я не знаю что это, в гайде сказали написать 
    $lgn = mysqli_real_escape_string($connect, trim(htmlspecialchars($_POST['user'])));
    $passw = mysqli_real_escape_string($connect, trim($_POST['password']));
 
    if((preg_match('/'.$version.'/i', $_SERVER['HTTP_USER_AGENT']))) { //Проверяяем версию 
        if (($act == 'index') && ($lgn !== null) && ($passw !== null)) { //Проверяем действие и введен ли логин с паролем
            $sql = "SELECT $db_upass FROM `db_table` WHERE $db_name='$lgn'"; 
            $result = mysqli_query($connect, $sql) or die ("AuthErr1"); //Выполняем действие, если не вышло выводим ошибку 
            $row = mysqli_fetch_array($result); // Создаём переменную с результатом
 
            $hash = $row[$db_password]; //Задаём переменную с паролем, который задаёт пользователь
            $session = rand(99999,9999999999); //Присваиваем сессии рандомное значение
            $temp = "UPDATE `$db_table` SET $db_sess='$session' WHERE $db_name = '$lgn'"; //Задаём команду для выполнения в БД
            $query = mysqli_query($connect, $temp) or die ("AuthErr2"); //Выполняем, при ошибке выводим ошибку
 
            if($passw == $hash) { //Сравниваем пароль, введённый пользователем и пароль с БД
                echo $hash.'<>'.$lgn.'<>'.$session; //Если они совпадают выводим пароль, логин, сессию, разделённые знаком "<>"
            } else {
                echo 'Bad Login'; // Если не совпадают - выводим Bad Login
            }
        }
    } else {  
        die('WV'); //Если неверная версия, выводим WV
    }
Функция коннекта к скрипту из Java

Код:
import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
 
public class util {
    public static String Connect(String sURL, String Params) {
        HttpsURLConnection connection = null;
        try {
                URL url = new URL(sURL);
                connection = (HttpsURLConnection) url.openConnection();
                // Задаём параметры подключения
                connection.setRequestMethod("POST");
                connection.setRequestProperty("User-Agent", "TypicalLauncher v0.1b");
                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                connection.setRequestProperty("Content-Length", Integer.toString(Params.getBytes().length));
                connection.setRequestProperty("Content-Language", "en-US");
 
                connection.setUseCaches(false);
                connection.setDoInput(true);
                connection.setDoOutput(true);
 
 
                connection.connect(); //Подключаемся
                try(DataOutputStream dos = new DataOutputStream(connection.getOutputStream())) {
                    dos.writeBytes(Params); //Отправляем данные файлу
                    dos.flush();
                }
 
                InputStream is = connection.getInputStream(); // Принимаем данные от файла
                StringBuilder resp;
                try(BufferedReader brd = new BufferedReader(new InputStreamReader(is))) {
                    resp = new StringBuilder();
                    String line;
                    while((line = brd.readLine()) != null) {
                        resp.append(line);
                        resp.append('\r');
                    }
                }
 
                String strn = resp.toString().trim();
                return strn;
 
 
            }catch (Exception ex){
            return null;
        } finally {
            if(connection != null) {
                connection.disconnect();
            }
        }
        }
    }
Функция, которую не знаю как правильно назвать.. Она отправляет логин+пароль в функцию подключения к скрипту, затем, исходя из ответа говорит, прошла ли авторизация

Код:
public static boolean Authorizze(final String user, final String pass){
        String temp1 = "a=auth" + "&user=" + user + "&password=" + pass;
        String AuthResult = util.Connect(URLEncoder.encode("https://murmuring-harbor-70003.herokuapp.com", StandardCharsets.UTF_8), URLEncoder.encode(temp1, StandardCharsets.UTF_8));//Задаём параметры
        if(AuthResult == null) {
            return false;
        }else {
        switch (AuthResult) {
            case "Bad Login":
                return false;
 
            case "WV":
                version = true;
                return false;
 
            default:
                try {
                    AuthData = AuthResult.split("<>");
                    return true;
 
                } catch (Exception ex) {
                    return false;
 
                }
        }
    }}
Реинкарнация вне форума Ответить с цитированием
Старый 22.12.2022, 13:34   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

по отдельности проверяй каждую часть
.. проверьте для начала php скрипт .. чето он дичайший....

особенно строка $sql = "SELECT $db_upass FROM `db_table` WHERE $db_name='$lgn'";
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Продам небольшой шаблон + авторизация php (mysql) AnonimKaKoUTO HTML и CSS 0 21.01.2020 19:24
Авторизация php+mysql kuba1981 PHP 9 02.09.2012 22:15
php mysql АИС для прдеприятия Tusha-kutusha Помощь студентам 2 15.04.2012 09:35
Скрипт в PHP для для доступа БД MySQL Loriens PHP 7 10.01.2011 19:08
Регистрация/авторизация пользователей при помощи PHP, без использования MySQL. Web-Gangsta PHP 30 03.05.2009 18:32