Как обрабатывать php сессию с Java (приложение, а не JavaScript) - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть ПО для управления складом, написанное на Java, где пользователь может хранить транзакции хранилища в MySql Db с php-файлами на сервере. По соображениям безопасности я работаю с сессиями.

Когда я выполняю файлы php в браузере, все работает нормально. Но когда я запускаю свое Java-приложение, мой сеанс всегда «умирает». Я уже пытался зачитать меня в теме сессии, но я застрял в этой точке. Я следил за php файлами из здесь (это на немецком языке, но я думаю, что довольно ясно, что происходит).

Вот мои слегка переработанные php-скрипты: verify.php:

<?php
session_start();
if(!isset($_SESSION['userid'])) {
    die("session died");
}

$userid = $_SESSION['userid'];
echo $userid;
?>

login.php:

<?php
session_start();
include 'connect.php';

if(isset($_GET['email'],$_GET['password'])) {
    $email = $_GET['email'];
    $password = $_GET['password'];

    $statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
    $result = $statement->execute(array('email' => $email));
    $user = $statement->fetch();

    //Überprüfung des Passworts
    if ($user !== false && password_verify($password, $user['password'])) {
        $_SESSION['userid'] = $user['userid'];
        echo "true";
    } else {
        echo "could not login";
    }
}
?>

load_products.php:

<?php
include 'connect.php';
include 'verification.php';

if($userid !== null) {

    $statement = $pdo->prepare("SELECT p.barcode, p.name FROM products p INNER JOIN users_products USING (barcode)
        WHERE userid = :userid");
    $result = $statement->execute(array('userid' => $userid));
    $results = $statement->fetchAll(PDO::FETCH_ASSOC);
    $json = json_encode($results);

    echo $json;

}else{
    echo "could not load products";
}
?>

Когда я хочу выполнить «load_products», я получаю эхо «сеанс умер» (из проверки.php)

Это мой код Java:

public static Boolean login(String email, String password) {
        URL url;
        URLConnection connection;
        try {
            url = new URL("http://www.leet-programming.com/login.php?email=" + email + "&password=" + password);
            connection = url.openConnection();
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            while ((inputLine = reader.readLine()) != null) {
                if(inputLine.equals("true")) {
                    return true;
                }else {
                    return false;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        return false;
    }

loadProducts ():

public static ArrayList<Product> loadProducts() {
        URL url;
        URLConnection connection;
        ArrayList<Product> products = new ArrayList<>();
        try {
            url = new URL("http://www.leet-programming.com/load_products.php");
            connection = url.openConnection();
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            while ((inputLine = reader.readLine()) != null) {
                    try {
                        JSONObject json;
                        json = new JSONObject(inputLine);
                        Product product = new Product(json.getString("barcode"),json.getString("name"));
                        products.add(product);
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return products;
    }

Мой вопрос: что я делаю не так? У меня есть подозрение, что идентификатор пользователя хранится неправильно, но, как я уже сказал, я не эксперт в этой области.

Просто спросите, нужна ли вам дополнительная информация о коде, и я ценю любую помощь, которую могу получить- спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...