0

this is my code. plain and simple.

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>

perfectly working code on localhost.

There are 2 facts that can help you guys to come up with where's the problem here.

1)If you check the source of the page second.html offline and online you can respectively see some_render_function('all the stuff from the json') and some_render_function(NULL)

2)If i check my shared server folder i can see a directory called php_session with apparently all the correct files in it (of all the sessions opened when i tested my project, with CORRECT data in it)

Any hints?

Francesco
  • 87
  • 1
  • 12
  • Check if you've got output buffering enabled on the server and if not enable it. - http://www.php.net/manual/en/outcontrol.configuration.php --- Also, enable the logging of errors on your server to the highest level and then track the error log. You might see warnings, probably those which are discussed in detail here: [Headers already sent by PHP](http://stackoverflow.com/q/8028957/367456). – hakre Apr 20 '12 at 08:14
  • @hakre Thank you, i still have to contact my server hosting service but i am confident the problem is output buffering indeed because i tried to deactivate it on my localhost and the function is not working... I assume i'll get the issue solved with this fix but i'll wait to see it with my own eyes :) – Francesco Apr 21 '12 at 15:15
  • @hakre turns out i had to place even before the doctype HTML declaration, now it works – Francesco Apr 21 '12 at 15:24

2 Answers2

1

Session_start should be before any output. So, move <?php to the start of file. Otherwise, behaviour depends on server configuration.

Pavel Strakhov
  • 39,123
  • 5
  • 88
  • 127
1

Hello session_start ( http://php.net/manual/en/function.session-start.php ) should always be the first parameter on your page ...

Example

First Page

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

</html>

Second Page

<?php session_start(); ?>
<html>
<head>
<title>Second</title>
</head>
<body>
    <?php
    var_dump($_SESSION["somearray"]);
    ?>
</body>
</html>
Baba
  • 94,024
  • 28
  • 166
  • 217
  • did the fix, works on local, but it still doesn't on remote server. – Francesco Apr 20 '12 at 08:45
  • i am truly sorry but i tought the doctype declaration could have been stated before the line of code but when i swapped those 2 lines it worked, now also on remote server :) – Francesco Apr 21 '12 at 15:22