Как перенести сеанс php с одной страницы на другую через Javascript? - PullRequest
0 голосов
/ 23 октября 2011

У меня есть форма (form.php), которая использует следующий код JS в заголовке:

<script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){

$.post('test.php', function(data) {
        $('#test').html(data);
    });
    });
});
</script>

A есть ссылка в form.php, которая после нажатия на кнопку должна появиться в раскрывающемся списке (без обновления страницы), например. "Дисплей выпадающий". Код в выпадающем списке управляется в test.php.

Test.php извлекает данные из другого сервиса. Чтобы получить эти данные, я использую данные, которые хранятся в сеансе, например, $ _SESSION [ 'data_that_is_sent_to_another_service'].

Я запускаю сеанс в form.php, но для того, чтобы test.php получил информацию от другого сервиса, мне нужно запустить сеанс в начале test.php.

Код работает, но я получаю предупреждение:

Warning: session_start() [function.session-start]:
Cannot send session cache limiter - headers already sent
(output started at /..my directory.../test.php:1) in /...my directory.../hrdeals.php on line 4

Как я могу заставить это предупреждение не появляться (без отключения предупреждений в PHP)?

Любая помощь высоко ценится.

Грегор

PS - JS может быть неправильным, но это больше проблема SESSION, которую я могу решить

Ответы [ 2 ]

3 голосов
/ 23 октября 2011

session_start () необходимо вызвать перед выводом чего-либо в браузер.Проверьте test.php и убедитесь, что нет выходных данных.

0 голосов
/ 23 октября 2011
  1. Сессии Javascript и PHP не имеют ничего общего друг с другом. Javascript живет в своем маленьком пузыре (рендеринг / обработка на стороне клиента). PHP живет в своем пузыре (обработка / вывод на стороне сервера).

  2. Вы получаете (кратко) ошибку - заголовки уже отправлены.

Это относится к заголовкам http (не к тегу head, где у вас может быть какой-то javascript). Вы можете увидеть весь список здесь: http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

Эта ошибка возникает, когда вы начинаете обрабатывать содержимое веб-страницы перед выводом заголовка. Все заголовки должны быть заполнены в первую очередь.

Убедитесь, что все эхо и распечатки с php происходят после session_start (). Одним из хитрых мест, в котором закрадывается печать, это когда вы заканчиваете php-теги и получаете что-нибудь там - даже когда это в конце страницы. Вам не нужно заканчивать php-теги в конце ваших страниц, и даже пробел, следующий за одним, вызовет такого рода проблемы. Самое безопасное - просто удалить все конечные теги php внизу ваших файлов php.

Другая хитрость заключается в том, что ошибки такого рода также вызваны тем, что ваш редактор кода выводит «Порядок следования байтов». Вы можете попробовать открыть, исправить и сохранить страницу в простом текстовом редакторе и посмотреть, решит ли это проблему.

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