У меня есть ПО для управления складом, написанное на 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;
}
Мой вопрос: что я делаю не так? У меня есть подозрение, что идентификатор пользователя хранится неправильно, но, как я уже сказал, я не эксперт в этой области.
Просто спросите, нужна ли вам дополнительная информация о коде, и я ценю любую помощь, которую могу получить- спасибо.