【公开源代码】详述多用户博客程序开发过程-step by step(2)-【会员系统(注册)】



本程序没有做前期策划,我的想法是在程序的编写过程逐渐形成,当然这是非常错误的做法。总体目标是做一个自由、轻松,面向专业人士的多用户精品博客。


经过短暂的考虑,决定第一阶段先编写会员系统。基于自由、轻松这两个目标,舍弃具有约束性的会员积分系统,并尽最大可能减少会员的权限限制;做一个会员等级划分,用于区分管理员、专业人士与非专业人士。

根据上面的分析,设计会员数据表。

id:存储会员id,默认自动增加,作为数据表的主键。

username:存储会员账号,值唯一。

email:存储会员邮箱,值唯一。

password:存储加密后的会员密码。

isactivate:存储会员激活信息。

rank:存储会员等级。

date:存储会员注册日期。

     会员注册

     会员注册页面所面对的都是初始用户,网站粘性小。这个页面要做的简洁,尽量减少用输入量。不要试图在这个页面收集大量的用户信息。注册页面收集三条用户信息,用户名、密码、邮箱,用户轻松完成注册。


创建用户注册register.php文件。

register.php

<?php
/**
 * 
 * 会员注册
 * 2014-7-6
 * 
 */

//引入文件
include_once 'config.php'; //引入配置文件
include_once(ABSPATH . 'html/register.html'); //引入会员注册界面
require_once(ABSPATH . 'function.php'); 

if(isset($_POST['submit'])){ //判断是否提交	
	
	//调用userRegister()函数,位于function.php
	userRegister($_POST['username'],$_POST['password'],$_POST['useremail']); 
}

?>

通过include_once函数引入config.php文件,config.php定义了数据库、绝对路径等参数,这些参数发生变化时,只需修改config.php文件可以了,不用去修改所有用到该参数文件。


第二个include_once函数引入register.html文件。html是发送给用户的内容,同时将用户的输入发送给服务器,在这里html便是在用户浏览器上显示的注册页面,并在用户点击注册按钮后,将用户输入发送给服务器。在register.html相对路径之前的ABSPATH是在config.php文件中定义的常量,相当于根目录的绝对路径。使用绝对路径可以提高程序的执行速度。


第三个include_once函数引入function.php文件,该文件中定义下文中用到的userRegister()函数。


文件中的if语句用于判断用户是否提交了注册按钮。用户点击了注册按钮,便调用userRegister()函数,并将收集的用户信息传递给函数。语句中的isset()函数的用途是检测变量是否已被配置,返回布尔值。$_POST变量用于收集来自method="post"的表单中的值。

用户注册实际上userRegister()函数完成。

function userRegister($username,$password,$useremail){
	
	//$username=str_replace(" ", "" ,$username); //删除空格
	$password=md5(str_replace(" ", "",$password)); //删除空格
	$useremail=str_replace(" ", "" ,$useremail); //删除空格

	if (!preg_match('/^[a-z\d_]{5,20}$/i', $username)){
		exit ('<script language="javascript">alert("会员账号格式不正确。")</script>');
		
	}
	if (!preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$useremail)){
		exit ('<script language="javascript">alert("邮箱格式不正确。")</script>');
	}
	
	$dsn='mysql:host='.DB_HOST.';'.'dbname='.DB_NAME;
	$pdo=new PDO($dsn,DB_USER,DB_PASSWORD);
	
	$sql="SELECT count(*) FROM members WHERE username='$username'";
	$pdo->query('set names utf8');
	$query=$pdo->query($sql);
	$row=$query->fetch();
	if($row[0]){
		exit ('<script language="javascript">alert("用户名已存在。")</script>');;
	}
	
	$sql="SELECT count(*) FROM members WHERE email='$useremail'";
	$pdo->query('set names utf8');
	$query=$pdo->query($sql);
	$row=$query->fetch();
	if($row[0]){
		exit ('<script language="javascript">alert("该邮箱已被使用。")</script>');;
	}
	
	$sql="INSERT INTO members (username,email,password) VALUES ('$username','$useremail','$password')";

	if($pdo->query($sql)){
		header('Location: login.php');
	}
	else {
		header('Location: register.php');
	}
   }

        首先,对传递过来的数值进行了处理,使用str_replace()函数删除数值中的空格,使用md5()函数对密码做了加密。preg_match()函数对会员账号及邮箱做正则表达式的匹配,验证其格式是否合法。

        exi()t输出一个消息并且退出当前脚本。当用户输入数据不合法时,便输出提示信息,并退出,exit()函数之后的代码将不被执行。

        PDOphp提供的数据库操作类,功能十分强大。

        query()PDO的成员函数,执行一条sql语句,执行成功会返回一个PDOStatement object,否则返回FALSE

        fetch()从一个 PDOStatement 对象相关的结果集中获取下一行。在这里,可以理解为fetch()函数是将sql语句的执行结果放在一个数组里面。

        header()函数,此处用于页面的跳转。

        SELECT name1, name2 FROM tableWHERE name2='value'INSERT INTO table (name1, name2) VALUES ('value1','value2')是两条sql语句,分别用于从数据库查询结果、向数据库中插入数据,MySql手册对这两条语句有着极为详细说明。


