<? if(!isset($_SESSION['login_id'])){session_start();} ?>
写在A.PHP的最顶端,
第一次运行A.PHP时正常,
但刷新一次的话,页面没有反应,
把上面的代码注释掉的话,
刷新多少次也都正常,
请问上面的代码错了吗?
如果要改进的话,需要如何改进?谢谢,请详细一些。

解决方案 »

  1.   

    搞清楚session读值流程,必须先session_start(),根据用户提交过来的session id(http请求头里的cookie项),php才能根据这个session id去取相应的session值,所以$_SESSION['login_id']取值必须在session_start()后才有效。
      

  2.   


    if( ! session_start()){
    session_start();
    }
      

  3.   


    <?
    session_start();
    ?>在A.PHP页面的最顶上这么写后,
    第一次打开页面,正常显示A.PHP页面的内容,
    但是刷新页面的话,页面一片空白,然后IE最下面的滚动条一直在动。
      

  4.   

    请问,怎么判断SESSION是否开启?
      

  5.   

    if(!isset($_SESSION)){
        session_start();
      

  6.   


    怎么还这么写。session_start()后,$_SESSION才有效。lz难道整个页面就只有
    <?php
    session_start();
    ?>
    也会出错么?我怀疑是不是你下面对session值的运算有问题。重点排查for,foreach,while语句。
      

  7.   

    ok,你的也没错,我想澄清一点东西而已。
    假如不熟悉别人的代码,可以这么做。session_start();//假设这个session_start()藏在找不到的角落,然后用文件引入,可以考虑下面的代码。if(!isset($_SESSION))
    {
    session_start();
    }
      

  8.   

    有新情况:Fatal error: Maximum execution time of 30 seconds exceeded in D:\php\music\index.php on line 2为什么第一行是SESSION的问题,
    但错误指定在第2行呢?
    而且第一行注释掉就没有这个错误了。
      

  9.   

    有新情况:Fatal error: Maximum execution time of 30 seconds exceeded in D:\php\music\index.php on line 2为什么第一行是SESSION的问题,
    但错误指定在第2行呢?
    而且第一行注释掉就没有这个错误了。
      

  10.   

    是linux环境吗?多google一下吧。
    http://bugs.php.net/34417
      

  11.   

    我的服务器是
    WIN2003 SERVER.
      

  12.   

    这样的情况可能是你的配置环境问题,按理是你应该先去启动session
      

  13.   

    $_SESSION 在任何场合都存在
    如要 $_SESSION 反映 session 的内容,必须先执行 session_start();
      

  14.   

    session_start()要放在第一位置来启动session.
      

  15.   

    isset($_SESSION)
    如果在session_start()之前,而且之前也没调用session_start()的话,那肯定是返回false的嘛?
    那样的话
    if(!isset($_SESSION)) session_start();
    应该是可以的啊
      

  16.   

    说明下以防误解。
    session_start()
    5.3版本以前
    This function always returns TRUE. 
    5.3版本
    This function returns TRUE if a session was successfully started, otherwise FALSE