Сессия и JQuery - PullRequest
       2

Сессия и JQuery

1 голос
/ 16 февраля 2012

У меня есть сайт, который я создаю, состоящий из основного интерфейса на domain.com (он еще не работает - так что, надеюсь, подробности не нужны). На сайте client.domain.com есть клиентский биллинговый сайт

Биллинговая система закодирована - у меня очень мало контроля над ней, но хороший API.

Я пытаюсь получить некоторую информацию из этой клиентской области через jQuery для отображения на внешнем интерфейсе. Удивительно, но это сработало всего два дня назад и прекратилось.

Jquery, который я использую, чтобы получить то, что мне нужно, прост:

     $(document).ready(function(){
        $.get("client/logincheck.php", function(data){
           $('#dynamicsidebar').append(data);
        });
     });

Теперь - страница, которую я вызываю (logincheck.php), находится в клиентской области сайта. С точки зрения структуры каталогов, он находится под webroot внешнего интерфейса - в каталоге client /, поэтому я могу назвать его с относительным путем.

В настоящее время для целей отладки я просто включаю необходимые файлы с информацией для выставления счетов (в которую я успешно вошел). Затем я печатаю вывод массива $ _SESSION, который заполняется биллинговой системой (кодированный код), и затем выхожу:

Код для клиента / logincheck.php

    require("dbconnect.php");
    require("includes/functions.php");
    require("includes/clientareafunctions.php");

    print_r($_SESSION);
    die();

Если я открою этот URL-адрес непосредственно в браузере (client.domain.com/logincheck.php) - я получу следующий вывод:

    Array ( [calinkupdatecc] => 0 [calinkupdatesq] => 0 [uid] => 1 [upw] => a49de38fe12d325feb11bc9be1762482 [cainvorderby] => status [cainvsort] => DESC [cadomorderby] => domain [cadomsort] => ASC [caemailsorderby] => date [caemailssort] => DESC [caprodorderby] => product [caprodsort] => ASC ) 

Это то, что я ожидал.

Однако из внешнего интерфейса - к div добавлен только пустой массив:

    Array()

Если jQuery работал, это должно быть (на данный момент, во всяком случае) - этот массив SESSION, не так ли?

В случае, если это уместно - в моем файле php.ini есть параметр session.cookie_domain - .domain.com.

Спасибо за любую помощь.

** РЕДАКТИРОВАТЬ **

Я заменил код в client / logincheck.php на:

    if ($_SESSION['uid']) {
        echo "Logged In";
    } else {
       echo "Not logged in";

   }
   die();

И теперь странная вещь - я перехожу на страницу напрямую и получаю вывод «Logged In» на экран. От внешнего интерфейса я получаю эхо-сообщение «Not Logged in».

Итак, как прямое посещение URL может показать действительный сеанс, но при использовании GET для извлечения страницы показать что-то еще?

1 Ответ

1 голос
/ 16 февраля 2012

Я не знаю «правильного» ответа, скажем так, но я бы начал с этого:

  1. Откройте браузер WebKit (Chrome, Safari и т. Д.)
  2. Откройте инструменты разработчика, чтобы вы могли перехватить AJAX-запрос (на вкладке «Сеть»)
  3. Посмотрите на «Заголовки запросов»
  4. Посмотрите на «Ответ "

Я предлагаю посмотреть на заголовки запроса, потому что метод $.get пытается интеллектуально угадать, какой тип данных возвращается, если вы не заполните этот параметр [1].Я не уверен на 100%, что это может иметь какое-либо отношение к этому, но, может быть, что-то необычное происходит за кулисами, если он думает, что возвращает другой тип данных.

Я также предложил посмотреть на фактическийзаголовки ответа, чтобы вы могли видеть, что на самом деле возвращается .Я делал что-то похожее на своем бэкэнде и возвращал массив объектов, поэтому, когда я добавил ответ, он вывел Array.

Как я уже сказал, это всего лишь отправная точка, яМне нужно увидеть код, чтобы лучше вам помочь.

[1] jQuery $ .get документация: http://api.jquery.com/jQuery.get/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...