thinkphp 登录注册页面
创建数据库:/*Navicat MySQL Data TransferSource Server : 本地连接Source Server Version : 50617Source Host : localhost:3306Source Database : crmTarget Server Type : MYSQLTarget Server Version : 50617File Encoding : 65001Date: 2015-06-29 23:55:28*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for think_users-- ----------------------------DROP TABLE IF EXISTS `think_users`;CREATE TABLE `think_users` (`userid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id', `companyid` mediumint(8) unsigned NOT NULL COMMENT '公司id',`pid` mediumint(8) NOT NULL COMMENT '父id',`username` char(20) NOT NULL DEFAULT '' COMMENT '用户名',`password` char(32) NOT NULL DEFAULT '' COMMENT '密码',`nickname` char(20) NOT NULL DEFAULT '' COMMENT '昵称',`regdate` int(10) unsigned NOT NULL COMMENT '注册时间',`lastdate` int(10) unsigned NOT NULL COMMENT '最后一次登录时间',`regip` char(15) NOT NULL DEFAULT '' COMMENT '注册ip',`lastip` char(15) NOT NULL DEFAULT '' COMMENT '最后一次登录ip',`loginnum` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '登录次数',`email` char(32) NOT NULL DEFAULT '' COMMENT '邮箱',`mobile` char(11) NOT NULL DEFAULT '' COMMENT '手机号码',`islock` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否锁定',`vip` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否会员',`overduedate` int(10) unsigned NOT NULL COMMENT '账户过期时间',`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态-用于软删除', PRIMARY KEY (`userid`),UNIQUE KEY `username` (`username`) USING BTREE,KEY `email` (`email`) USING BTREE) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;创建模型(用于自动验证, 自动完成) :namespace Home\Model;use Think\Model;class UsersModel extends Model {/*** 自动验证* self::EXISTS_VALIDATE 或者0 存在字段就验证(默认)* self::MUST_VALIDATE 或者1 必须验证* self::VALUE_VALIDATE或者2 值不为空的时候验证*/protected $_validate = array(array('nickname', 'require', '昵称不能为空!'), //默认情况下用正则进行验证array('username', 'require', '用户名不能为空!'), //默认情况下用正则进行验证array('username', '', '该用户名已被注册!', 0, 'unique', 1), // 在新增的时候验证name 字段是否唯一array('email', '', '该邮箱已被占用', 0, 'unique', 1), // 新增的时候email字段是否唯一array('mobile', '', '该手机号码已被占用', 0, 'unique', 1), // 新增的时候mobile字段是否唯一// 正则验证密码[需包含字母数字以及@*#中的一种,长度为6-22位]array('password', '/^([a-zA-Z0-9@*#]{6,22})$/', '密码格式不正确,请重新输入!', 0),array('repassword', 'password', '确认密码不正确', 0, 'confirm'), // 验证确认密码是否和密码一致array('email', 'email', '邮箱格式不正确'), // 内置正则验证邮箱格式array('mobile', '/^1[34578]\d{9}$/', '手机号码格式不正确', 0), // 正则表达式验证手机号码array('verify', 'verify_check', '验证码错误', 0, 'function'), // 判断验证码是否正确//array('agree', 'is_agree', '请先同意网站安全协议!', 1, 'callback'), // 判断是否勾选网站安全协议array('agree', 'require', '请先同意网站安全协议!', 1), // 判断是否勾选网站安全协议);/*** 自动完成*/protected $_auto = array (array('password', 'md5', 3, 'function') , // 对password字段在新增和编辑的时候使md5函数处理array('regdate', 'time', 1, 'function'), // 对regdate字段在新增的时候写入当前时间戳array('regip', 'get_client_ip', 1, 'function'), // 对regip字段在新增的时候写入当前注册ip地址);/*** 判断是否同意网站安全管理协议* @return boolprotected function is_agree(){// 获取POST数据$agree = I('post.agree', 0, 'intval');// 验证if ($agree) {return true;} else {return false;}}复制代码登录注册:namespace Home\Controller;use Think\Controller;/*** Class LoginController* @package Home\Controller*/class LoginController extends Controller {/*** 用户登录*/public function login(){// 判断提交方式if (IS_POST) {// 实例化Login对象$login = D('login');// 自动验证创建数据集if (!$data = $login->create()) {// 防止输出中文乱码header("Content-type: text/html; charset=utf-8");exit($login->getError());}// 组合查询条件$where = array();$where['username'] = $data['username'];$result = $login->where($where)->field('userid,username,nickname,password,lastdate,lastip')->find();// 验证用户名对比密码if ($result && $result['password'] == $result['password']) {// 存储sessionsession('uid', $result['userid']); // 当前用户idsession('nickname', $result['nickname']); // 当前用户昵称session('username', $result['username']); // 当前用户名session('lastdate', $result['lastdate']); // 上一次登录时间session('lastip', $result['lastip']); // 上一次登录ip// 更新用户登录信息$where['userid'] = session('uid');M('users')->where($where)->setInc('loginnum'); // 登录次数加1M('users')->where($where)->save($data); // 更新登录时间和登录ip$this->success('登录成功,正跳转至系统首页...', U('Index/index'));} else {$this->error('登录失败,用户名或密码不正确!');}} else {$this->display();}}/*** 用户注册*/public function register(){// 判断提交方式做不同处理if (IS_POST) {// 实例化User对象$user = D('users');// 自动验证创建数据集if (!$data = $user->create()) {// 防止输出中文乱码header("Content-type: text/html; charset=utf-8");exit($user->getError());}//插入数据库if ($id = $user->add($data)) {/* 直接注册用户为超级管理员,子用户采用邀请注册的模式,遂设置公司id等于注册用户id,便于管理公司用户*/$user->where("userid = $id")->setField('companyid', $id);$this->success('注册成功', U('Index/index'), 2);} else {$this->error('注册失败');}} else {$this->display();}}/*** 用户注销*/public function logout(){// 清楚所有sessionsession(null);redirect(U('Login/login'), 2, '正在退出登录...');}/*** 验证码*/public function verify(){// 实例化Verify对象$verify = new \Think\Verify();// 配置验证码参数$verify->fontSize = 14; // 验证码字体大小$verify->length = 4; // 验证码位数$verify->imageH = 34; // 验证码高度$verify->useImgBg = true; // 开启验证码背景$verify->useNoise = false; // 关闭验证码干扰杂点$verify->entry();}}复制代码登录模版:<form action="__SELF__" method="post"><div class="form-group has-feedback"><input type="text" name="username" class="form-control" placeholder="用户名" /><span class="glyphicon glyphicon-user form-control-feedback"></span> </div><div class="form-group has-feedback"><input type="password" name="password" class="form-control" placeholder="密码" /><span class="glyphicon glyphicon-lock form-control-feedback"></span> </div><div class="form-group has-feedback"><input type="text" name="verify" class="form-control" placeholder="验证码" style="width:200px;" /><span class="glyphicon glyphicon-qrcode form-control-feedback" style="right:120px;"></span><img class="verify" src="{:U(verify)}" alt="验证码" onClick="this.src=this.src+'?'+Math.random()" /></div><div class="row"><div class="col-xs-8"><div class="checkbox icheck"><label><input type="checkbox" name="remember" value="1"> 记住我</label></div></div><!-- /.col --><div class="col-xs-4"><button type="submit" class="btn btn-primary btn-block btn-flat">登录</button></div><!-- /.col --></div></form>复制代码注册模版:<div class="register-box-body"><p class="login-box-msg">注册一个新用户</p><form action="__SELF__" method="post"><div class="form-group has-feedback"><input type="text" name="nickname" class="form-control" placeholder="昵称" /><span class="glyphicon glyphicon-leaf form-control-feedback"></span> </div><div class="form-group has-feedback"><input type="text" name="username" class="form-control" placeholder="用户名" /><span class="glyphicon glyphicon-user form-control-feedback"></span> </div><div class="form-group has-feedback"><input type="password" name="password" class="form-control" placeholder="密码" /><span class="glyphicon glyphicon-credit-card form-control-feedback"></span></div><div class="form-group has-feedback"><input type="password" name="repassword" class="form-control" placeholder="确认密码" /><span class="glyphicon glyphicon-check form-control-feedback"></span> </div><div class="form-group has-feedback"><input type="email" name="email" class="form-control" placeholder="邮箱" /><span class="glyphicon glyphicon-envelope form-control-feedback"></span> </div><div class="form-group has-feedback"><input type="text" name="mobile" class="form-control" placeholder="手机号码" /><span class="glyphicon glyphicon-phone form-control-feedback"></span> </div><div class="form-group has-feedback"><input type="text" name="verify" class="form-control" placeholder="验证码" style="width:200px;" /><span class="glyphicon glyphicon-qrcode form-control-feedback" style="right:120px;"></span><img class="verify" src="{:U(verify)}" alt="验证码" onClick="this.src=this.src+'?'+Math.random()" /></div><div class="row"><div class="col-xs-8"><div class="checkbox icheck"><label><input type="checkbox" name="agree" value="1"> 我同意<a href="#">网站安全协议</a></label></div></div><!-- /.col --><div class="col-xs-4"><button type="submit" class="btn btn-primary btn-block btn-flat">点击注册</button></div><!-- /.col --></div></form><a href="login.html" class="text-center">我已经注册了账户</a></div>。
php实现登录注册界面
php实现登录注册界⾯php实现登录注册界⾯⾸先你要搭建⼀个⾃⼰的数据库我⽤wamp64创了⼀个people的数据库具体操作可以参考该搭建链接:这⾥就讲下我实现的功能代码:创建sql.func.php实现⼀些基本函数功能<?php/***弹框*/function_alert($_info){echo"<script type='text/javascript'>alert('$_info');history.back();</script>";exit;}/*** _location():弹出⼀个对话框并且转跳到另⼀个界⾯* @access public* @param string $_info 对话框上显⽰的信息* @param string $_url 转跳的页⾯地址* @return void*/function_location($_info,$_url){if($_info==null){header('Location:'.$_url);}else{echo"<script type='text/javascript'>alert('$_info');location.href='$_url';</script>";exit;}}/*** _connect():连接数据库* @access public* @return void*/function_connect(){//定义全局变量$_conn,在函数外部也能调⽤global$_conn;$_conn=mysqli_connect(DB_HOST, DB_USER,DB_PWD);if (!$_conn) {exit('数据库连接失败:'.mysqli_error($_conn));}}/*** _select_db():选择数据库* @access public* @return void*/function_select_db(){global$_conn;if(!mysqli_select_db($_conn,DB_NAME)){exit('找不到数据库'.mysqli_error($_conn));}}/*** _set_names():设置字符编码* @access public* @return void*/function_set_names(){global$_conn;if(!mysqli_query($_conn,'SET NAMES UTF8')){exit('字符编码错误'.mysqli_error($_conn));}}/*** _query():执⾏sql语句* @access public* @param string $_sql sql操作语句* @return string返回结果集*/function_query($_sql){global$_conn;if(!$result=mysqli_query($_conn,$_sql)){exit('SQL执⾏失败'.mysqli_error($_conn).mysqli_errno($_conn));}return$result;}/*** _fetch_array():根据sql语句遍历数据库。
完整注册登陆php源码,附带session验证。
完整注册登陆php源码,附带session验证。
1、⾸先先写表单页⾯login.html.<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>⽤户登陆</title></head><!-- 定义输⼊表单样式 --><style type="text/css">html{font-size: 12px;}fieldset{width:200px;margin:0 auto;}legend{font-weight: bold; font-size: 14px;}label{float:left; width:70px; margin-left:10px;}.left{margin-left:80px;}.input{width:150px;}span{color: #666666;}</style><!-- 验证表单是否输⼊ --><script type="text/javascript">function InputCheck(LoginForm){if(ername.value==''){alert('请输⼊⽤户名!');ername.focus();return (false);}if(LoginForm.password.value==''){alert('请输⼊密码!');LoginForm.password.focus();return (false);}}</script><body><div><fieldset><legend>⽤户登陆</legend><form name="LoginForm" method="post" action="login.php" onSubmit="return InputCheck(this)"><p><lable for="username" class="lable">⽤户名:</lable><input id="username" name="username" type="text" class="input" /></p><p><lable for="password" class="lable">密 码:</lable><input id="password" name="password" type="text" class="input" /></p><p><input name="submit" value="提交" type="submit" /> <a href="reg.html">点此注册</a></p></form></fieldset></div></body></html>2、然后写登陆源码。
PHP实现简单用户登录界面
PHP实现简单⽤户登录界⾯⽤PHP实现简单的⽤户登录界⾯,供⼤家参考,具体内容如下⾸先要实现⽤户登录界⾯需要⼀个html登录表单<form action="connet.php" method="POST" >⽤户名:<input type = "text" name = "username"/> <br />密码:<input type = "password" name="password"/> <br />重复密码:<input type = "password" name="repassword"/><br /><input type = "submit" value = "提交"/></form>然后开始按照流程图写PHP代码<?phpif(trim($_POST['password'])!=trim($_POST['repassword'])){exit('两次密码不⼀致,请返回上⼀页');}//$_POST⽤户名和密码$username = $_POST['username'];$password = $_POST['password'];//连接mysql$con = mysqli_connect('localhost','root','');//验证mysql连接是否成功if(mysqli_errno($con)){echo "连接mysql失败:".mysqli_error($con);exit;}//设置数据库字符集mysqli_set_charset($con,'utf8');//查看数据库empmysqli_select_db($con,'emp');//查看表sgbf⽤户名与密码和传输值是否相等$sql = "select *from sgbf where username='$username' and password='$password'";//result必需规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。
运维PHP入门(php登录页+web更新系统)
运维PHP入门(php登录页+web更新系统)1、登录页面# cat login.html<html><title>Login Page</title><br/><span style='font-weight:bold;font-size:30px;color:green;'>Ir Login page</span> <body><form action="handle_login.php" method="post"/><br/><br/>Username <input type="text" name="username"/><br/><br/>Passwor d <input type="password" name="password"/><br/><br/> Verifycode<input type="text" name="imgcode"><img src="code.php"width="200px" height="30px"><br/><br/><input type="submit" name="button" value="Login"><br/><br/></form></body></html>2、验证页面验证页面注意两个地方:数据库需要自己创建,并添加账号和密码信息到数据库中去;还有就是session的调用;# cat handle_login.php<?phpsession_start();//在最顶端,不要有输出$_SESSION['test']=CQF//直接把用户名abc赋予test?><?phpsession_start();#接受提交过来的用户名及密码$username = trim($_POST['username']);//用户名$password = trim($_POST['password']);//密码$imgcode = strtolower($_POST['imgcode']);//接受从登陆输入框提交过来的验证码并转化为小写;$myimagecode = strtolower($_SESSION['thisimagecode']) ;//从session中取得验证码并转化为小写;if($imgcode!=$myimagecode){echo 'Please enter the correct verification code.';exit;}#拿着提交过来的用户名和密码去数据库查找,看是否存在此用户名以及其密码$link=mysql_connect('localhost','root','iha456');mysql_query('set names utf8');$re=mysql_select_db('companysystem',$link);$sql="select *from admin where username = '$username'andpassword='$password' ";$result=mysql_query($sql);$rows=mysql_fetch_assoc($result);if($rows){$SESSION['is_login']=$rows['username'];header("Location: update.php");exit;#echo '<script> alert("Login success");location.href="update.php";</script>;';}else{$is_login='';header("Location: login.html");exit;#echo '<script> alert("Login failure");location.href="login.html";</script>;';}?>3、验证码生成页面注意一个地方,那就是指定的字体,必须在服务器本地有这个字体,而且你还有指定含有的字体的名称,要不然是不会显示验证码的。
thinkphp教程
使用ThinkPHP框架快速搭建网站这一周一直忙于做实验室的网站,基本功能算是完成了。
比较有收获的是大概了解了ThinkPHP框架。
写一些东西留作纪念吧。
如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖。
以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码。
做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼。
所以,在接到做网站的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟以前一样那么累了。
我选择的是PHP的ThinkPHP框架。
说实话,真的蛮不错的。
瞬间觉得Web开发还是蛮有效率的。
超级链接:ThinkPHP中文网按照套路,首先贴一下实验环境:∙ 1. WAMP(集成的那种,最Easy的几乎不需要配置)∙ 2. ZendStudio7.2(中文网址/,里面提供下载,在线注册机以及使用教程)∙ 3. ThinkPHP框架+百度UEditor编辑器插件∙ 4. Win7-64bit操作系统∙ 5. 浏览器(火狐,IE,Chrome),外加火狐FireBug插件用于调试以及偷样式-------------------------------------------------------------华丽分割-------------------------------------------------------------第一步:找网页模板(不会美工,PS,见谅。
)前端页面我找的是一个大学的实验室,这里就不贴了,很普通的那种。
后台直接下载的模板,感觉蛮漂亮的,运行后如下图:第二步:初识百度UEditor插件由于我要做的是实验室的网站。
实验室网站主要内容在如下几个方面:∙介绍实验室的成员∙实验室的项目,成果等∙实验室的新闻以及学术交流信息可见,信息主要偏重于后台的新闻,文章信息的发布,而前台几乎不存在编辑。
所以重点要在后台实现一个方便的文章发布体系。
PHP登录注册实现
ThinkPHP实例用户注册登录留言PHP框架ThinkPHP的一个实例,该实例包括用户的注册、登录以及留言等功能,最值得大家注意的是在存在用户模型的情况下实例化一个用户类的时候使用D方法来实现。
UserActiion.class.php页面<?phpclass UserAction extends Action{public function add(){$user = D("user");$user->create();$result = $user->add();if($result){$this->assign("jumpUrl","__APP__/index/index");$this->success('注册成功!');}else{//echo $user->getError();$this->assign("jumpUrl","__APP__/user/register");$this->error($user->getError());}}public function register(){$this->display();}public function login(){$this->display();}public function checklogin(){$username = $_POST['username'];$passwd = $_POST['passwd'];$user = D("user");//$User->where('id=8')->find();这里的where 语句要注意一下,如果是其他字段的话后面一定要有单引号$userinfo = $user->where("username ='$username'")->find(); if(!empty($userinfo)){if($userinfo['passwd'] == $passwd){Cookie::set('userid',$userinfo['id'],time()+3600*24);Cookie::set('username',$username,time()+3600*24); Cookie::set('lastlogintime',time(),time()+3600*24);$this->assign("jumpUrl","__APP__/index/index");$this->success('登陆成功!');}else{$this->assign("jumpUrl","__APP__/user/login");$this->error('密码出错,请重新输入!');}}else{$this->assign("jumpUrl","__APP__/user/login");$this->error('用户名不存在!');}}public function loginout(){Cookie::delete('username');Cookie::delete('lastlogintime');$this->assign("jumpUrl","__APP__/index/index");$this->success('您已经成功退出,欢迎您的下次登录!');}}IndexAction.class.php页面<?php// 本类由系统自动生成,仅供测试用途class IndexAction extends Action{public function insert() {$content = new ContentModel();$result = $content->create();if(!$result){$this->assign("jumpUrl","__URL__/index");$this->error($content->getError());//如果创建失败,表示验证没有通过,输出错误信息}else{//验证通过,进行其他操作$content->userid=Cookie::get('userid');$content->add();$this->assign("jumpUrl","__URL__/index");$this->success('添加成功!');}}// 数据查询操作public function index() {$content = new ContentModel();$list = $content->findAll();//用户的cookie$username = Cookie::get('username'); $lastlogintime = Cookie::get('lastlogintime'); $this->assign('list',$list);$this->assign('title','我的首页');$this->assign('username',$username);$this->assign('lastlogintime',$lastlogintime); $this->display();}// 删除操作public function delete(){$content = new ContentModel();$id = $_GET['id'];if($content->where("id=$id")->delete()){$this->assign("jumpUrl","__URL__/index");$this->success('删除成功!');}else{$this->assign("jumpUrl","__URL__/index");$this->error('删除失败!');}}// 编辑操作public function edit(){$content = new ContentModel();$id = $_GET['id'];if($id != ''){//$data = $content->select($id);$data = $content->where("id=$id")->select();if(!empty($data)){$this->assign('data',$data);}else{echo "数据为空!";}}$this->assign('title','编辑页面');$this->display();}// 更新操作public function update(){$content = new ContentModel();//直接使用create(),自动会帮你进行数据的传值/*$content->create();$content->save(); // 根据条件保存修改的数据echo "更新数据成功!";*/// 使用post 传值过来,进行更新$id = $_POST['id'];if($id != ''){$data['id'] = $id;$data['title'] = $_POST['title'];$data['content'] = $_POST['content'];if($content->save($data))// 根据条件保存修改的数据{$this->assign("jumpUrl","__URL__/index"); $this->success('更新数据成功!');}else{$this->assign("jumpUrl","__URL__/index"); $this->success('更新数据失败!');}}else{echo "保存数据失败!";}}}?>ContentModel.class.php页面<?phpclass ContentModel extends Model{/** 自动验证* array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)*/protected $_validate = array(array('title','require','标题必须填写!'),array('content','require','内容必须填写!'),);/** 自动填充* array(填充字段,填充内容,填充条件,附加规则)*/protected $_auto = array(array('addtime','time',1,'function'),);}?>UserModel.class.php页面<?phpclass UserModel extends Model{protected $_validate = array(array('username','','帐号名称已经存在!',0,'unique',1),);}?>要注意的问题,使用自动验证的时候实例化时要用 $user = D("user") 而不能用 $user = M("user"),用M这种方法会报错,D函数用于实例化Model,M函数用户实例化一个没有模型的文件。
php会员注册登入系统开发代码
因为全棋同学的系统需求,虽然会员机制并不难,他一定也很快就学会了,而我还是写此教学来引导他,帮助他系统扩展的更快,相信他的系统在未来也一定会很有用的! 而这个教学主要是说明session应用在会员机制上,而教学的程序码还是有些地方有没有考虑的很周详,安全上还是会有瑕疵,希望大家见谅。
以下为资料表的栏位资料:以下为会员系统示意图:(1) 首页- 登入页面(index.php)<!-- 设定网页编码为UTF-8 --><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><form name="form" method="post" action="connect.php">账号:<input type="text" name="id" /> <br>密码:<input type="password" name="pw" /> <br><input type="submit" name="button" value="登入" /><a href="register.php">申请账号</a></form>(2) php连结MySQL数据库语法(mysql_connect.inc.php)<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?php//数据库设定//数据库位置$db_server = "localhost";//数据库名称$db_name = "mydb";//数据库管理者账号$db_user = "root";//数据库管理者密码$db_passwd = "1234";//对数据库连线if(!@mysql_connect($db_server, $db_user, $db_passwd))die("无法对数据库连线");//数据库连线采UTF8mysql_query("SET NAMES utf8");//选择数据库if(!@mysql_select_db($db_name))die("无法使用数据库");>(3) 会员ID、PW与MySQL数据库作认证(connect.php)<?php session_start(); ?><!--上方语法为启用session,此语法要放在网页最前方--><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?php//连接数据库//只要此页面上有用到连接MySQL就要include它include("mysql_connect.inc.php");$id = $_POST['id'];$pw = $_POST['pw'];//搜寻数据库资料$sql = "SELECT * FROM member_table where username = '$id'";$result = mysql_query($sql);$row = @mysql_fetch_row($result);//判断账号与密码是否为空白//以及MySQL数据库里是否有这个会员if($id != null && $pw != null && $row[1] == $id && $row[2] == $pw){//将账号写入session,方便验证使用者身份$_SESSION['username'] = $id;echo '登入成功!';echo '<meta http-equiv=REFRESH CONTENT=1;url=member.php>';}else{echo '登入失败!';echo '<meta http-equiv=REFRESH CONTENT=1;url=index.php>';}>(4) 会员登入成功后页面- 此页面有「新增」、「修改」、「删除」与「登出」的连结并且会显示出所有会员资料(member.php)<?php session_start(); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?phpinclude("mysql_connect.inc.php");echo '<a href="logout.php">退出</a> <br><br>';//此判断为判定观看此页有没有权限//说不定是路人或不相关的使用者//因此要给予排除if($_SESSION['username'] != null){echo '<a href="register.php">新增</a> ';echo '<a href="update.php">修改</a> ';echo '<a href="delete.php">删除</a> <br><br>';//将数据库里的所有会员资料显示在画面上$sql = "SELECT * FROM member_table";$result = mysql_query($sql);while($row = mysql_fetch_row($result)){echo "$row[0] - 名字(账号):$row[1], " ."电话:$row[3], 地址:$row[4], 备注:$row[5]<br>";}}else{echo '您无权限观看此页面!';echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';}>(5) 登出- 洗掉登入使用者之session(logout.php)<?php session_start(); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?php//将session清空unset($_SESSION['username']);echo '登出中......';echo '<meta http-equiv=REFRESH CONTENT=1;url=index.php>';>(6) 加入(注册)会员- 「填写」会员资料(register.php)<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><form name="form" method="post" action="register_finish.php">账号:<input type="text" name="id" /> <br>密码:<input type="password" name="pw" /> <br>再一次输入密码:<input type="password" name="pw2" /> <br>电话:<input type="text" name="telephone" /> <br>地址:<input type="text" name="address" /> <br>备注:<textarea name="other" cols="45" rows="5"></textarea> <br><input type="submit" name="button" value="确定" /></form>(7) 加入(注册)会员- 「新增」会员资料进MySQL数据库(register_finish.php) <?php session_start(); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?phpinclude("mysql_connect.inc.php");$id = $_POST['id'];$pw = $_POST['pw'];$pw2 = $_POST['pw2'];$telephone = $_POST['telephone'];$address = $_POST['address'];$other = $_POST['other'];//判断账号密码是否为空值//确认密码输入的正确性if($id != null && $pw != null && $pw2 != null && $pw == $pw2){//新增资料进数据库语法$sql = "insert into member_table (username, password, telephone, address, other) values ('$id', '$pw', '$telephone', '$address', '$other')";if(mysql_query($sql)){echo '新增成功!';echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';}else{echo '新增失败!';echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';}}else{echo '您无权限观看此页面!';echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';}>(8) 修改会员资料- 「填写」要修改之会员资料(update.php)<?php session_start(); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?phpinclude("mysql_connect.inc.php");if($_SESSION['username'] != null){//将$_SESSION['username']丢给$id//这样在下SQL语法时才可以给搜寻的值$id = $_SESSION['username'];//若以下$id直接用$_SESSION['username']将无法使用$sql = "SELECT * FROM member_table where username='$id'";$result = mysql_query($sql);$row = mysql_fetch_row($result);echo "<form name=\"form\" method=\"post\" action=\"update_finish.php\">";echo "账号:<input type=\"text\" name=\"id\" value=\"$row[1]\" />(此项目无法修改) <br>";echo "密码:<input type=\"password\" name=\"pw\" value=\"$row[2]\" /> <br>";echo "再一次输入密码:<input type=\"password\" name=\"pw2\" value=\"$row[2]\" /> <br>";echo "电话:<input type=\"text\" name=\"telephone\" value=\"$row[3]\" /> <br>";echo "地址:<input type=\"text\" name=\"address\" value=\"$row[4]\" /> <br>";echo "备注:<textarea name=\"other\" cols=\"45\" rows=\"5\">$row[5]</textarea> <br>";echo "<input type=\"submit\" name=\"button\" value=\"确定\" />";echo "</form>";}else{echo '您无权限观看此页面!';echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';}>(9) 修改会员资料- 「更新」要修改之会员资料进MySQL数据库(update_finish.php)<?php session_start(); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?phpinclude("mysql_connect.inc.php");$id = $_POST['id'];$pw = $_POST['pw'];$pw2 = $_POST['pw2'];$telephone = $_POST['telephone'];$address = $_POST['address'];$other = $_POST['other'];//红色字体为判断密码是否填写正确if($_SESSION['username'] != null && $pw != null && $pw2 != null && $pw == $pw2){$id = $_SESSION['username'];//更新数据库资料语法$sql = "update member_table set password=$pw, telephone=$telephone, address=$address, other=$other where username='$id'";if(mysql_query($sql)){echo '修改成功!';}else{echo '修改失败!';echo '<meta http-equiv=REFRESH CONTENT=2;url=member.php>';}}else{echo '您无权限观看此页面!';echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';}>(10) 删除会员资料- 「填写」要删除之会员账号(delete.php)<?php session_start(); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?phpif($_SESSION['username'] != null){echo "<form name=\"form\" method=\"post\" action=\"delete_finish.php\">";echo "要删除的账号:<input type=\"text\" name=\"id\" /> <br>";echo "<input type=\"submit\" name=\"button\" value=\"删除\" />";echo "</form>";}else{echo '您无权限观看此页面!';echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';}>(11) 删除会员资料- 对MySQL数据库进行「删除」会员资料(delete_finish.php) <?php session_start(); ?><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><?phpinclude("mysql_connect.inc.php");$id = $_POST['id'];if($_SESSION['username'] != null){//删除数据库资料语法$sql = "delete from member_table where username='$id'";if(mysql_query($sql)){echo '删除成功!';}else{echo '删除失败!';echo '<meta http-equiv=REFRESH CONTENT=2;url=member.php>';}}else{echo '您无权限观看此页面!';echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';}>。
thinkphp 登录规则集 -回复
thinkphp 登录规则集-回复ThinkPHP登录规则集,是指在使用ThinkPHP框架进行开发时,遵循的登录相关的规则。
这些规则旨在保证系统的安全性,用户认证以及授权管理。
本文将详细介绍ThinkPHP登录规则集的实施步骤,以及相关的实践经验。
一、设计登录数据库表结构在ThinkPHP中,我们首先需要设计登录相关的数据库表结构。
一般而言,我们需要创建一个名为"users"的表,用于存储用户的登录信息。
表结构可以包括用户ID、用户名、密码等字段。
二、创建用户模型接下来,我们需要创建一个用户模型UserModel,用于操作数据库中的用户表。
这个模型将负责用户的注册、登录、密码加密等功能。
三、实现注册功能要实现注册功能,我们需要在控制器中创建一个对应的方法,并在该方法中处理注册逻辑。
首先,我们需要接收用户提交的注册信息,然后进行表单验证。
验证通过后,将用户信息写入数据库中。
在写入数据库之前,我们还需要对用户密码进行加密处理加强安全性。
四、实现登录功能登录功能的实现可以分为两步:显示登录页面和处理登录逻辑。
首先,我们需要在控制器中创建一个对应的方法,用于展示登录页面。
在页面上,我们需要提供用户名和密码的输入框,并附上相应的验证规则。
用户输入完成后,我们需要在控制器中创建另一个方法,用于处理登录逻辑。
在该方法中,我们需要验证用户输入的用户名和密码是否匹配数据库中的记录。
如果匹配成功,则认为登录成功;否则,认为登录失败,并给出相应的提示信息。
五、实现用户认证在ThinkPHP中,我们可以使用内置的auth认证插件来实现用户认证功能。
首先,我们需要在配置文件中进行相关配置,包括表名、用户ID字段、用户名字段、密码字段等。
然后,我们就可以在需要进行用户认证的地方调用auth插件提供的方法。
六、实现授权管理除了用户认证外,我们还需要实现授权管理,以控制用户对系统资源的访问权限。
在ThinkPHP中,可以使用基于角色的权限控制插件来管理权限。
thinkphp框架下实现登录、注册、找回密码功能
thinkphp框架下实现登录、注册、找回密码功能本⽂实例为⼤家分享了thinkphp框架下使⽤ajax表单提交的登录、注册、找密码的实现⽅法,以及注册后的⽤户需后台审核。
user表的字段为id、num、password、name、email、addtime、status具体代码如下<?phpnamespace Home\Controller;use Think\Controller;class LoginController extends Controller {//处理登录public function signin(){if(IS_GET){$this->display();}if(IS_POST){/* 调⽤登录接⼝登录 */$User = M('user') ;//I⽅法接收页⾯传递来的值$num = I('num') ;$password = I('password') ;//查找user表中num等于$num的值$datanum = $User->where(array('num'=>$num))->find();//判断$datanum的值if ($datanum){if (md5($password) === $datanum['password']) {if ($datanum['status'] == 0) {$this->error('⽤户处于未审核状态,请联系管理员');}elseif($datanum['status'] == 2){$this->error('⽤户处于禁⽤状态,请联系管理员');}else{$this->autoLogin($datanum) ; //调⽤私有⽅法⾃动登录.$uid = $datanum['id'];if($_SESSION['user_auth']['uid'] && $_SESSION['user_auth']['role'] == 'user'){$this->success('登录成功!', U('Index/index'));}else{$this->error('存储错误.');}}}else{$this->error('密码填写不正确,请重新填写');exit();}}else{$this->error('⽤户不存在,请注册',U('signup'));}}}public function autoLogin($user){/* 记录登录SESSION */$auth = array('uid' => $user['id'],'num' => $user['num'],'role' => 'user' , //记录⽤户类型);session('user_auth', $auth);session('user_auth_sign', data_auth_sign($auth));}/** ⽤户注册*/public function signup(){if(is_user_login()){$this->redirect('Index/index');}if(IS_GET){//注册页⾯$this->display();}if(IS_POST){//判断⽤户$data['num'] = I('num') ;$User = M('user') ;$datanum = $User->where($data)->find();if ($datanum){$this->success('您已经注册过,请直接登录',U('signin'));}else{$data['password'] = md5(I('password'));$data['name'] = I('name');$data['email'] = I('email');$data['addtime'] = time();$uid = $User->add($data);if($uid)$this->success('注册成功',U('signin')) ;else$this->error('注册失败') ;}}}public function logout(){if(is_user_login()){$User = M('user') ;session('user_auth', null);session('user_auth_sign', null);session('[destroy]');$this->success('登出成功!', U('signin'));} else {$this->redirect('signin');}}//忘记密码public function wjpas(){if(IS_GET){$this->display();}if(IS_POST){$User = M('user') ;$num = I('num') ;$data['password'] = md5(I('password')) ;$email = I('email') ;$datanum = $User->where(array('num'=>$num))->find();if ($datanum){if ($email === $datanum['email']) {$User->where(array('num'=>$num))->save($data); // 根据条件更新记录$this->success('密码修改成功',U('signin')) ;}else{$this->error('邮箱填写不正确,请重新填写');exit();}}else{$this->error('⽤户不存在,请注册',U('signup'));}}}}>以上就是本⽂的全部内容,希望对⼤家学习php程序设计有所帮助。
thinkphp实现注册登录功能
thinkphp实现注册登录功能创建数据库 :SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for think_users-- ----------------------------DROP TABLE IF EXISTS `think_users`;CREATE TABLE `think_users` (`userid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id',`companyid` mediumint(8) unsigned NOT NULL COMMENT '公司id',`pid` mediumint(8) NOT NULL COMMENT '父id',`username` char(20) NOT NULL DEFAULT '' COMMENT '用户名',`password` char(32) NOT NULL DEFAULT '' COMMENT '密码', `nickname` char(20) NOT NULL DEFAULT '' COMMENT '昵称', `regdate` int(10) unsigned NOT NULL COMMENT '注册时间', `lastdate` int(10) unsigned NOT NULL COMMENT '最后一次登录时间',`regip` char(15) NOT NULL DEFAULT '' COMMENT '注册ip', `lastip` char(15) NOT NULL DEFAULT '' COMMENT '最后一次登录ip',`loginnum` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '登录次数',`email` char(32) NOT NULL DEFAULT '' COMMENT '邮箱',`mobile` char(11) NOT NULL DEFAULT '' COMMENT '手机号码',`islock` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否锁定',`vip` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否会员',`overduedate` int(10) unsigned NOT NULL COMMENT '账户过期时间',`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态-用于软删除',PRIMARY KEY (`userid`),UNIQUE KEY `username` (`username`) USING BTREE,KEY `email` (`email`) USING BTREE) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;创建模型(用于自动验证, 自动完成) :namespace Home\Model;use Think\Model;class UsersModel extends Model {/*** 自动验证* self::EXISTS_VALIDATE 或者0 存在字段就验证(默认)* self::MUST_VALIDATE 或者1 必须验证* self::VALUE_VALIDATE或者2 值不为空的时候验证*/protected $_validate = array(array('nickname', 'require', '昵称不能为空!'), //默认情况下用正则进行验证array('username', 'require', '用户名不能为空!'), //默认情况下用正则进行验证array('username', '', '该用户名已被注册!', 0, 'unique', 1), // 在新增的时候验证name字段是否唯一array('email', '', '该邮箱已被占用', 0, 'unique', 1), // 新增的时候email字段是否唯一array('mobile', '', '该手机号码已被占用', 0, 'unique', 1), // 新增的时候mobile字段是否唯一// 正则验证密码 [需包含字母数字以及@*#中的一种,长度为6-22位]array('password', '/^([a-zA-Z0-9@*#]{6,22})$/', '密码格式不正确,请重新输入!', 0),array('repassword', 'password', '确认密码不正确', 0, 'confirm'), // 验证确认密码是否和密码一致array('email', 'email', '邮箱格式不正确'), // 内置正则验证邮箱格式array('mobile', '/^1[34578]\d{9}$/', '手机号码格式不正确', 0), // 正则表达式验证手机号码array('verify', 'verify_check', '验证码错误', 0, 'function'), // 判断验证码是否正确//array('agree', 'is_agree', '请先同意网站安全协议!', 1, 'callback'), // 判断是否勾选网站安全协议array('agree', 'require', '请先同意网站安全协议!', 1), // 判断是否勾选网站安全协议);/*** 自动完成*/protected $_auto = array (array('password', 'md5', 3, 'function') , // 对password字段在新增和编辑的时候使md5函数处理array('regdate', 'time', 1, 'function'), // 对regdate字段在新增的时候写入当前时间戳array('regip', 'get_client_ip', 1, 'function'), // 对regip字段在新增的时候写入当前注册ip地址);/*** 判断是否同意网站安全管理协议* @return bool*/protected function is_agree(){// 获取POST数据$agree = I('post.agree', 0, 'intval');// 验证if ($agree) {return true;} else {return false;}}登录注册 :namespace Home\Controller;use Think\Controller;/*** Class LoginController* @package Home\Controller*/class LoginController extends Controller {/*** 用户登录*/public function login(){// 判断提交方式if (IS_POST) {// 实例化Login对象$login = D('login');// 自动验证创建数据集if (!$data = $login->create()) {// 防止输出中文乱码header("Content-type: text/html; charset=utf-8");exit($login->getError());}// 组合查询条件$where = array();$where['username'] = $data['username'];$result = $login->where($where)->field('userid,username,nickname,pass word,lastdate,lastip')->find();// 验证用户名对比密码if ($result && $result['password'] == $result['password']) { // 存储sessionsession('uid', $result['userid']); // 当前用户idsession('nickname', $result['nickname']); // 当前用户昵称session('username', $result['username']); // 当前用户名session('lastdate', $result['lastdate']); // 上一次登录时间session('lastip', $result['lastip']); // 上一次登录ip// 更新用户登录信息$where['userid'] = session('uid');M('users')->where($where)->setInc('loginnum'); // 登录次数加 1M('users')->where($where)->save($data); // 更新登录时间和登录ip$this->success('登录成功,正跳转至系统首页...', U('Index/index'));} else {$this->error('登录失败,用户名或密码不正确!');}} else {$this->display();}}/*** 用户注册*/public function register(){// 判断提交方式做不同处理if (IS_POST) {// 实例化User对象$user = D('users');// 自动验证创建数据集if (!$data = $user->create()) {// 防止输出中文乱码header("Content-type: text/html; charset=utf-8");exit($user->getError());}//插入数据库if ($id = $user->add($data)) {/* 直接注册用户为超级管理员,子用户采用邀请注册的模式,遂设置公司id等于注册用户id,便于管理公司用户*/$user->where("userid = $id")->setField('companyid', $id); $this->success('注册成功', U('Index/index'), 2);} else {$this->error('注册失败');}} else {$this->display();}}/*** 用户注销*/public function logout(){// 清楚所有sessionsession(null);redirect(U('Login/login'), 2, '正在退出登录...');}/*** 验证码*/public function verify(){// 实例化Verify对象$verify = new \Think\Verify();// 配置验证码参数$verify->fontSize = 14; // 验证码字体大小$verify->length = 4; // 验证码位数$verify->imageH = 34; // 验证码高度$verify->useImgBg = true; // 开启验证码背景$verify->useNoise = false; // 关闭验证码干扰杂点$verify->entry();}}登录模版 :<form action="__SELF__" method="post"><div class="form-group has-feedback"><input type="text" name="username" class="form-control" placeholder="用户名" /><span class="glyphicon glyphicon-user form-control-feedback"></span></div><div class="form-group has-feedback"><input type="password" name="password" class="form-control" placeholder="密码" /><span class="glyphicon glyphicon-lock form-control-feedback"></span></div><div class="form-group has-feedback"><input type="text" name="verify" class="form-control" placeholder="验证码" style="width:200px;" /><span class="glyphicon glyphicon-qrcode form-control-feedback" style="right:120px;"></span><img class="verify" src="{:U(verify)}" alt="验证码" onClick="this.src=this.src+'?'+Math.random()" /></div><div class="row"><div class="col-xs-8"><div class="checkbox icheck"><label><input type="checkbox" name="remember" value="1"> 记住我</label></div></div><!-- /.col --><div class="col-xs-4"><button type="submit" class="btn btn-primary btn-block btn-flat">登录</button></div><!-- /.col --></div></form>注册模版 :<div class="register-box-body"><p class="login-box-msg">注册一个新用户</p><form action="__SELF__" method="post"><div class="form-group has-feedback"><input type="text" name="nickname" class="form-control" placeholder="昵称" /><span class="glyphicon glyphicon-leaf form-control-feedback"></span></div><div class="form-group has-feedback"><input type="text" name="username" class="form-control" placeholder="用户名" /><span class="glyphicon glyphicon-user form-control-feedback"></span></div><div class="form-group has-feedback"><input type="password" name="password" class="form-control" placeholder="密码" /><span class="glyphicon glyphicon-credit-card form-control-feedback"></span></div><div class="form-group has-feedback"><input type="password" name="repassword" class="form-control" placeholder="确认密码" /><span class="glyphicon glyphicon-check form-control-feedback"></span></div><div class="form-group has-feedback"><input type="email" name="email" class="form-control" placeholder="邮箱" /><span class="glyphicon glyphicon-envelope form-control-feedback"></span></div><div class="form-group has-feedback"><input type="text" name="mobile" class="form-control" placeholder="手机号码" /><span class="glyphicon glyphicon-phone form-control-feedback"></span></div><div class="form-group has-feedback"><input type="text" name="verify" class="form-control" placeholder="验证码" style="width:200px;" /><span class="glyphicon glyphicon-qrcode form-control-feedback" style="right:120px;"></span><img class="verify" src="{:U(verify)}" alt="验证码"onClick="this.src=this.src+'?'+Math.random()" /></div><div class="row"><div class="col-xs-8"><div class="checkbox icheck"><label><input type="checkbox" name="agree" value="1"> 我同意<a href="#">网站安全协议</a></label></div></div><!-- /.col --><div class="col-xs-4"><button type="submit" class="btn btn-primary btn-block btn-flat">点击注册</button></div><!-- /.col --></div></form><a href="login.html" class="text-center">我已经注册了账户</a></div>。
