日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TP笔记5、模型 文件上传 分页 会话技术与验证码

發(fā)布時間:2023/12/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TP笔记5、模型 文件上传 分页 会话技术与验证码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 模型

1.1 模型中的事務(wù)處理

public function test13(){$model=D('Goods');//開啟事務(wù)$model->startTrans();$res1=$model->where('goods_id=4')->save(array('goods_name'=>'testAgain'));$res2=$model->where('goods_id=5')->save(array('goods_name'=>'testAgain'));if($res1!==false && $res2!==false){$model->commit();//提交事務(wù)}else{$model->rollback();//事務(wù)回滾}}

1.2 TP的連貫操作

  • 格式:模型對象->連貫方法->curd方法
public function test14(){$model=D('Goods');//where、field、alias、order、limit//field:指定需要的字段信息$model->field('goods_id,goods_name')->select();echo 'field:'.$model->getLastSql().'<hr>';//elias:指定表的別名$model->alias('a')->field('goods_id,goods_name')->where('a.goods_id>5')->select();echo 'elias:'.$model->getLastSql().'<hr>';//order:指定排序方式$model->alias('a')->order('goods_id desc')->field('goods_id,goods_name')->where('a.goods_id>5')->select();echo 'order:'.$model->getLastSql().'<hr>';//limit:限制條數(shù)$model->alias('a')->order('goods_id desc')->limit(2,3)->field('goods_id,goods_name')->where('a.goods_id>5')->select();echo 'limit:'.$model->getLastSql().'<hr>';}

1.3 連表查詢

使用join方法(連接方式、指定數(shù)據(jù)表、連接字段)

public function test15(){//join方法實(shí)現(xiàn)連表查詢//join(連接方式、指定數(shù)據(jù)表、鏈接字段)$data=M('Stu')->alias('a')->field('a.*,b.class_name,b.class_room')->join('left join shop_class b on a.class_id=b.stu_id')->select();dump($data);}

1.4 TP使用原生SQL語句

  • query:針對查詢操作(select類型的SQL語句)。返回結(jié)果集
  • execute:針對寫入操作(添加、修改、刪除)。返回受影響的行數(shù)
  • public function test16(){$model=M();$data=$model->query("select * from shop_stu");dump($data);$res=$model->execute("insert into shop_stu value(null,1,'吉喆R.I.P.')");dump($res);}

    1.5 模型中的鉤子函數(shù)

    • 數(shù)據(jù)操作(寫入、刪除、修改)時會自動觸發(fā)鉤子函數(shù)。
    • 鉤子函數(shù)分前置和后置
    • 前置在操作前執(zhí)行,后置即在操作后執(zhí)行
    操作前置后置
    寫入before_insertafter_insert
    修改before_updatetafter_update
    刪除before_deleteafter_delete
    在IndexController.php中寫入:
    public function test17(){$model=D('Goods');$res=$model->add(array('goods_name'=>'testNike'));}
    在GoodsModel.php中寫入:
    //數(shù)據(jù)寫入的前置鉤子函數(shù)public function _before_insert(&$data,$options){echo '_before_insert'.'<hr>';dump($data);dump($options);}//數(shù)據(jù)寫入的后置鉤子函數(shù)public function _after_insert($data,$options){echo '_after_insert'.'<hr>';dump($data);dump($options);}

    2 TP文件上傳

    • 源碼地址:ThinkPHP\Library\Think\Upload.class.php
    在add.html中寫入:
    <div class="formbody"><form action="" method="post" enctype="multipart/form-data"><ul class="forminfo"><li><label>商品名稱<input name="name" type="text" class="dfinput" /><i>標(biāo)題不能超30個字符</i></label></li><li><label>圖片價格<input name="goods_price" type="text" class="dfinput" /></label></li><li><label>圖片地址<input name="pic" type="file" class="dfinput" value="jklj"/></label></li><li><label>內(nèi)容<textarea name="body" cols="" rows="" class="textinput" ></textarea></label></li><li><label>&nbsp;<input name="submit" type="submit" class="btn" value="保存"/></label></li></ul></form> </div>
    在GoodsController.php中寫入:
    public function add(){if(IS_GET){$this->display();}else{//post表單提交$model=D('Goods');//定義自動完成規(guī)則$auto=array(array('addtime','time',1,'function'));$data=$model->auto($auto)->create();//$this->display();if(!$data){//說明目前有數(shù)據(jù)格式不滿足要求//獲取錯誤信息$this->error(($model->getError()));}$res=$model->add($data);if(!$res){//寫入失敗$this->error($model->getError());}$this->success('寫入數(shù)據(jù)成功');}}
    在GoodsModel.php中寫入:
    //數(shù)據(jù)寫入的前置鉤子函數(shù)public function _before_insert(&$data,$options){//實(shí)現(xiàn)文件上傳功能//1、實(shí)例化對象$config=array('exts'=>array('jpg','gif'),//設(shè)置上傳文件后綴限制);$upload=new \Think\Upload($config);//2、使用對象調(diào)用方法實(shí)現(xiàn)上傳功能//關(guān)于文件上傳根目錄需要手動創(chuàng)建(在項(xiàng)目根目錄創(chuàng)建Uploads目錄)$info=$upload->uploadOne($_FILES['pic']);if(!$info){//說明文件上傳失敗$this->error=$upload->getError();return false;}//將上傳后的文件信息保存到$data中$data['goods_img']='Uploads/'.$info['savepath'].$info['savename'];}
    • 測試:
  • 在add.html寫入數(shù)據(jù)

  • 提交打印出信息

  • 數(shù)據(jù)表數(shù)據(jù)添加成功

  • 圖片也保存成功

  • 3 TP分頁功能

    3.1 分頁前提

    在GoodsController.php中寫入:
    public function index(){$model=D('Goods');//獲取所有商品信息$data=$model->select();$this->assign('data',$data);$this->display();}
    在Admin\View\Goods\index.html中寫入:
    <table class="table"><thead><tr><th>編號</th><th>商品名稱</th><th>圖片信息</th><th>發(fā)布時間</th><th>內(nèi)容</th><th>操作</th></tr></thead><tbody><volist name="data" id="vo"><tr><td>{$vo.goods_id}</td><td>{$vo.goods_name}</td><td><img src="/{$vo.goods_img}" height="50" width="50"></td><td>{$vo.addtime|date="Y-m-d H:i:s",###}</td><td>{$vo.goods_body}</td><td><a href="#" class="tablelink">查看</a><a href="#" class="tablelink">刪除</a></td></tr></volist></tbody> </table>

    3.2 分頁步驟

  • 計算數(shù)據(jù)總數(shù)
  • 實(shí)例化分頁類
  • 調(diào)用show方法計算分頁導(dǎo)航
  • 根據(jù)當(dāng)前頁碼顯示對應(yīng)內(nèi)容
  • 修改GoodsController.php
    public function index(){$model=D('Goods');//1、計算總記錄數(shù)$count=$model->count();//2、實(shí)例化分頁類對象$pagesize=2;//每一頁顯示數(shù)據(jù)條數(shù)$page=new \Think\Page($count,$pagesize);//3、使用對象調(diào)用show方法獲取分頁導(dǎo)航信息$show=$page->show();$this->assign('show',$show);//4、根據(jù)當(dāng)前頁,顯示對應(yīng)信息$p=I('get.p');//等價于$_GET['p'],獲取當(dāng)前頁碼//page方法可以根據(jù)當(dāng)前頁碼以及每頁顯示條數(shù)自動計算偏移量$data=$model->page($p,$pagesize)->select();echo $model->getLastSql();//獲取所有商品信息//$data=$model->select();$this->assign('data',$data);$this->display();}
    在Admin\View\Goods\index.html中添加:
    <div class="pagin">{$show} </div>

    4 TP中的會話技術(shù)

    4.1 session

  • session賦值
    session(‘name’,‘value’);//設(shè)置session
  • session取值
    $value=session(‘name’);
    $value=-session(); //獲取所有session信息
  • session刪除
    session(‘name’,null);
    session(null);//全部刪除
  • //session設(shè)置操作public function sets(){session('goods_id','342');$_SESSION['name']='leo';//按照原生方式使用}public function gets(){dump(session());}public function delS(){session('goods_id',null);}

    4.2 cookie

  • cookie賦值
    session(‘name’,‘value’);//設(shè)置cookie
    session(‘name’,‘value’,3600);//指定cookie有效期
  • cookie取值
    $value=cookie(‘name’);
  • cookie刪除
    cookie(‘name’,null);
    cookie(null);//清空當(dāng)前設(shè)定前綴的所有cookie
    cookie(null,‘think_’);//清空指定前綴的所有cookie
  • //cookie設(shè)置操作public function setC(){//默認(rèn)不指定有效時間,表示cookie關(guān)閉瀏覽器失效cookie('dirtyWord','damn','expire=3600');}public function getC(){dump(cookie('dirtyWord'));}public function delC(){cookie('dirtyWord',null);}

    5 TP的驗(yàn)證碼

    • 注意確保gd庫開啟
    • 步驟
  • 實(shí)例化驗(yàn)證碼對象
  • 使用對象調(diào)用entry方法生成驗(yàn)證碼
  • 使用check方法檢查驗(yàn)證碼是否匹配
  • //生成驗(yàn)證碼public function test18(){$config=array('length'=>4,);$obj=new \Think\Verify($config);$obj->entry();}

    總結(jié)

    以上是生活随笔為你收集整理的TP笔记5、模型 文件上传 分页 会话技术与验证码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。