php.ini
session.use_cookies = 1
改成0
其实就把session id 用url来传递form iframe等标签php也会给改写增加了session id的值

解决方案 »

  1.   

    看不明白,<input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo str_replace(session_name() . '=', '',strip_tags(SID));?>">
    //上面这句是想通过URL的方式来传递SESSION ID的,但我是用POST方式登录,所以这样使用。这一句的作用是什么啊?看不明白
      

  2.   

    <input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo str_replace(session_name() . '=', '',strip_tags(SID));?>">改成
    <input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo $_GET[session_name()];?>">
      

  3.   

    <a href="demo.php?<?php echo strip_tags(SID); ?>">click here</a>
    是正常可以用的,
    所以我在FORM中也这样传递参数过去,只不过是以POST的方式。
    <input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo str_replace(session_name() . '=', '',strip_tags(SID));?>">它最后的实际应该是:
    <input type="hidden" name="PHPSESSID" value="一串SESSION ID数字">
    应该是和上面的形式一样的,但不知道为什么没效果。
      

  4.   

    Meteorlet(www.dictworld.com) ( ) 信誉:99 改成那样也不行啊,得到的是一个空值,会提示错误
    Warning: Unknown(): The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in Unknown on line 0
      

  5.   

    经过测试发现其实那样是可以设置SESSION的值的,只是跳转到其它的页面的时候又丢失了,所以在COOKIE禁用的情况下,每个页面的跳转都需要带上SESSION ID,更改原来的:
    } else {
          $_SESSION['admin'] = 1;
          header('location:index.php');
        }

    } else {
          $_SESSION['admin'] = 1;
          header('location:index.php?' . SID);
        }
    后,正常。多谢大家的帮助,晚上结贴,快进来接分吧。
      

  6.   

    1、
    禁用客户端的COOKIE

    客户端禁用COOKIE
    是两回事情
    前者只能人为的通过url参数或表单传递sessionid
    后者php回自动处理2、在你的程序里使用了常量SID
    但是你应该注意到SID只在session第一次生效时才有值
    <?php
    session_start();
    echo SID; 
    echo '<br>'.session_id();
    ?>
    输出
    PHPSESSID=31a67cb7b2b564cea2e1d7dc34217653
    31a67cb7b2b564cea2e1d7dc34217653
    刷新一下,输出31a67cb7b2b564cea2e1d7dc34217653*** SID的值没有了!所以
    <input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo str_replace(session_name() . '=', '',strip_tags(SID));?>">
    应改为
    <input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo session_id();?>">
      

  7.   

    关于这个问题。有很多解决方案。
    我觉得最佳的,应该是 ini =0 让 PHP 去改写 sessionid 的值。
    当然,你也可以手工在 每个URL后加上 session id 
    事实证明,有时候客户端没有禁用COOKIE,也会存在 session_id 丢失的现象。所以,一般在  session_start() 后。最好来一个 setcookie 比较好。至于说用 <INPUT hidden 为什么不行。那应该是 ini 里没有打开全局变量的原因。先前,全局变量是打开的。这样。你设置一个 POST 变量,在下一页面 可能 PHPSESSID 有值。所以,能成功。