查看: 1502|回复: 12
|
PHP的cookie的问题
[复制链接]
|
|
我有一个PHP的program.
是用cookie来login的但是。
我的写法是这样的
- login
- <?php
- $USERNAME=$_POST["USERNAME"];
- $PASSWORD=$_POST["PASSWORD"];
- if ($USERNAME!="chen" or $PASSWORD!="chen")
- {
- header("Location:login.php");
- exit;
- }
- SETCOOKIE("USERNAME", $USERNAME);
- SETCOOKIE("PASSWORD", $PASSWORD);
- header("location:list.php");
- ?>
复制代码
- secure.php
- <?php
- $USERNAME=$_COOKIE["USERNAME"];
- $PASSWORD=$_COOKIE["PASSWORD"];
- if ($USERNAME!="chen" or $PASSWORD!="chen")
- {
- header("Location:login.php");
- exit;
- }
- ?>
复制代码
- logout..
- CASE "logout":
- SETCOOKIE("USERNAME"," ", time()-60);
- SETCOOKIE("PASSWORD"," ", time()-60);
- header("Refresh:3;URL=login.php");
- echo"<img border=0 src=wait.gif><br>";
- echo" Loging out....";
- break;
复制代码
in each page header
i have add this
- <?php require("secure.php");
- require ("conn.php");?>
复制代码
问题是,当我logout了,
我 click Internet Explorer的back时,它可以回到之前的。
为什么呢?
我用session就没有这问题。
[ 本帖最后由 红发 于 18-10-2005 12:11 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 18-10-2005 01:33 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 19-10-2005 12:04 AM
|
显示全部楼层
因为大家都搞不懂什么原因,我一直都在用session做login,cookie只是记录一些比较不严密的资料。 |
|
|
|
|
|
|
|
发表于 19-10-2005 12:32 AM
|
显示全部楼层
cookie 是储存在 client 的电脑中,而 session 是储存在 server 中。
当你 logout 时,记得清除 session 和 cookie 理的资料,那么就 browser 就不会“记得“ 你上次的资料了。 |
|
|
|
|
|
|
|
楼主 |
发表于 19-10-2005 09:13 AM
|
显示全部楼层
就是我清除了cookie,
然后click intenet explorer 的 back 还是可以看到资料。
然后我在click refresh 他就会才叫我insert username 和 password.
希望各位大大明白我的意思。
谢谢 |
|
|
|
|
|
|
|
楼主 |
发表于 19-10-2005 09:14 AM
|
显示全部楼层
原帖由 JR86 于 19-10-2005 12:04 AM 发表
因为大家都搞不懂什么原因,我一直都在用session做login,cookie只是记录一些比较不严密的资料。
因为我要试试用cookie来做login |
|
|
|
|
|
|
|
发表于 19-10-2005 11:03 AM
|
显示全部楼层
我想也许是在history里你的browser buffer里面还有cookie的variable吧,你可以试试看佳礼也是这样的。如果要避免这样的情况还有你所设计的网页不会handle很多login session的话,可以试试看用session cookies(利用cookies保留session)。 |
|
|
|
|
|
|
|
发表于 19-10-2005 11:39 AM
|
显示全部楼层
网页大概被Proxy Server或其他Server Cache了吧!
试试这个
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); |
|
|
|
|
|
|
|
楼主 |
发表于 19-10-2005 02:31 PM
|
显示全部楼层
原帖由 苦瓜汤 于 19-10-2005 11:03 AM 发表
我想也许是在history里你的browser buffer里面还有cookie的variable吧,你可以试试看佳礼也是这样的。如果要避免这样的情况还有你所设计的网页不会handle很多login session的话,可以试试看用session cookies(利 ...
session 是可以,
但我要试试用cookie |
|
|
|
|
|
|
|
楼主 |
发表于 19-10-2005 02:32 PM
|
显示全部楼层
原帖由 belon_cfy 于 19-10-2005 11:39 AM 发表
网页大概被Proxy Server或其他Server Cache了吧!
试试这个
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", fal ...
好的我试试看。
谢谢belon_cfy |
|
|
|
|
|
|
|
发表于 19-10-2005 03:09 PM
|
显示全部楼层
原帖由 红发 于 19-10-2005 02:31 PM 发表
session 是可以,
但我要试试用cookie
我的意思是session-cookies,就是把session_id用cookies保存起来,这样可以弥补两边的缺点。例如:
- //login
- session_start();
- $_SESSION['auth']=true;
- setcookie('my_id',session_id(),time()+60*60*24);
- //auth
- $my_id = $_COOKIE['my_id'];
- session_set_cookie_params(60*60*24);
- session_id($my_id);
- session_start();
- /*if(isset($_SESSION['auth']) && $_SESSION['auth'] == true){
- return (true);
- }else{ return -1; }*/
- //logout
- $my_id = $_COOKIE['my_id'];
- session_set_cookie_params(60*60*24);
- session_id($my_id);
- session_start();
- session_unset();
- session_destroy();//这样就可以不受cache的影响了。
复制代码
(code没test过,有错的话请见谅。)
[ 本帖最后由 苦瓜汤 于 19-10-2005 03:11 PM 编辑 ] |
|
|
|
|
|
|
|
楼主 |
发表于 19-10-2005 05:10 PM
|
显示全部楼层
session-cookies??
没有test过,但是谢谢你。
我试试看,顺便找找他的资料 |
|
|
|
|
|
|
|
楼主 |
发表于 24-10-2005 12:56 PM
|
显示全部楼层
为什么我用session就没有这个问题。
用cookie就会呢?? |
|
|
|
|
|
|
| |
本周最热论坛帖子
|