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

2013-12-05 02:22:03 +08:00
 chenyg32
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就没了~
7614 次点击
所在节点    PHP
15 条回复
chenyg32
2013-12-05 02:34:00 +08:00
我好像有点想法了。是不是curl()打开的网页是新开的,与我当前的无关,所以即使保存了session也是徒劳的。根本不是同一个范围内的。
chenyg32
2013-12-05 02:37:14 +08:00
话又说回来了,既然不能用curl,那php之间应该怎么传值?
11
2013-12-05 02:47:02 +08:00
为什么要用curl?直接用 $_POST[] 获取呀。
raincious
2013-12-05 08:59:38 +08:00
楼主,为什么要这么纠结呢。

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

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

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

还有更常用的方式就是使用$_SESSION数组或者自己实现数据库的Session,然后根据某个条件(比如用户ID什么的)读取。
bombless
2013-12-05 15:49:30 +08:00
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
2013-12-05 21:32:15 +08:00
...不是应该include么?
beaaar
2013-12-06 10:58:23 +08:00
一定要给login.php去写session么?直接在reg.php写就行了,不过不知道楼主是不是有什么特殊的需求
johnlui
2013-12-06 17:10:05 +08:00
curl……
看起来像是正在入门而且还不好好看教程……
chenyg32
2013-12-06 21:48:07 +08:00
@johnlui 你怎么知道!!我确实入门不到5天……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/91882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX