免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2619 | 回复: 7
打印 上一主题 下一主题

[会话]用户登录问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-10 09:20 |只看该作者 |倒序浏览
20可用积分
做一个会员制的网站,在做会员登录时有个问题一直很想搞清楚。是一个简单的问题。

我是这样做的:

  会员登录时,由会员输入账号和密码 提交进行数据库比对,正确就把账号写入 SESSION

  然后在会员功能平台的每个页面里都去检查 SESSION

  发现 SESSION 里的帐号为空时,就判定该会员没有登录,页面自动转到登录页面。

  我一直用这样的方法,但一定要设置  register_globals = On  最近我看到说是 register_globals = On 打开对服务器是不安全的。

那么我该怎样做这个会员登录程序呢??


  是否 有其他更好、更安全的方法去做会员登录程序呢???

  请求各位 phper 分享一下好吗?

  谢谢




[ 本帖最后由 HonestQiao 于 2007-7-10 15:30 编辑 ]

最佳答案

查看完整内容

但是更严肃的来说,你应该好好看看书册:http://cn.php.net/manual/zh/ref.session.php范例注意: 自 PHP 4.1.0 起,$_SESSION 如同 $_POST,$_GET,$_REQUEST 等一样成为全局数组。与 $HTTP_SESSION_VARS 不同,$_SESSION 总是具有全局范围。因此不要对 $_SESSION 使用 global 关键字。注意本文档已被改为在所有地方都使用 $_SESSION。如果倾向后者,可以将 $HTTP_SESSION_VARS 都替换成 $_SESSION。此外注意必须在使用 $_SESSION ...

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2007-07-10 09:20 |只看该作者
但是更严肃的来说,你应该好好看看书册:
http://cn.php.net/manual/zh/ref.session.php

范例
注意: 自 PHP 4.1.0 起,$_SESSION 如同 $_POST,$_GET,$_REQUEST 等一样成为全局数组。与 $HTTP_SESSION_VARS 不同,$_SESSION 总是具有全局范围。因此不要对 $_SESSION 使用 global 关键字。注意本文档已被改为在所有地方都使用 $_SESSION。如果倾向后者,可以将 $HTTP_SESSION_VARS 都替换成 $_SESSION。此外注意必须在使用 $_SESSION 之前先用 session_start() 启动会话。

在 $_SESSION 关联数组中的键名具有和 PHP 中普通变量名相同的规则,即不能以数字开头,必须以字母或下划线开头。更多细节见本手册中变量一章。

如果 register_globals 被禁用,则只有全局关联数组 $_SESSION 中的成员可以被注册为会话变量。被恢复的会话变量也只存在于 $_SESSION 数组中。

为提高安全性和代码的可读性,建议使用 $_SESSION(或在 PHP 4.0.6 或更低版本中用 $HTTP_SESSION_VARS)。使用了 $_SESSION,就没有必要使用 session_register(),session_unregister(),session_is_registered() 函数。访问会话变量就和其它变量一样。

论坛徽章:
0
3 [报告]
发表于 2007-07-10 09:25 |只看该作者
...

[ 本帖最后由 wildlily980 于 2007-7-10 11:39 编辑 ]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2007-07-10 09:25 |只看该作者
$username = $_SESSION["username"];
这样子,你就可以继续实用$username这个register_globals = On情况下的量了,register_globals = Off也可以。

论坛徽章:
0
5 [报告]
发表于 2007-07-10 09:48 |只看该作者
$_SESSION['USERNAME']才是正道

论坛徽章:
0
6 [报告]
发表于 2007-07-10 09:52 |只看该作者
我的应用里就是这样做的.相应的登录退出就不用说了吧.

  1. //根据COOKIE有选择的开启session
  2. if($_COOKIE[session_name()]){
  3.         session_start();
  4. }
  5. //安全开启session
  6. function start_session(){
  7.         if(null==session_id()){
  8.                 session_start();
  9.         }
  10. }
  11. //关闭并清除session
  12. function clear_session(){
  13.         setcookie(session_name(),FALSE);
  14.         if(session_id()){
  15.                 session_destroy();
  16.         }
  17. }
复制代码

论坛徽章:
0
7 [报告]
发表于 2007-07-10 10:03 |只看该作者
前面的都已经回答的很清楚了,现在只关心这分到底送给了谁...

论坛徽章:
0
8 [报告]
发表于 2007-07-19 16:29 |只看该作者

分析的都不错!

你可以把二、六楼的信息总结一下,自己应该可以解决问题的哈!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP