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语法(1)
Oct 09 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
Window下PHP三种运行方式图文详解
Jun 11 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
php中执行系统命令的方法
Mar 21 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 PHP
laravel框架使用阿里云短信发送消息操作示例
Feb 15 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
php中curl和file_get_content的区别
2014/05/10 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
jQuery 表单验证扩展(四)
2010/10/20 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
python实现端口转发器的方法
2015/03/13 Python
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
使用python爬取B站千万级数据
2018/06/08 Python
Python错误处理操作示例
2018/07/18 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
简单了解django处理跨域请求最佳解决方案
2020/03/25 Python
Python grpc超时机制代码示例
2020/09/14 Python
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
外贸学院会计专业应届生求职信
2013/11/14 职场文书
大学生团员个人总结
2015/02/14 职场文书
开学第一周总结
2015/07/16 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python