背景:我使用 XAMPP(PHP 版本 7.0.29)和无头 CMS Directus。
我想要实现的目标:我想创建一个基于 PHPSESSID 的登录。作为登录用户,您可以访问数据库中的数据。
目前发生的情况:我可以登录并从数据库中读出数据。但是在我的 xampp 的 /tmp 文件夹中,我看到,每当执行数据库查询时,都会添加一个新的 PHPSESSID 文件。
预期行为:创建数据库查询时,不应创建新的 PHPSESSID 文件。
我的想法:由于我使用 Directus 并且 PHP SDK 位于我的 PHP 文件的子文件夹中,我可以想象 PHP 位置会混淆并设置一个新的会话。或者 Directus 需要一个新的 SESSION 来进行数据库查询。我不确定,所以这里是线程。
以下是我的文件中最重要的摘录。请记住,我的前端位于 localhost/html,directus SDK 位于 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 不会在 /tmp 中创建一个新的 PHPSESSID 文件。显然,第二个 PHPSESSID 来自 Directus 的数据库查询。