多半是 session.auto_start = 1也不排除你的浏览器不支持 cookie

解决方案 »

  1.   

    session.auto_start = 0
    我的浏览器支持cookie
      

  2.   

    rss.php<?php
    session_start();
    $_SESSION["name"] = "lifffffff4";
    echo $_SESSION["name"];
    echo "<br>";
    echo session_id();
    ?>
    先访问上面的文件 然后访问下面的文件 两次的session_id 不一样
    index.php
    <?php 
    session_start();
    echo $_SESSION["name"];
    echo session_id();?>
      

  3.   

    rss.php加url跳转过去不要新开浏览器窗口
      

  4.   

    <?php
    session_start();
    $_SESSION["name"] = "lifffffff4";
    echo $_SESSION["name"];
    echo "<br>";
    echo session_id();
    echo "<a href=\"/test/index.php\">2222</a>"
    ?>
     一样的效果
      

  5.   

    在每段代码的后面加上
    print_r($_COOKIE);
      

  6.   

    在每段代码的后面加上
    print_r($_COOKIE); 
    我打印了都是空数组
      

  7.   

    <?php
    session_start();
    $_SESSION["name"] = "lifffffff4";
    echo $_SESSION["name"];
    echo "<br>";
    echo session_id();
    echo "<a href=\"/test/index.php\">2222</a>";
    print_r($_COOKIE);
    ?>
    <?php 
    session_start();
    echo $_SESSION["name"];
    echo session_id();
    print_r($_COOKIE);
    ?>
      

  8.   

    那就是 cookie 不支持了,无论如何 $_COOKIE['PHPSESSID'] 都应该有的你更改了 php.ini 中 session 相关的设置了吗?
      

  9.   

    我没有改 php.ini 现在要怎么办现在要怎么解决问题我也郁闷了 怎么没有 phpsession 这个cookie
      

  10.   

    我的浏览器是支持cookie的 这个不用怀疑
      

  11.   

    弱弱的问一下,session_id 对程序而言有什么特殊用途吗?通常是操作$_SESSION就可以了吧
      

  12.   

    你用 setcookie 设一个 cookie 变量再试试是否能读回来
      

  13.   


    echo     ini_get("session.use_cookies");//这个值多少
      

  14.   

    你用 setcookie 设一个 cookie 变量再试试是否能读回来
    这个可以 我试过了 没有问题
      

  15.   

    注意开启错误提示看有无错误信息
    error_reporting(E_ALL);
    ini_set('display_errors',true);然后session相关的php.ini配置信息贴出来,大家好帮你分析。
      

  16.   

    [Session]
    ; Handler used to store/retrieve data.
    ; http://php.net/session.save-handler
    session.save_handler = files; Argument passed to save_handler.  In the case of files, this is the path
    ; where data files are stored. Note: Windows users have to change this
    ; variable in order to use PHP's session functions.
    ;
    ; The path can be defined as:
    ;
    ;     session.save_path = "N;/path"
    ;
    ; where N is an integer.  Instead of storing all the session files in
    ; /path, what this will do is use subdirectories N-levels deep, and
    ; store the session data in those directories.  This is useful if you
    ; or your OS have problems with lots of files in one directory, and is
    ; a more efficient layout for servers that handle lots of sessions.
    ;
    ; NOTE 1: PHP will not create this directory structure automatically.
    ;         You can use the script in the ext/session dir for that purpose.
    ; NOTE 2: See the section on garbage collection below if you choose to
    ;         use subdirectories for session storage
    ;
    ; The file storage module creates files using mode 600 by default.
    ; You can change that by using
    ;
    ;     session.save_path = "N;MODE;/path"
    ;
    ; where MODE is the octal representation of the mode. Note that this
    ; does not overwrite the process's umask.
    ; http://php.net/session.save-path
    session.save_path = "d:/wamp/tmp"; Whether to use cookies.
    ; http://php.net/session.use-cookies
    session.use_cookies = 1; http://php.net/session.cookie-secure
    ;session.cookie_secure =; This option forces PHP to fetch and use a cookie for storing and maintaining
    ; the session id. We encourage this operation as it's very helpful in combatting
    ; session hijacking when not specifying and managing your own session id. It is
    ; not the end all be all of session hijacking defense, but it's a good start.
    ; http://php.net/session.use-only-cookies
    session.use_only_cookies = 1; Name of the session (used as cookie name).
    ; http://php.net/session.name
    session.name = PHPSESSID; Initialize session on request startup.
    ; http://php.net/session.auto-start
    session.auto_start = 0; Lifetime in seconds of cookie or, if 0, until browser is restarted.
    ; http://php.net/session.cookie-lifetime
    session.cookie_lifetime = 1000; The path for which the cookie is valid.
    ; http://php.net/session.cookie-path
    session.cookie_path = /; The domain for which the cookie is valid.
    ; http://php.net/session.cookie-domain
    session.cookie_domain =80tao.dev; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript.
    ; http://php.net/session.cookie-httponly
    session.cookie_httponly = ; Handler used to serialize data.  php is the standard serializer of PHP.
    ; http://php.net/session.serialize-handler
    session.serialize_handler = php; Defines the probability that the 'garbage collection' process is started
    ; on every session initialization. The probability is calculated by using
    ; gc_probability/gc_divisor. Where session.gc_probability is the numerator
    ; and gc_divisor is the denominator in the equation. Setting this value to 1
    ; when the session.gc_divisor value is 100 will give you approximately a 1% chance
    ; the gc will run on any give request.
    ; Default Value: 1
    ; Development Value: 1
    ; Production Value: 1
    ; http://php.net/session.gc-probability
    session.gc_probability = 1; Defines the probability that the 'garbage collection' process is started on every
    ; session initialization. The probability is calculated by using the following equation: 
    ; gc_probability/gc_divisor. Where session.gc_probability is the numerator and
    ; session.gc_divisor is the denominator in the equation. Setting this value to 1
    ; when the session.gc_divisor value is 100 will give you approximately a 1% chance
    ; the gc will run on any give request. Increasing this value to 1000 will give you
    ; a 0.1% chance the gc will run on any give request. For high volume production servers,
    ; this is a more efficient approach.
    ; Default Value: 100
    ; Development Value: 1000
    ; Production Value: 1000
    ; http://php.net/session.gc-divisor
    session.gc_divisor = 1000; After this number of seconds, stored data will be seen as 'garbage' and
    ; cleaned up by the garbage collection process.
    ; http://php.net/session.gc-maxlifetime
    session.gc_maxlifetime = 1440; NOTE: If you are using the subdirectory option for storing session files
    ;       (see session.save_path above), then garbage collection does *not*
    ;       happen automatically.  You will need to do your own garbage
    ;       collection through a shell script, cron entry, or some other method.
    ;       For example, the following script would is the equivalent of
    ;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
    ;          cd /path/to/sessions; find -cmin +24 | xargs rm; PHP 4.2 and less have an undocumented feature/bug that allows you to
    ; to initialize a session variable in the global scope, even when register_globals
    ; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
    ; You can disable the feature and the warning separately. At this time,
    ; the warning is only displayed, if bug_compat_42 is enabled. This feature
    ; introduces some serious security problems if not handled correctly. It's
    ; recommended that you do not use this feature on production servers. But you
    ; should enable this on development servers and enable the warning as well. If you
    ; do not enable the feature on development servers, you won't be warned when it's
    ; used and debugging errors caused by this can be difficult to track down.
    ; Default Value: On
    ; Development Value: On
    ; Production Value: Off
    ; http://php.net/session.bug-compat-42
    session.bug_compat_42 = On; This setting controls whether or not you are warned by PHP when initializing a
    ; session value into the global space. session.bug_compat_42 must be enabled before
    ; these warnings can be issued by PHP. See the directive above for more information.
    ; Default Value: On
    ; Development Value: On
    ; Production Value: Off
    ; http://php.net/session.bug-compat-warn
    session.bug_compat_warn = On; Check HTTP Referer to invalidate externally stored URLs containing ids.
    ; HTTP_REFERER has to contain this substring for the session to be
    ; considered as valid.
    ; http://php.net/session.referer-check
    session.referer_check =; How many bytes to read from the file.
    ; http://php.net/session.entropy-length
    session.entropy_length = 0; Specified here to create the session id.
    ; http://php.net/session.entropy-file
    ;session.entropy_file = /dev/urandom
    session.entropy_file =; http://php.net/session.entropy-length
    ;session.entropy_length = 16; Set to {nocache,private,public,} to determine HTTP caching aspects
    ; or leave this empty to avoid sending anti-caching headers.
    ; http://php.net/session.cache-limiter
    session.cache_limiter = nocache; Document expires after n minutes.
    ; http://php.net/session.cache-expire
    session.cache_expire = 180; trans sid support is disabled by default.
    ; Use of trans sid may risk your users security.
    ; Use this option with caution.
    ; - User may send URL contains active session ID
    ;   to other person via. email/irc/etc.
    ; - URL that contains active session ID may be stored
    ;   in publically accessible computer.
    ; - User may access your site with the same session ID
    ;   always using URL stored in browser's history or books.
    ; http://php.net/session.use-trans-sid
    session.use_trans_sid = 0; Select a hash function for use in generating session ids.
    ; Possible Values 
    ;   0  (MD5 128 bits)
    ;   1  (SHA-1 160 bits)
    ; http://php.net/session.hash-function
    session.hash_function = 0; Define how many bits are stored in each character when converting
    ; the binary hash data to something readable.
    ; Possible values:
    ;   4  (4 bits: 0-9, a-f)
    ;   5  (5 bits: 0-9, a-v)
    ;   6  (6 bits: 0-9, a-z, A-Z, "-", ",")
    ; Default Value: 4
    ; Development Value: 5
    ; Production Value: 5
    ; http://php.net/session.hash-bits-per-character
    session.hash_bits_per_character = 5; The URL rewriter will look for URLs in a defined set of HTML tags.
    ; form/fieldset are special; if you include them here, the rewriter will
    ; add a hidden <input> field with the info which is otherwise appended
    ; to URLs.  If you want XHTML conformity, remove the form entry.
    ; Note that all valid entries require a "=", even if no value follows.
    ; Default Value: "a=href,area=href,frame=src,form=,fieldset="
    ; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
    ; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
    ; http://php.net/url-rewriter.tags
    url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
      

  17.   

    session.cookie_domain =80tao.dev
    这个值去掉吧,,你确认需要?
      

  18.   

    session.cookie_domain =80tao.dev 
    把这个去掉就可以了
    但是为什么啊
      

  19.   

    那个是设置session对应的cookie在什么域有效的
    你是本地测试么?是http://localhost这么去访问你的项目的么?是的话就去掉,如果是正式站点,你改成
    #注意加的那个点,表明所有子域有效,包括www
    session.cookie_domain = .80tao.dev 
    试下。
      

  20.   

    这个很奇怪啊,我好像没见过.dev的正式域名,有吗?
      

  21.   

    session.cookie_domain =80tao.dev表示 session 只在 80tao.dev 域有效所以需要也在这个域中测试你的代码
      

  22.   

    怎么一说还真是,有点奇葩了,我也没见过dev的域名。
      

  23.   

    这个很奇怪啊,我好像没见过.dev的正式域名,有吗?
    是我本地的虚拟主机 配置的虚拟域名
      

  24.   

    知道这个是个老帖了,可是我最近也遇到这个问题了。也是session_id不段变化,无法做购物车。然后我人为地用session_id("某个值'),可是竟然session不会过期了,无论怎样关浏览器,上一个会话还是存在。希望有大神在这里给我解答一下。谢谢了
      

  25.   

    config.php 文件中 关于前缀的设置不能去修改,保持原来的空,$config['cookie_prefix']    = ""; 否则每次刷新网页就会产生新的session_id . 检查和域相关的设置,最好能保持默认,不去修改