我只是简要说明所用到函数的功能,PHP手册对其用法有详细的说明,还有范例。

本节源码

http://pan.baidu.com/s/1qWwMY9u


QQ:1265619045







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LxBlog 多用户博客个人主页系统,一套基于php+mysql 数据库平台架构的多用户博客系统,该系统融合了Blog的最新元素,拥有强大的个人主页系统,独立的二级域名功能,灵活的用户模版系统,丰富的朋友圈和个性相册功能。 部分修正改进功能 1.改进个人页面的日志列表页的摘要 2.改进相册个人后台发表方式 3.改进音乐前台列表页为显示歌曲列表,点击试听后弹出播放窗口,取消音乐上传 4.改进个人首页中显示所加入朋友圈的更新信息功能  5.改进最新推送的文章在朋友圈的其他圈友中显示功能  6.改进日志同时推送到多个朋友圈的支持功能 7.改进朋友圈系统页列表、会员排行列表 8.改进朋友圈系统页 9.改进圈主推荐文章列表 10.改进写朋友圈写文章功能,即在圈子中加入"写文章"功能,转入个人后台编写,写文章后默认推送到该圈子 11.改进朋友圈邀请功能 12.改进头像大小控制 13.改进书签功能 部分新增功能: 1.增加日志、评论、留言表情 2.增加验证问题 3.增加在article.php页面中和该文章tag相关的文章 4.增加tags广告词锁定 5.增加列表页"隐藏日志","好友可见日志" 链接. 6.增加心情,天气在发表日志页 7.增加"上一篇","下一篇",在文章阅读页 8.增加"转移个人分类"功能,在个人后台日志列表页 9.增加日志管理的搜索功能 10.增加附件批量上传 11.增加文件和商品集成格式在日志发布过程中 12.增加相册前台图片列表页,单个图片显示页面 13.增加相册个人页面单图显示页面功能,增加图片播放器 14.增加短消息功能 15.增加系统首页博客文章、人数、今日文章数、评论数量的显示 16.增加最新博客内容在论坛首页的显示 17.增加个人分类在论坛推送到blog的文章 18.增加推送设定,即当博客向论坛推送时,管理员可以设置只允许推送至哪个或者哪些版块 19.增加随机访问列表 20.增加好友日志更新列表,在个人日志页面 21.增加可视化风格编辑 22.增加论坛文集 23.增加找回密码功能 24.增加好友分类 25.增加摘要分界符 26.增加自定义关键字链接 27.增加博主回复评论 28.增加转载功能
免费个人博客系统(兼多用户博客系统)是支持一个空间2个网站的全能型网站管理系统,本免费个人博客系统通用和拓展性强,博客、文章系统、商城、企业网站、个性化论坛等类型网站都可以使用,将来网站无论如何转型或拓展,只需要修改模板就可以实现,无需重建网站。本系统不同于以往任何逻辑架构的网站程序。本软件开发者希望通过注重商业化开发,助力用户通过网络创业和赚钱,当然您也可以通过这个软件在互联网高效地展示自己。 新版本: 新增wd()方法可以在任何模板调取任何文章商品数据,并自动生成缓存。 新版本还增加了十万多天然钻石及其它商品对接免费接口等。 详细说明: 1.本个人博客系统可以用于商业用途,本软件官方、开发者不收取任何授权费用; 2.本个人博客系统是支持一个空间2个网站的全能型博客系统; 3.本个人博客系统通用和拓展性强,博客、文章系统、商城、企业网站、个性化论坛等类型网站都可以使用; 4.本个人博客系统功能强大,代码少,运行效率更高,程序运行速度是其它主流同类软件的3~4倍,内存占用不到其它主流同类软件的五分之一; 5.开启和关闭会员注册,开启和关闭普通会员投稿功能; 6.会员功能拓展到了兼职专题功能,SEO设置和开放特约编辑的多用户不同权限管理功能等; 7.超级管理员可无密码一键登录任意会员后台,管理员用受限登录会员身份后台发布信息,也可让网站攻击者无法猜解密码; 8.自动生成手机版网站,系统默认带www的域名为PC模板站,不带www的顶级域名为手机站,不增加维护难度,就可以同时拥有2个网站; 9.博客程序还包含订单、秒杀、限时抢购和数量虚拟功能,助力用户互联网创业和商业化运营,就看脑洞大开的你怎么使用了; 10.本个人博客系统能够适应各种界面浏览器,后台可手机随时随地访问、管理和更新网站; 11.可一键切换成.shtml、.html、.htm、.asp、.aspx、.cgi、.php、.jsp、.cgi、/ 等网页后缀,模拟不同语言编程的网站程序; 12.前端页面精简,前端编码不用div标签,不用id、class规则的CSS样式,最大限度精简前端代码,鼓励用户抛弃div+CSS前端代码编写模式,我们这样做不是为了迎合HTML5,只是为了更合理的应用HTML标签; 13.安装程序自动识别和设置伪静态; 14.全站无死角SEO设置; 15.强大的内链逻辑,特别适应大数据类型网站使用; 16.强大的广告和精准广告设置; 17.数据缓存模式,不依赖外部服务器组件和其它插件,不额外占用服务器系统内存资源; 18.删除局部缓存和一键清除全部缓存; 19.可设置邮件实时通知新订单和访客留言; 20.可设置管理员回复留言可同时邮件通知留言者; 21.可查看和删除无用上传文件,为将来数据备份节省时间和空间; 22.特色的tag标签功能; 23.分类、tag标签、url表单填写自动补缺; 24.url表单可自动生成拼音,也可以用汉字,自动转码,有利于SEO搜索引擎排名; 25.开放式PHP原生态模板,用户任意修改、穿插内容或广告,无需花时间研究额外规则,模板修改成本更低; 26.可对模板备份,使用备份模板,并可对模板恢复系统初始状态; 27.模板修改全站页面秒更新; 28.可自定义SQL语句的图片展示页面; 29.后台可控制各个模块是否开启验证码、设置验证码长度,以及设置验证码破解难度; 30.访客留言关键词过滤; 31.可自定义导航; 32.可在线编辑js和CSS文件; 33.本免费个人博客系统(兼多用户博客系统)无后门。
★国人的骄傲★国产大型开源多用户博客系统 关于 X3-BLOG X3BLOG: 国内效率最快的AJAX多用户博客系统 国内搜索引擎最强大的多用户博客系统 国内唯一支持所有浏览器的多用户博客系统 国内唯一应用AJAX+XML+XSL三种技术于一体的博客系统 X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语 言之一ASP.NET(C#) 2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\ORACLE\MYSQL\DB2等,默认使用 SQLSERVER2000。 X3-BLOG 遵从 GENERAL PUBLIC LICENSE(GPL) 开源协议,这意味着可以修改程序的一个或几个副本或程式的任何 部分,以此形成基於这些程式的衍生作品。必须在修改过的档案中附有明显的说明:您修改了此一档案及任何修改的 日期。 您必须让您发布或出版的作品,包括本程式的全部或一部分,或内含本程式的全部或部分所衍生的作品,允许 第三方在此许可证条款下使用,并且不得因为此项授权行为而收费。 功能与特点 X3-BLOG完美的利用了浏览器的XML解析技术,完全实现数据和界面的分离,使网络传输数据量大大减少,加载速 度远远超过了市面上所有的BLOG产品,有效的减轻了服务器的带宽压力,服务器端使用四大动态网站开发语言中速度 最快的ASP.NET(C#)编写,屏弃了传统的控件开发方式,所有执行过程采用单向流的生成方式,使其对服务器CPU及内 存资源的占用降至最低水平,并通过gzip压缩进一步缩减服务器的网络带宽消耗,提高响应速度 。 无Session设计杜绝了用户会话无故丢失的尴尬,客户端关联的会话加密方式带来了用户数据的高安全性,独特的 XSL结构设计,彻底消除了跨站脚本攻击的隐患,杜绝恶意代码的执行,同时保证了文章内容的完整性。 DIV+CSS布局,交互方式采用当前最流行的AJAX技术,所有操所在一个页面完成,并实现了AJAX的最高应用—— AjaxUpload,所有操作一气呵成,带来前所未有的用户体验。 简洁的主题与皮肤开发技术,更合理的模块化设计,大大减轻了后续开发的难度,使模板开发变得轻而易举。 自主研发的中文分词技术,速度超过3MB/s,准确率达到90%以上,大大超过网上各种开源中文分词技术,几乎可 以和中科院的ICTCLAS相媲美,结合当前最成熟的Lucene的.net版本,实现了功能强大执行快速的全文检索引擎。 兼容性 兼容市面上所有主流浏览器(包括google Chrome浏览器) 演示地址: http://blog.muchool.com 官方下载: http://www.shinechain.com.cn/downloads/software.htm 在线查看完整源代码: http://www.muchool.com/project/X3BLOG_DYHB/1.1.0.beta1.htm 版本更新内容 * 使用开源UrlRewrite筛选器Ionic's Isapi Rewriter替换了商业的ISAPI Rewriter * 修正了一处安装为虚拟目录时的路径指向错误 * 加入了类似QQ空间的相册上下翻页功能 * 加入了大量的服务器端和脚本代码注释 * 实现对最新的Google Chrome浏览器的支持 * 优化了安装程序,杜绝了对安装目标设置ASP.NET版本是导致IIS进程崩溃的现象 * 解决了作为虚拟目录执行时的web.config继承问题 * 修正了多处目录指向错误 * 增加对虚拟目录的支持 * 加入了安装项目 * 修正了后太管理中上传图片不能访问的错误 后台用户名:admin 密码:123456
免费个人博客系统(兼多用户博客系统)是支持一个空间2个网站的全能型网站管理系统,本免费个人博客系统通用和拓展性强,博客、文章系统、商城、企业网站、个性化论坛等类型网站都可以使用,将来网站无论如何转型或拓展,只需要修改模板就可以实现,无需重建网站。本系统不同于以往任何逻辑架构的网站程序。本软件开发者希望通过注重商业化开发,助力用户通过网络创业和赚钱,当然您也可以通过这个软件在互联网高效地展示自己。 详细说明: 1.本个人博客系统可以用于商业用途,本软件官方、开发者不收取任何授权费用; 2.本个人博客系统是支持一个空间2个网站的全能型博客系统; 3.本个人博客系统通用和拓展性强,博客、文章系统、商城、企业网站、个性化论坛等类型网站都可以使用; 4.本个人博客系统功能强大,代码少,运行效率更高,程序运行速度是其它主流同类软件的3~4倍,内存占用不到其它主流同类软件的五分之一; 5.开启和关闭会员注册,开启和关闭普通会员投稿功能; 6.会员功能拓展到了兼职专题功能,SEO设置和开放特约编辑的多用户不同权限管理功能等; 7.超级管理员可无密码一键登录任意会员后台,管理员用受限登录会员身份后台发布信息,也可让网站攻击者无法猜解密码; 8.自动生成手机版网站,系统默认带www的域名为PC模板站,不带www的顶级域名为手机站,不增加维护难度,就可以同时拥有2个网站; 9.博客程序还包含订单、秒杀、限时抢购和数量虚拟功能,助力用户互联网创业和商业化运营,就看脑洞大开的你怎么使用了; 10.本个人博客系统能够适应各种界面浏览器,后台可手机随时随地访问、管理和更新网站; 11.可一键切换成.shtml、.html、.htm、.asp、.aspx、.cgi、.php、.jsp、.cgi、/ 等网页后缀,模拟不同语言编程的网站程序; 12.前端页面精简,前端编码不用div标签,不用id、class规则的CSS样式,最大限度精简前端代码,鼓励用户抛弃div+CSS前端代码编写模式,我们这样做不是为了迎合HTML5,只是为了更合理的应用HTML标签; 13.安装程序自动识别和设置伪静态; 14.全站无死角SEO设置; 15.强大的内链逻辑,特别适应大数据类型网站使用; 16.强大的广告和精准广告设置; 17.数据缓存模式,不依赖外部服务器组件和其它插件,不额外占用服务器系统内存资源; 18.删除局部缓存和一键清除全部缓存; 19.可设置邮件实时通知新订单和访客留言; 20.可设置管理员回复留言可同时邮件通知留言者; 21.可查看和删除无用上传文件,为将来数据备份节省时间和空间; 22.特色的tag标签功能; 23.分类、tag标签、url表单填写自动补缺; 24.url表单可自动生成拼音,也可以用汉字,自动转码,有利于SEO搜索引擎排名; 25.开放式PHP原生态模板,用户任意修改、穿插内容或广告,无需花时间研究额外规则,模板修改成本更低; 26.可对模板备份,使用备份模板,并可对模板恢复系统初始状态; 27.模板修改全站页面秒更新; 28.可自定义SQL语句的图片展示页面; 29.后台可控制各个模块是否开启验证码、设置验证码长度,以及设置验证码破解难度; 30.访客留言关键词过滤; 31.可自定义导航; 32.可在线编辑js和CSS文件; 33.本免费个人博客系统(兼多用户博客系统)无后门。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值