PHP+MYSQL会员系统的开发实例教程


Posted in PHP onAugust 23, 2014

本文通过一个简单的实例完成了完整的PHP+MySQL会员系统功能。是非常实用的一个应用。具体实现步骤如下:

一、会员系统的原理:
 
  登陆-->判断-->保持状态(Cookie或Session)-->验证状态及其权限

二、会员系统的安全:

1、学会使用常量提高md5安全性
2、Cookie/ Session 少用明文信息
3、Session安全性要大于Cookie
4、使用Cookie/ Session读取信息 尽量增加判断信息
5、Cookie/ Session内容要精简
6、对于错误信息及时销毁Cookie/ Session

三、数据库test,表user_list,及其字段

  uid     m_id     username     password
  1       1        admin        291760f98414679e3fd3f9051b19b6f7
  2       2        admin2       895785cfa5d8157f4d33c58ae0f55123

password:分别为md5(admintest100)、md5(admin2test100)即密码是与常量test100绑定后,再经过加密储存到数据库中的,这一步可以在注册时设置。

四、配置页面m_config.php:

<?php
 session_start();
 //数据库连接
 $conn=mysql_connect('localhost','root','');
 mysql_select_db('test',$conn);
 //定义常量
 define(ALL_ps,"test100");
 //查看登录状态与权限
 function user_shell($uid,$shell,$m_id){
   $sql="select * from user_list where `uid`='$uid'"; 
   $query=mysql_query($sql);
   $us=is_array($row=mysql_fetch_array($query));
   $shell=$us ? $shell==md5($row[username].$row[password].ALL_PS):FALSE;
   if($shell){
     if($row[m_id]<=$m_id){//$row[m_id]越小权限越高,为1时权限最高
       return $row;
     }else{
       echo "你的权限不足,不能查看该页面";
       exit(); 
     }
   }else{
     echo "登录后才能查看该页";
     exit(); 
   } 
 }
 //设置登录超时
 function user_mktime($onlinetime){
    $new_time=mktime();
    echo $new_time-$onlinetime."秒未操作该页面"."<br>";
    if($new_time-$onlinetime>'10'){//设置超时时间为10秒,测试用
      echo "登录超时,请重新登录";
      exit();
      session_destroy();
    }else{
      $_SESSION[times]=mktime();
    }
 }
?>

五、登录页面m_user.php:

<?php
 include("m_config.php");
 //echo md5("admin2".ALL_PS);
 if($_POST[submit]){
  $username=str_replace(" ","","$_POST[username]");
  $sql="select * from user_list where `username`='$username'"; 
  $query=mysql_query($sql);
  $us=is_array($row=mysql_fetch_array($query));
  $ps=$us ? md5($_POST[password].ALL_PS)==$row[password] : FALSE;
  if($ps){
    $_SESSION[uid]=$row[uid];
    $_SESSION[user_shell]=md5($row[username].$row[password].ALL_PS);
    $_SESSION[times]=mktime();//取得登录时忘该的时间
    echo "登录成功";
  }else{
    echo "用户名或密码错误";
    session_destroy();//密码错误时消除所有的session
  }
 }
?>
<form action="" method="post">
 用户名:<input name="username" type="text" /><br />
 用户名:<input name="password" type="password" /><br />
 验证码:<input name="code" type="code" />5213<br /><br />
 <input name="submit" type="submit" value="登录" />
</form>

六、设置了权限及超时的页面m_zhuangtai.php:

<?php
 include("m_config.php"); 
 $arr=user_shell($_SESSION[uid],$_SESSION[user_shell],1);//设置该页面只有权限为1时即最高权限的才能访问
 
 user_mktime($_SESSION[times]);//判断是否超时10秒
 
 //echo $_SESSION[times]."<br>";//登录时该的时间
 //echo mktime()."<br>";//当前日期
 //echo $arr[username]."<br>";
 //echo $arr[uid]."<br>";
 
?>

有权限方能查看的内容

七、测试结果:
 
1、用sss,sssssss登录,提示:用户名或密码错误。查看m_zhuangtai.php,提示:登录后才能查看该页。
2、用admin admin登录后,因为权限为1,所以可以查看m_zhuangtai.php页面的内容。
3、用admin admin登录后,因为权限为1,所以可以查看m_zhuangtai.php页面的内容,但10秒后再刷新,提示:X秒未操作该页面 登录超时,请重新登录。
4、用admin2 admin2登录后,因为权限为2,所以无法查看m_zhuangtai.php页面的内容,提示:你的权限不足,不能查看该页面。

希望本文所述实例对大家PHP程序开发有所帮助。

PHP 相关文章推荐
php递归列出所有文件和目录的代码
Sep 10 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
php生成静态页面的简单示例
Apr 17 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
简单谈谈php浮点数精确运算
Mar 10 PHP
php图片上传类 附调用方法
May 15 PHP
php cookie工作原理与实例详解
Jul 18 PHP
php源码 fsockopen获取网页内容实例详解
Sep 24 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 #PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
Aug 23 #PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 #PHP
wamp安装后自定义配置的方法
Aug 23 #PHP
PHP中feof()函数实例测试
Aug 23 #PHP
PHP实现利用MySQL保存session的方法
Aug 23 #PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
Aug 22 #PHP
You might like
PHP mail()函数使用及配置方法
2014/01/14 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
JS模拟酷狗音乐播放器收缩折叠关闭效果代码
2015/10/29 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
Python 文件操作技巧(File operation) 实例代码分析
2008/08/11 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
利用Python优雅的登录校园网
2020/10/21 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
建筑人员岗位职责
2013/12/25 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
2015年端午节活动策划书
2015/05/05 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
退休欢送会主持词
2015/07/01 职场文书
教师师德承诺书2016
2016/03/25 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电