驗證碼是框架自帶有的,比以前使用GD庫簡單方便許多,其實現原理基本類似,都是生成圖片,保存驗證碼值到Session中,表單提交驗證碼,而後進行值的對比驗證。php
簡單的顯示:數組
1 <form action="{:url('index/ii')}" method="post"> 2 3 <!--驗證碼顯示方法1--> 4 <img src="{:captcha_src()}" alt="captcha" style="height: 80px ;width: 200px" /> 5 6 <br/> 7 8 <!--驗證碼顯示方法2--> 9 <div>{:captcha_img()}</div> 10 11 <br/> 12 13 請輸入驗證碼:<input type="text" name="check"> 14 15 <br/> 16 17 <input type="submit" value="提交"> 18 19 </form>
實現點擊驗證碼進行切換:app
1 <form action="{:url('index/ii')}" method="post"> 2 3 <input type="text" name="check" style="height: 36px;padding-top: 0px;" autocomplete="off"> 4 5 <img src="{:captcha_src()}" onClick="this.src='{:captcha_src()}'" alt="captcha" style="height: 36px ;width: 110px;border: 1px solid #584C4D;vertical-align:middle" /> 6 7 <br/><br/> 8 <input type="submit" value="提交"> 9 10 </form>
控制器裏處理驗證碼:框架
1 //獲取到post傳遞的驗證碼 2 //不區分大小寫 3 $checks=Request::instance()->post("check"); 4 5 if(!captcha_check($checks)){ 6 //驗證失敗 7 echo "驗證碼輸入錯誤"; 8 9 }else{ 10 11 echo "驗證碼輸入成功"; 12 }
文件上傳,支持單文件和多文件,上傳的文件會自動保存在public下自動建立的目錄中,並返回一系列結果。less
單文件:post
1 <form action="{:url('xiao/xiao2')}" method="post" enctype="multipart/form-data"> 2 3 <input type="file" name="filex1"> 4 <input type="submit" value="東小東上傳"> 5 6 </form>
1 <?php 2 namespace app\index\controller; 3 4 class Xiao 5 { 6 public function xiao2(){ 7 8 // 獲取表單上傳文件 ,filex1爲表單填寫的名字 9 $filex = request()->file("filex1"); 10 11 12 if($filex){ 13 14 //獲取到上傳原文件的名字 15 echo $filex->getInfo()["name"]; 16 echo "--<br/>"; 17 18 //移動到/public/uploads/目錄下,DS表示根據系統肯定的目錄分隔符"/"或「\」 19 $info = $filex->move(ROOT_PATH . 'public' . DS . 'uploads'); 20 if($info){ 21 22 // 成功上傳後 獲取上傳信息 23 //文件的後綴 24 // 如輸出 jpg 25 echo $info->getExtension()."<br>"; 26 27 //保存後的路徑 28 // 如輸出 20160820/42a79759f284b767dfcb2a0197904287.jpg 29 echo $info->getSaveName()."<br>"; 30 31 //保存後的文件名 32 // 如輸出 42a79759f284b767dfcb2a0197904287.jpg 33 echo $info->getFilename()."<br>"; 34 35 }else{ 36 37 // 上傳失敗獲取錯誤信息 38 echo $filex->getError(); 39 40 } 41 }}}
多文件:字體
實現是利用了數組的原理進行的,上傳時將文件內容保存到數組中,處理是經過數組的遍歷進行取存。利用數組進行多文件上傳,更具擴展性this
1 <form action="http://localhost:8080/ATP5/public/index/xiao/xiao2" method="post" enctype="multipart/form-data"> 2 3 <input type="file" name="filex1[]"> 4 <br/> 5 <input type="file" name="filex1[]"> 6 <br/> 7 <input type="file" name="filex1[]"> 8 <br/> 9 <input type="submit" value="東小東上傳"> 10 </form>
1 <?php 2 namespace app\index\controller; 3 4 class Xiao 5 { 6 public function xiao2(){ 7 // 獲取表單上傳文件 ,filex1爲表單填寫的名字 8 $filess = request()->file("filex1"); 9 10 //文件數組的遍歷 11 foreach($filess as $filex){ 12 13 14 //移動方法1:按照系統規則實現文件保存 15 //$info = $filex->move(ROOT_PATH . 'public' . DS . 'uploads'); 16 17 //移動方法2:保留原文件名,若是重名會覆蓋 18 $info=$filex->move(ROOT_PATH . 'public' . DS . 'uploads',iconv("utf-8","gbk",$filex->getInfo()["name"])); 19 if($info){ 21 22 //保存後的路徑 23 // 如輸出 20160820/42a79759f284b767dfcb2a0197904287.jpg 24 echo $info->getSaveName()."<br>"; 25 26 27 }else{ 28 29 // 上傳失敗獲取錯誤信息 30 echo $filex->getError(); 31 } 32 } 33 }}
圖片處理集成方法能夠實現圖片信息的獲取、圖片的裁剪、圖片的壓縮、圖片上水印等,其操做的圖片目錄均爲public目錄下,必須加載 use think\Image;模塊url
1 <?php 2 namespace app\index\controller; 3 use think\Request; 4 use think\Image; 5 class Xiao 6 { 7 public function xiao2(){ 8 9 //打開public目錄下的圖片 10 $image =Image::open('./rr.jpg'); 11 12 //直接獲取到上傳的圖片文件內容 13 //$image =Image::open(request()->file('上傳的文件表單名')); 14 15 //-----------------獲取圖片信息------------ 16 17 // 返回圖片的寬度 18 $width = $image->width(); 19 20 // 返回圖片的高度 21 $height = $image->height(); 22 23 // 返回圖片的類型,如jpeg 24 $type = $image->type(); 25 26 // 返回圖片的mime類型,如:image/jpeg 27 $mime = $image->mime(); 28 29 // 返回圖片的尺寸數組 0 圖片寬度 1 圖片高度 30 $size = $image->size(); 31 dump($size) ; 32 33 //---------------------------------------- 34 35 //--------------圖片處理------------------- 36 37 //裁剪 38 //更改的是原,無需賦值,且會迭代操做,如第二次裁剪會在第一次的基礎上進行 39 40 //從位置(0,0)裁剪(寬度,高度)並保存到public中 41 //$image->crop(100, 200)->save('./crop1.png'); 42 43 //從位置(0,20)裁剪(寬度,高度)並保存到public中 44 //$image->crop(200, 100,0,20)->save('./crop2.png'); 45 46 //壓縮 47 //等比例壓縮,如最大爲150*150 48 //$image->thumb(150, 150)->save('./thumb1.png'); 49 50 //等比例裁剪,若是不能到達標準150*150時,將進行圖片裁剪 51 /* 52 //常量,標識縮略圖居中裁剪類型 53 const THUMB_CENTER = 3; 54 //常量,標識縮略圖左上角裁剪類型 55 const THUMB_NORTHWEST = 4; 56 //常量,標識縮略圖右下角裁剪類型 57 const THUMB_SOUTHEAST = 5; 58 */ 59 //$image->thumb(150,150,Image::THUMB_CENTER)->save('./thumb.png'); 60 61 //爲圖片上水印 62 /* 63 //常量,標識左上角水印 64 const WATER_NORTHWEST = 1; 65 //常量,標識上居中水印 66 const WATER_NORTH = 2; 67 //常量,標識右上角水印 68 const WATER_NORTHEAST = 3; 69 //常量,標識左居中水印 70 const WATER_WEST = 4; 71 //常量,標識居中水印 72 const WATER_CENTER = 5; 73 //常量,標識右居中水印 74 const WATER_EAST = 6; 75 //常量,標識左下角水印 76 const WATER_SOUTHWEST = 7; 77 //常量,標識下居中水印 78 const WATER_SOUTH = 8; 79 //常量,標識右下角水印 80 const WATER_SOUTHEAST = 9; 81 */ 82 //圖片水印 83 //參數1爲水印圖片地址,參數2爲水印位置,參數3爲透明度[0,100],100爲原圖 84 $image->water('./thumb.png',Image::WATER_NORTHWEST,10)->save('img/water_image.png'); 85 86 //文字水印 87 //參數(文字內容,文字字體,大小,RGB,位置,相對位置偏移量,旋轉) 88 $image->text('東小東','font/tt.ttf',30,'#ff00ff',Image::WATER_SOUTHEAST,-20)->save('img/text_image1.png'); 89 90 } 91 }