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新手上路(十一)
Oct 09 PHP
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 PHP
php中Smarty模板初体验
Aug 08 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 PHP
ecshop适应在PHP7的修改方法解决报错的实现
Nov 01 PHP
PHP读取Excel类文件
May 15 PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
用php定义一个数组最简单的方法
Oct 04 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将两个关联数组合并函数提高函数效率
2014/03/18 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
Python读写Excel文件方法介绍
2014/11/22 Python
python简单验证码识别的实现方法
2019/05/10 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
个人公开承诺书
2014/03/28 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
心理学培训心得体会
2016/01/22 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书
python 如何用terminal输入参数
2021/05/25 Python
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript