Session重定向的时候失效了……php大神在哪里 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chenyg32
V2EX    PHP

Session重定向的时候失效了……php大神在哪里

  •  
  •   chenyg32 2013-12-05 02:22:03 +08:00 8056 次点击
    这是一个创建于 4386 天前的主题,其中的信息可能已经有所发展或是发生改变。
    3个页面reg.php, login.php, main.php。(分别代表注册,登录和首页)
    现在我在reg.php用curl的方式post给login.php值,然后login.php将其保存为session,之后reg.php重定向到main.php。此时main.php的session是空的。

    我试了下,在Login.php输出session,是正确的,也就是说reg.php的curl方式的post成功了,login.php也保存session了。但是跳转到main.php所有session就没了。

    还有一点,如果是从Index.html输入用户名密,post给login.php,login.php判断后重定向到main.php,注意,这里的session是却成功的。

    网上说是utf-8带Bom编码的原因,我也确实是用utf-8带bom编码,但改成无bom也是同样的问题,而且如果直接从Index.html登录的话session也不会消失呀,所以我不明白,为什么跳转着跳转着session就没了~
    15 条回复    1970-01-01 08:00:00 +08:00
    chenyg32
        1
    chenyg32  
    OP
       2013-12-05 02:34:00 +08:00
    我好像有点想法了。是不是curl()打开的网页是新开的,与我当前的无关,所以即使保存了session也是徒劳的。根本不是同一个范围内的。
    chenyg32
        2
    chenyg32  
    OP
       2013-12-05 02:37:14 +08:00
    话又说回来了,既然不能用curl,那php之间应该怎么传值?
    11
        3
    11  
       2013-12-05 02:47:02 +08:00   1
    为什么要用curl?直接用 $_POST[] 获取呀。
    raincious
        4
    raincious  
       2013-12-05 08:59:38 +08:00   1
    楼主,为什么要这么纠结呢。

    你的reg.php将数据POST给login.php,login.php(注意是login.php)会根据自己的环境计算COOKIE的KEY,这里的环境也仅包含请求方reg.php的HTTP HEADER。

    这样的话,main.php和reg.php肯定是读不到这个KEY邦定SESSION的。
    kuye
        5
    kuye  
       2013-12-05 09:18:21 +08:00   1
    session的获取是基于cookie 的,curl的时候带上之前产生的cookies,一般来说是$_COOKIE['PHPSESSID'],就可以了
    justfindu
        6
    justfindu  
       2013-12-05 09:42:55 +08:00   1
    curl应该算重开了一个进程 而且这个进程不属于用浏览器打开的用户 而是服务器吧
    cute
        7
    cute  
       2013-12-05 11:18:07 +08:00   1
    要把curl获取到cookie自己传到客户端.
    macdino
        8
    macdino  
       2013-12-05 12:21:13 +08:00   1
    1、session没写成功,看一下你的session目录有没有写成功
    2、跨域
    chenyg32
        9
    chenyg32  
    OP
       2013-12-05 12:40:08 +08:00
    @11 直接用Post获取?在哪个页面获取?
    raincious
        10
    raincious  
       2013-12-05 12:52:25 +08:00   1
    @chenyg32 要实现登陆什么的,PHP页面之间不需要传值。

    如果需要数据临时储存,可以使用Cookie在客户端和服务器之间来回传递。Cooke设置好之后,范围内的页面都能读取。

    还有更常用的方式就是使用$_SESSION数组或者自己实现数据库的Session,然后根据某个条件(比如用户ID什么的)读取。
    bombless
        11
    bombless  
       2013-12-05 15:49:30 +08:00   1
    session是基于cookie的,如果用户关掉了cookie,那session也不会起作用,这是其一。
    我简单说一下,如果按照楼主现在这个页面跳转逻辑要怎么改。
    因为你的session id是login.php给出的,而用户没有访问过login.php,他访问的是reg.php
    所以现在的任务是从reg.php获取一个客户端状态,让他能够保持到后面对main.php的访问上去。
    在reg.php脚本里面,你先从login.php拿到Set-Cookie头和Cookie头,然后把它们原样输出到头部。
    这样,后面用户访问main.php的时候就能回到login.php那次会话了。
    jarlyyn
        12
    jarlyyn  
       2013-12-05 21:32:15 +08:00
    ...不是应该include么?
    beaaar
        13
    beaaar  
       2013-12-06 10:58:23 +08:00
    一定要给login.php去写session么?直接在reg.php写就行了,不过不知道楼主是不是有什么特殊的需求
    johnlui
        14
    johnlui  
       2013-12-06 17:10:05 +08:00 via Android
    curl……
    看起来像是正在入门而且还不好好看教程……
    chenyg32
        15
    chenyg32  
    OP
       2013-12-06 21:48:07 +08:00
    @johnlui 你怎么知道!!我确实入门不到5天……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5046 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 03:51 PVG 11:51 LAX 19:51 JFK 22:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86