上一篇:钱云会惨死案跟踪(20):那块手表的启示、今天寨桥村路口全部封锁
下一篇:“帖子”、“发贴人”英文怎么说(和老美聊天)
用Session和Cookie结合实现登陆认证(附代码)
米娅 2011年1月7日 16:18:44

理论方面在这篇  Session 与 Cookie

下面是实施的步骤:

1,建立存放Session文件的目录,比如: session_save_dir; Session文件的默认存放路径是系统临时文件夹;

2, 登陆提交用户名和密码,到服务器端的数据库验证,如果验证通过,设置此用户的Session为true。

  // 定义一个时间段,下面是一年,在设置Session生存周期时使用
  $time = time() + 3600 * 24 * 365;  
  // 设置存放路径
  session_save_path($session_save_dir);
  // 启动Session
  session_start();
  // 用Cookie保存Session的ID和生存周期
  setcookie(session_name(), session_id(), $time, "/");
  // 注册登陆成功的 username 变量,并赋值 true
  $_SESSION["username"] = true;

注: session_set_cookie_params()是用Cookie保存Session的ID和生存周期的函数,但据称如果客户端使用IE 6.0,就有麻烦,所以这里使用setcookie()函数设置。
   如果不设置Session的生存周期,Session ID存储在内存中,关闭浏览器后该ID自动注销,再次打开页面时,需重新注册ID。
   这也是Cookie和Session结合的好处。 

   这时打开目录session_save_dir就可以看到类似sess_latp6c8mojr4ld05v7si03re45的文件,文件名后面一部分是32编码后的随机字符串。用记事本打开,显示如下内容: useraname|b:1;

  如果username位置是数字,比如, $_SESSION["123"],session文件内容为空,这条是实践后的个人结论,欢迎高手指点。



2楼 2011年1月7日 18:28:57 米娅

3, 注销此用户的Session:

   session_save_path($session_save_dir);

   session_start();
   // 注销 变量 username
   unset($_SESSION["username"]);
   // 注销 Session 文件
   session_destroy();


注: 用户可以修改、删除自己对应的那个变量的值。


3楼 2011年1月8日 21:09:53 米娅

用户权限验证:

session_save_path($session_save_dir);
session_start();

if (isset($_SESSION[$username]) && $_SESSION[$username] == true) {
  echo "你的代码";
} else {
    echo "未登陆,无权访问";
  }

第1页 共1页
相关链接
1. Drupal 7: 多站点,一套核心代码,一套数据库,共用用户数据,一次登陆,同步session
2. Warning session_start() function.session-start cannot send session cache limiter - headers already
3. Session 与 Cookie