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 相关文章推荐
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
php 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
php学习之变量的使用
May 29 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
深入分析php之面向对象
May 15 PHP
php输出1000以内质数(素数)示例
Feb 16 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 PHP
PHP7 其他语言层面的修改
Mar 09 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模板类代码
2008/09/07 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
thinkphp整合系列之极验滑动验证码geetest功能
2019/06/18 PHP
php链式操作的实现方式分析
2019/08/12 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
Ajax 数据请求的简单分析
2011/04/05 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
jQuery数据缓存用法分析
2015/02/20 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
python实现文件批量编码转换及注意事项
2019/10/14 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
波兰最大的儿童服装连锁店之一:5.10.15.
2018/02/11 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
古汉语文学求职信范文
2014/03/16 职场文书
会计核算科岗位职责
2014/03/19 职场文书
天地会口号
2014/06/17 职场文书
节电标语大全
2014/06/23 职场文书
领导欢迎词致辞
2015/01/23 职场文书
网络舆情信息简报
2015/07/21 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
Python 绘制多因子柱状图
2022/05/11 Python