电商网站

电商网站

登录页面

<?php namespace Admin\Model; use Think\Model; //后台用户登录 class adminModel extends Model { //自动验证 protected $_validate = array( array('username','/^\w{4,10}$/','用户名不合法(4~10位,英文、数字、下划线)',self::MUST_VALIDATE), //self::MUST_VALIDATE的值为1 array('password','/^\w{6,12}$/','密码不合法(6~12位,英文、数字、下划线)',self::MUST_VALIDATE), ); //判断管理员用户名和密码 public function checkLogin(){ $username = $this->data['username']; //表单提交的用户名 $password = $this->data['password']; //表单提交的密码 //根据用户名查询密码 $data = $this->field('password,salt')->where(array('username' => $username))->find(); //判断密码 if($data){ return $data['password'] == $this->password($password,$data['salt']); } return false; } //密码加密函数 private function password($password,$salt){ return md5(md5($password).$salt); } } 验证页面 <?php namespace Admin\Model; use Think\Model; class CategoryModel extends Model { protected $insertFields = 'name,pid'; protected $updateFields = 'name,pid'; //自动验证 protected $_validate = array( array('pid','require','父级分类不能为空',self::MUST_VALIDATE), array('name','require','分类名不能为空',self::MUST_VALIDATE), ); //自动完成 protected $_auto = array( array('pid','max',self::MODEL_BOTH,'function',0), ); //查询分类数据 private function getData(){ static $data = null; //缓存查询结果 if(!$data) $data = $this->field('id,name,pid')->select(); return $data; } //获得分类列表 public function getList(){ category_list($this->getData(),$data); return $data; } //查找所有子孙分类 public function getSubIds($id){ $data = array($id); //将ID自身放入数组头部 category_child($this->getData(),$data,$id); return $data; } } 商品页面 <?php namespace Admin\Model; use Think\Model; class GoodsModel extends Model { //表单字段过滤 protected $insertFields = 'sn,name,price,stock,on_sale,recommend'; protected $updateFields = 'sn,name,price,stock,on_sale,recommend'; //自动验证 protected $_validate = array( array('name','1,40','商品名称不合法(1-40个字符)',self::MUST_VALIDATE,'length'), array('sn','/^[0-9A-Za-z]{1,10}$/','商品编号不合法(1-10个字符)',self::MUST_VALIDATE), array('on_sale',array('yes','no'),'on_sale字段填写错误',self::MUST_VALIDATE,'in'), array('recommend',array('yes','no'),'recommend字段填写错误',self::MUST_VALIDATE,'in'), array('price','0.01,100000','商品价格输入不合法(0.01~100000)',self::MUST_VALIDATE,'between'), array('stock','0,900000','商品库存输入不合法',self::MUST_VALIDATE,'between'), ); /** * 商品列表 * @param string $type 数据用途(商品列表或回收站列表) * @param array|int $cids 分类ID数组 * @param int $p 当前页码 * @return array 查询结果 */ public function getList($type='goods',$cids=0,$p=0){ //准备查询条件 $order = 'g.id desc'; //排序条件 $field = 'c.name as category_name,g.category_id,g.id,g.name,g.on_sale,g.stock,g.recommend'; if($type=='goods'){ //商品列表页取数据时 $where = array('g.recycle' => 'no'); }elseif($type=='recycle'){ //商品回收站取数据时 $where = array('g.recycle' => 'yes'); } //cids=0查找未分类商品,cid>0查找分类ID数组商品,cid<0查找全部商品 if($cids == 0){ //查找未分类的商品 $where['g.category_id'] = 0; }elseif($cids > 0){ //查找分类ID数组 $where['g.category_id'] = array('in',$cids); } //准备分页查询 $pagesize = C('USER_CONFIG.pagesize'); //每页显示商品数 $count = $this->alias('g')->where($where)->count(); //获取符合条件的商品总数 $Page = new \Think\Page($count,$pagesize); //实例化分页类 $this->_customPage($Page); //定制分页类样式 //查询数据 $data = $this->alias('g')->join('__CATEGORY__ AS c ON c.id=g.category_id','LEFT')->field($field) ->where($where)->order($order)->page($p,$pagesize)->select(); //返回结果 return array( 'data' => $data, //商品列表数组 'pagelist' => $Page->show(), //分页链接HTML ); } //定制分页类样式 private function _customPage($Page){ $Page->lastSuffix = false; $Page->setConfig('prev','上一页'); $Page->setConfig('next','下一页'); $Page->setConfig('first','首页'); $Page->setConfig('last','尾页'); } //根据$where条件查询商品数据 public function getGoods($where){ //定义需要的字段 $field = 'id,category_id,sn,name,price,thumb,stock,on_sale,recommend,desc'; return $this->field($field)->where($where)->find(); } //根据$where条件删除商品预览图文件 public function delThumbFile($where){ //取出原图文件名 $thumb = $this->where($where)->getField('thumb'); if(!$thumb) return ; //商品图片不存在时直接返回 $path = "./Public/Uploads/big/$thumb"; //准备大图路径 if(is_file($path)) unlink($path); //删除大图文件 $path = "./Public/Uploads/small/$thumb"; //准备小图路径 if(is_file($path)) unlink($path); //删除小图文件 //会残留空目录,可以通过其它方式定期清理 } //上传预览图文件并生成缩略图 //返回数组(flag=是否执行成功,error=失败时的错误信息,path=成功时的保存路径) public function uploadThumb($upfile){ //准备上传目录 $file['temp'] = './Public/Uploads/temp/'; //准备临时目录 file_exists($file['temp']) or mkdir($file['temp'],0777,true); //自动创建临时目录 //上传文件 $Upload = new \Think\Upload(array( 'exts' => array('jpg','jpeg','png','gif'), //允许的文件后缀 'rootPath' => $file['temp'], //文件保存路径 'autoSub' => false, //不生成子目录 )); if(false===($rst = $Upload->uploadOne($_FILES[$upfile]))){ //上传失败时,返回错误信息 return array('flag'=>false,'error'=>$Upload->getError()); } //准备生成缩略图 $file['name'] = $rst['savename']; //文件名 $file['save'] = date('Y-m/d/'); //子目录 $file['path1'] = './Public/Uploads/big/'.$file['save']; //大图路径 $file['path2'] = './Public/Uploads/small/'.$file['save']; //小图路径 //创建保存目录 file_exists($file['path1']) or mkdir($file['path1'],0777,true); file_exists($file['path2']) or mkdir($file['path2'],0777,true); //生成缩略图 $Image = new \Think\Image(); //实例化图像处理类 $Image->open($file['temp'].$file['name']); //打开文件 $Image->thumb(350,300,2)->save($file['path1'].$file['name']);//保存大图 $Image->open($file['temp'].$file['name']); //再次打开文件 $Image->thumb(220,220,2)->save($file['path2'].$file['name']);//保存小图 unlink($file['temp'].$file['name']); //删除临时文件 //返回文件路径 return array('flag'=>true,'path'=>$file['save'].$file['name']); } //插入数据前置操作 protected function _before_insert(&$data, $option){ $data['recycle'] = 'no'; //新商品是未删除的 $data['add_time'] = date('Y-m-d H:i:s'); //新商品的添加时间 $data['price'] = (float)$data['price']; //商品价格为浮点型 } //更新数据前置操作 protected function _before_update(&$data, $option){ $data['price'] = (float)$data['price']; //商品价格为浮点型 } } 数据页面 <?php namespace Admin\Model; use Think\Model; class UserModel extends Model { //获得会员列表 public function getList(){ $field = 'id,username,phone,email'; $where = array(); $order = 'id desc'; //查询数据 $count = $this->where($where)->count(); $Page = new \Think\Page($count,C('USER_CONFIG.pagesize')); $this->_customPage($Page); //定制分页类样式 $limit = $Page->firstRow.','.$Page->listRows; //取得数据 return array( 'list' => $this->field($field)->where($where)->order($order)->limit($limit)->select(), 'page' => $Page->show(), ); } //定制分页类样式 private function _customPage($Page){ $Page->lastSuffix = false; $Page->setConfig('prev','上一页'); $Page->setConfig('next','下一页'); $Page->setConfig('first','首页'); $Page->setConfig('last','尾页'); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值