2012-04-20 2 views
0

это мой код. легко и просто.Данные сеанса работают локально, но не на удаленном сервере

1) first.html

<body> 
    <?php 
    session_start(); 
    ... 
    $somearray = $Object->method($somevar); 
    $_SESSION["somearray"] = $somearray; 
    ... 
    ?> 
</body> 

1) second.html

<body> 
    <div id="map_canvas"> 
     <script language="javascript" type="text/javascript"> 
     <?php session_start(); ?> 
     some_render_function(<?php echo json_encode($_SESSION["somearray"]); ?>); 
     </script> 
    </div>  
</body> 

отлично работающий код на локальном хосте.

Есть 2 факта, которые могут помочь вам решить проблему с здесь, где проблема.

1) Если вы поищите источник страницы second.html в автономном режиме и в режиме онлайн Вы можете соответственно увидеть some_render_function('all the stuff from the json') и some_render_function(NULL)

2) Если я проверить свою общую папку сервера я могу увидеть каталог под названием php_session с видимыми в нем всеми правильными файлами (из всех сеансов, открытых при проверке моего проекта, с данными CORRECT в нем)

Любые подсказки?

+0

сверьтесь У вас есть выходная буферизация, включенная на сервере, и если не enab le it. - http://www.php.net/manual/en/outcontrol.configuration.php --- Также включите ведение журнала ошибок на вашем сервере до самого высокого уровня и затем отследите журнал ошибок. Вы можете увидеть предупреждения, возможно, те, которые подробно обсуждаются здесь: [Заголовки уже отправлены PHP] (http://stackoverflow.com/q/8028957/367456). – hakre

+0

@hakre Спасибо, мне все еще нужно связаться с моим сервером, но я уверен, что проблема связана с буфером вывода, потому что я пытался отключить его на моем локальном хосте, и функция не работает ... Я предполагаю, что я получу проблема решена с этим исправлением, но я буду ждать, чтобы увидеть это своими глазами :) – Francesco

+0

@hakre получается, мне пришлось разместить еще до декларации HTML-документа doctype, теперь он работает – Francesco

ответ

1

Здравствуйте session_start (http://php.net/manual/en/function.session-start.php) всегда должен быть первым параметром на странице ...

Пример

Первая страница

<?php session_start();?> 
<html> 
<head> 
<title>First</title> 
</head> 
<body> 
    <?php 
    $somearray = $Object->method($somevar); 
    $_SESSION["somearray"] = $somearray; 
    ?> 
</body> 

</html> 

Вторая страница

<?php session_start(); ?> 
<html> 
<head> 
<title>Second</title> 
</head> 
<body> 
    <?php 
    var_dump($_SESSION["somearray"]); 
    ?> 
</body> 
</html> 
+0

сделал исправление, работает на локальном, но он по-прежнему не на удаленном сервере. – Francesco

+0

Мне очень жаль, но я сказал, что объявление doctype могло быть указано перед строка кода, но когда я поменял эти 2 строки, это сработало, теперь и на удаленном сервере :) – Francesco

1

Session_start должен быть перед любым выходом. Итак, переместите <?php в начало файла. В противном случае поведение зависит от конфигурации сервера.

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