Я новичок в PHP и у меня проблемы с использованием сеанса. Я вызываю php-скрипт входа из javascript, используя AJAX. Там я хочу создать сеанс и установить значение.PHP: потеря сеанса, изменения идентификатора сеанса (с использованием Ajax)
<?php
ini_set('display_errors', 1);
session_start();
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
$_SESSION['username'] = "username";
?>
Я обрабатываю ответ в javascript и снова вызываю еще один php-скрипт с использованием AJAX. Другой файл выглядит так:
<?php
ini_set('display_errors', 1);
session_start();
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
$username = $_SESSION['username'];
?>
Но имя пользователя равно null. Если я запрошу идентификатор сеанса в обоих файлах, идентификатор сеанса изменился. В первом файле отправляется файл cookie ответов, содержащий PHPSESSID. Должен ли я использовать этот идентификатор в вызове AJAX, вызывающем второй скрипт?
Update: В соответствии с просьбой AJAX-код:
function callAjax(url, data, successCB, errorCB) {
$.ajax({
url: url,
type: 'post',
data: data,
success: successCB,
error: errorCB
});
}
Вызывается как:
callAjax(GET_TEMPLATES_PHP_URL, {}, onGetTemplateSuccess, onRessourceRetrievalError);
Я проверил ответы в подобных SO вопрос, но они не помогли.
Любые идеи? Заранее спасибо.
проверить настройки cookie сеанса. например если ваш сеанс был установлен для '/ foo' subdir, а ваш код ajax находится в'/bar', тогда файл cookie будет невидим. –
Покажите нам Ajax/JS. Я не вижу, как это закончится. Однако это '$ _SESSION ['username'] =" username ";' скорее всего будет '$ _SESSION ['username'] = $ username;' –
@JayBlanchard Не имеет значения. Сообщение об ошибках не считается выходом. * Mornin 'Ralph * –