Контекст: Я использую XAMPP (с версией PHP 7.0.29) и безголовый CMS Directus.
Чего я хочу добиться: Я хочу создать один логин на основе PHPSESSID. Как зарегистрированный пользователь, у вас есть возможность доступа к данным в базе данных.
Что происходит в данный момент: Я могу войти, а также считывать данные из базы данных. Но в моей папке / tmp xampp я вижу, что всякий раз, когда выполняется запрос к базе данных, добавляется новый файл PHPSESSID.
Ожидаемое поведение: При создании запроса к базе данных новый файл PHPSESSID создавать не следует.
Что я думаю: Поскольку я использую Directus, а PHP SDK находится в подпапке моих файлов PHP, я мог бы предположить, что местоположение PHP перепутано и устанавливает новую сессию. Или что Directus нуждается в новой СЕССИИ для запроса к базе данных. Я не уверен, так вот нить.
Вот самые важные выдержки из моих файлов. И имейте в виду, что мой Frontend находится в localhost / html, а SDK Directus находится в localhost / directus-build.
login.php (интерфейс)
<?php session_start(); ?>
[...Login From...]
<script>
$("#login").submit(function(e){
e.preventDefault();
var email = $('#email').val(),
password = $('#password').val();
$.ajax({
type: "POST",
url: "querys/login.php",
dataType: 'json',
cache: false,
data: {
email: email,
password: password
}
});
});
</script>
querys / login.php (логика)
<?php
session_start();
require '../vendor/autoload.php'; // Needed by Directus
$loginProcessor = \Directus\SDK\ClientFactory::create('TOKEN', [
'base_url' => 'http://localhost/directus-build/',
'version' => '1.1'
]);
// Check if email is in database
$userProcessor = $loginProcessor->getItems('users', [
'filters' => [
'email' => $_POST['email'] //i use POST here only for stackoverflow example
]
]);
Когда я удаляю $ userProcessor, PHP не создает новый файл PHPSESSID в / tmp.
Очевидно, что второй PHPSESSID поступает через запрос к базе данных от Directus.
Задача ещё не решена.
Других решений пока нет …