2015-02-09 2 views
3

Я новичок в 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 вопрос, но они не помогли.

Любые идеи? Заранее спасибо.

+1

проверить настройки cookie сеанса. например если ваш сеанс был установлен для '/ foo' subdir, а ваш код ajax находится в'/bar', тогда файл cookie будет невидим. –

+0

Покажите нам Ajax/JS. Я не вижу, как это закончится. Однако это '$ _SESSION ['username'] =" username ";' скорее всего будет '$ _SESSION ['username'] = $ username;' –

+0

@JayBlanchard Не имеет значения. Сообщение об ошибках не считается выходом. * Mornin 'Ralph * –

ответ

1

Благодаря пользователю n-dru я понял это. Я назвал сценарий «http://myside.com/script.php» с «http://www.myside.com/index.html». Поскольку «www» отсутствовал в вызове сценария, это был вызов другого происхождения. Итак, печенье потерялось. Я добавил www, удалил «Allow Orgin» -файв из php, и теперь он работает.

Спасибо всем!

Смежные вопросы