2011-01-06 92 views
0

问候,问题设置和读取Cookie,PHP

一直在试图弄清楚为什么这不起作用。由于所用设备上的会话存在问题,因此使用Cookie制作低安全性登录系统。设置的cookie可以独立运行,但是在脚本中没有正确设置,或者在auth脚本中没有正确读取。另外,在设置cookie之后,它不在浏览器中。想法?

登录

<?php 
    //If passwords match, a cookie is created 
    if ($pw = $hashedpw) { 
     $memberID = "1221"; //Pulled from DB 
     setcookie('MDADMIN_SESS_ID',$memberID,'0','', '.somewhere.com'); 
     header('Location: http://somewhere.com/secure_page.php'); 
    } 
    ?> 

验证

<?php 
//Verify that cookie is present 
$cookie = $_COOKIE['MDADMIN_SESS_ID']; 
if(!isset($cookie)) { 
     header("Location: http://somewhere.com/failed.php"); 
     exit(); 
} 
?> 

的过程如下:登录表 - >登录脚本 - >安全网页(如果密码匹配) - >验证脚本检查(通过包含) - >如果cookie不存在,则重定向至失败登录。运行时,即使登录脚本正确指向安全页面(成功登录),它也始终默认为不存在该cookie。

+1

考虑到您已经在浏览器上工作了,请尝试给cookie更长的过期时间。 0应该在浏览器会话结束时关闭,但可能会在下一页之前删除它(作为某种安全措施)。使用`time()+ 3600`或其他东西,看看是否有帮助。 – 2011-01-06 15:52:59

+0

不是一个坏主意,谢谢!尝试处理旧版Blackberry浏览器,这是此页面的唯一预期用户代理。 – NightMICU 2011-01-06 16:13:06

回答

1

尝试

<?php 
//If passwords match, a cookie is created 
    if ($pw = $hashedpw) { 
     $memberID = "1221"; //Pulled from DB 
     setcookie('MDADMIN_SESS_ID',$memberID,'0','/', '.somewhere.com'); 
     header('Location: http://somewhere.com/secure_page.php'); 
     exit(); 
    } 
?> 

你是缺少路径/。

还要确保在头部之后有一个exit();函数;因为如果你稍后在某个地方取消设置cookie,它可能也会受到影响。

0

try添加/本线($ PATH变量),如果设置为 '/',cookie将在整个域内提供

setcookie('MDADMIN_SESS_ID',$memberID,'0','/', '.somewhere.com');