В настоящее время я пишу сайт, построенный на PHP, используя Parse.com для хранения данных сайта. Раньше я использовал parse в нескольких проектах, и некоторые функции подходят очень хорошо. Теперь я столкнулся с проблемой, когда вошедший в систему пользователь не может быть обнаружен должным образом.
<?php
use Parse\ParseClient;
use Parse\ParseObject;
use Parse\ParseQuery;
use Parse\ParseGeoPoint;
use Parse\ParseUser;ParseClient::initialize('Omitted', 'Omitted', 'Omitted');
(... truncated)
function get_user(){
//BROKEN.
//TODO: Fix
$currentUser = ParseUser::getCurrentUser();
if ($currentUser) {
return $currentUser->getObjectId();
} else {
return false;
}
}
(... truncated)
?>
Этот код только незначительно изменен по сравнению с примерами PHP, приведенными с помощью parse, но, похоже, возвращает false независимо от состояния «Вход в систему».
Начало сеанса вызывается, чтобы убедиться, что сеанс запущен, и вызов print_r($_SESSION)
выводит дамп, который включает соответствующий объект пользователя.
Я понимаю, что это, вероятно, что-то глупое, что я пропустил, но любые указатели в правильном направлении будут высоко оценены.
Для справки здесь — я использовал выделенный сервер Windows, который был настроен несколько нестандартным способом. С тех пор мы мигрировали с Windows-сервера, потому что Windows, а также множество не связанных проблем означали, что вместо этого было проще использовать CentOS.
Эта проблема была решена путем явного вызова метода установки хранения сессии — ParseClient::setStorage( new ParseSessionStorage() );
Это было неожиданно, так как $_SESSION
global действительно содержала соответствующую информацию — но parse не получит ее, пока не будет установлено хранилище сеанса.
Других решений пока нет …