面包屑思维模型实战模型错题集结构手册流程手册自我检测专题模块

  • 微信小程序前端
    微信小程序前端易错点收集
    查看
  • css/less/sass样式控制
    在开发过程中的一些样式控制bug规避
    查看
  • tp5开发小程序
    tp5开发小程序时错误积累
    查看
  • PHP错题集
    PHP在实际开发过程中遇到的问题
    查看
  • MySql数据库
    使用MySql在实际开发中遇到的错误总结
    查看
  • TP5错题集
    积累tp5框架在实际开发过程中遇到的问题
    查看
  • uni-app爬坑
    主要用于uni-app项目中遇到的一些问题
    查看
  • Vue.js易错收集
    vue.js项目常见错误收集整理
    查看
  • uni-app开发微信小程序
    uni-app开发微信小程序的一些爬坑积累
    查看
  • Linux
    Linux在部署、开发、运维时遇见的错误积累
    查看
  • 安全设计
    常见安全设计
    查看
  • Redis
    项目中使用redis的相关错误积累
    查看
  • 前端特效
    前端特效相关错题集
    查看
more

最新博文

  • get?传参,控制器形参、验证器字段与url参数名必须完全一致

    thinkphp

    风口下的猪2019-08-27thinkphp

    阅读更多
  • 定义模型关联关系时,不能用“_”,尽量使用驼峰命名关联关系

    thinkphp

    风口下的猪2019-08-27thinkphp

    阅读更多
  • 构造函数__construct()在哪儿

    软件开发

    我们经常会使用new Class();通过Class类去造一个对象,但造出对象的属性已经是在Class里确定好了,这样就相当于Class是一个固定的摸具,不能进行“抽芯”。

    我们也会看到new Class(['code'=>1000,'msg'=>$error])这样的new出对象,这实际就是传参定制化new。这时这个Class里面就必定有__construct()方法,用于重写Class类中属性。

    $error = $this->getError();
    throw new ParameterException(['msg'=>$error]);


    class BaseException extends Exception{
    public $code=400;
    public $msg='参数错误';
    public $errorCode=1000;

    public function __construct(Array $param){
    if(!is_array($param)){
    return;
    }
    if(array_key_exists('code',$param)){
    $this->code=$param['code'];
    }
    if(array_key_exists('msg',$param)){
    $this->msg=$param['msg'];
    }
    if(array_key_exists('errorCode',$param)){
    $this->errorCode=$param['errorCode'];
    }
    }
    }


    风口下的猪2019-08-26软件开发

    阅读更多
  • 全局异常处理,报参数致命错误

    thinkphp

    风口下的猪2019-08-26thinkphp

    阅读更多
  • jsonp跨域

    软件开发

    在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的。但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的。

    比如,有个a.html页面,它里面的代码需要利用ajax获取一个不同域上的json数据,假设这个json数据地址是http://example.com/data.php,那么a.html中的代码就可以这样:

    <script>
    function dosomething(
    jsondata){
        //处理获得的jsondata数据
    }
    </script>
    <script src='http://domian.com/test.php?callback=dosomething'></script>

    我们看到获取数据的地址后面还有一个callback参数,按惯例是用这个参数名,但是你用其他的也一样。当然如果获取数据的jsonp地址页面不是你自己能控制的,就得按照提供数据的那一方的规定格式来操作了。

    因为是当做一个js文件来引入的,所以http://example.com/data.php返回的必须是一个能执行的js文件,所以这个页面的php代码可能是这样的:

    <?php
    $callback=$_GET['callback];
    $data=array('a','b','c');
    echo $callback.'('.json_decode($data).')';
    ?>

    最终那个页面输出的结果是:

    dosomething(['a','b','c']);

    所以通过http://example.com/data.php?callback=dosomething得到的js文件,就是我们之前定义的dosomething函数,并且它的参数就是我们需要的json数据,这样我们就跨域获得了我们需要的数据。

    这样jsonp的原理就很清楚了,通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。所以jsonp是需要服务器端的页面进行相应的配合的。

    知道jsonp跨域的原理后我们就可以用js动态生成script标签来进行跨域操作了,而不用特意的手动的书写那些script标签。如果你的页面使用jquery,那么通过它封装的方法就能很方便的来进行jsonp操作了。

    <script>
    $.getJSON('http://domain.com/php?id=1256&callback=?',function(jsondata){
        $("#ajxe").html(jsondata.oid+jsondata.msg);
    });
    </script>

    原理是一样的,只不过我们不需要手动的插入script标签以及定义回掉函数。jquery会自动生成一个全局函数来替换callback=?中的问号,之后获取到数据后又会自动销毁,实际上就是起一个临时代理函数的作用。$.getJSON方法会自动判断是否跨域,不跨域的话,就调用普通的ajax方法;跨域的话,则会以异步加载js文件的形式来调用jsonp的回调函数。

    风口下的猪2019-08-19软件开发

    阅读更多
  • 同源策略

    软件开发

    同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

    同源策略限制以下几种行为:

    • 1.) Cookie、LocalStorage 和 IndexDB 无法读取
    • 2.) DOM 和 Js对象无法获得
    • 3.) AJAX 请求不能发送


    风口下的猪2019-08-19软件开发

    阅读更多
  • 图片存储URL问题

    软件开发

    图片资源分为两种:1.存在本地的图片;2.网络图片

    在实际开发过程中区分两者,主要是为了使本地图片在牵站或者部署时,不因为域名改变而使图片读取不出来。即图片存在数据库时只存绝对路径,不包含域名字符。

    合理的图片资源存读设计

    (1)所有图片统一放在一张img数据表,各个板块通过外键指向img表id。(针对性能要求不高的项目,性能要求高的项目还是具体到每个数据表,每个表存具体的url,这样读起来更快)

    (2)img表针对不同类型的图片应该分类。比如img_type字段:1为本地;2为来自网络。

    (3)读取图片时

    第一步.增加额外配置文件

    在extra文件夹下增加setting.php

    <?php
    return[
       'img_prefix'=>'http://example.com/images'
    ]

    第二步,在模型中使用读取器数据自动完成

    public function getUrlAttr($value,$data){
         $final_url=$value;
         if($data['img_type']==1){
              $final_url=config('setting.img_prefix').$value;
         }
         return $final_url;
    }
    
    



    风口下的猪2019-08-05软件开发

    阅读更多
  • php-js的Ajax "ASO"流程

    软件开发

    项目服务器端语言使用php,客户端开发想用ajax。牢记"ASO"流程。

    "ASO"流程,实际上是数据在ajax过程中的三种形态,即在php时数据形态(array)、数据传输时形态(string)、客户端js操作数据时形态(object)。

    那么具体到使用时如何操作?

    一.php时,一定将查询出来的array数据从变成json字符串,再echo出去。

    用到json_encode()方法

    $result=json_encode($company_data,JSON_UNESCAPED_SLASHES);
    echo $result;


    二.客户端,js操作数据时一定操作的是对象,所以要将接受的json字符串变成json对象。

    用到eval()方法。

    var jsonObj = eval('(' + res + ')');


    例子如下:

    company.php数据接口:

    public function getcompany_index(){
    $company_data=db('cps')->where('cptype',$_POST['cptype'])->find();
    $result=json_encode($company_data,JSON_UNESCAPED_SLASHES);
    echo $result;
    }

    客户端调用数据:

    $.post("{:url('index/company/getcompany_index')}",{cptype:type},function(res){
    if(res){
    var jsonObj = eval('(' + res + ')');
    var company_notice_string='<b>'+$(obj).attr('data1')+'</b><b class="c1">'+$(obj).attr('data2')+'</b><span>'+$(obj).attr('data3')+'</span>';
    var company_info_url="{:url('index/company/list')}"+'?company_cptype='+jsonObj.cptype;
    $('#company_datainfo').html(jsonObj.content);
    $('#company_datatice').html(company_notice_string);
    $('#company_info_look').attr("href",company_info_url);
    }else{
    alert('抱歉,该板块暂无信息!');
    }
    });

    风口下的猪2019-08-05软件开发

    阅读更多
  • 设计一个完整合理的自定义异常处理类库,要求在非调试模式下不能抛出含具体错误代码的页面,要求能分型处理服务器端异常和客户端异常。

    thinkphp

    (1)修改日志记录位置,并且关闭默认日志记录

            入口文件index.php中定义LOG_PATH常量

    define('LOG_PATH',_DIR_.'/../log/');

            配置文件config.php中设置开关

    'log'=>['type'=>'file'];

    将其改

    为'log'=>['type'=>'test'];


    (2)将自定义异常处理当作类库,供其它模块调用,建lib文件夹/exception文件夹,下设三个基础类:ServerException(服务器端异常处理源类)、ClientException(客户端异常源类)、ExceptionHandler(异常处理方法类)。


    一.ServerException.php

    namespace app\lib\exception;
    use think\Exception;
    
    class ServerException extends Exception{
           public $code=500;
           public $msg='服务器内部错误,不想告述你';
           public $errorCode=999;
           public function __construction ($params=[]){
                if(!is_array($params)){
                    return ;
                }
                if(array_key_exists('code',$params)){
                    $this->code=$params['code'];
                }
                if(array_key_exists('msg',$params)){
                    $this->msg=$params['msg'];
                }
                if(array_key_exists('errorCode',$params)){
                    $this->errorCode=$params['errorCode'];
                }
           }
    }
    
    
    


    二.ClientException.php

    namespace app\lib\exception;
    use think\Exception;
    
    class ClientException extends Exception{
           public $code=400;
           public $msg='参数错误';
           public $errorCode=1000;
           public function __construction ($params=[]){
                if(!is_array($params)){
                    return ;
                }
                if(array_key_exists('code',$params)){
                    $this->code=$params['code'];
                }
                if(array_key_exists('msg',$params)){
                    $this->msg=$params['msg'];
                }
                if(array_key_exists('errorCode',$params)){
                    $this->errorCode=$params['errorCode'];
                }
           }
    }
    
    



    三.ExceptionHandler.php

    namespace app\lib\exception;
    use think\Exception;
    use think\exception\Handle;
    use think\Request;
    
    class ExceptionHandler extends Handle{
           private $code;
           private $msg;
           private $errorCode;
           public function render(Exception $e){
                if($e instanceof ClientException){ //之前是BaceException
                    //如果是自定义的异常
                    $this->code=$e->code;
                    $this->msg=$e->msg;
                    $this->errorCode=$e->errorCode;
                }else{
                    //如果是服务器端内部代码错误  
                    if(config('app_debug')){
                   //使用系统内置Exception类中的render()异常处理方法,就可以显示具体的错误信息(原本调试模式就是采用这样的方式)
                         return  parent::render($e);
                    }else{
                         $this->code=$e->code;
                         $this->msg=$e->msg;
                         $this->errorCode=$e->errorCode;
                         $this->recordErrorLog($e);
                    }
                }
                $request=Request::instance();
                $result=[
                  'msg'=>$this->msg,
                  'error_code'=>$this->errorCode,
                  'request_url'=>$request->url()
                ];
                return json($result,$this->code);
           }
           private function recordErrorLog(Exception $e){
                  //log类的初始化
                Log::init([
                         'type'=>'file',
                         'path'=>LOG_PATH,
                         'level'=>['error']
                ]);
                  //log类的写入函数
                Log::record($e->getMessege,'error');
           }
    
    }
    
    


    (3)设置系统异常处理走自定义类库

    config.php中设置

     'exception_handle'=>'app\lib\exception\ExceptionHander.php',


    (4)定义服务器端异常处理系列类和客户端异常处理系列类

    这里以参数错误(客户端异常处理)和请求资源没找到(服务器端异常处理)为例

    1.ParameterException.php

    namespace app\lib\exception;
    use think\Exception;
    
    class ParameterException extends ClientException{
           public $code=400;
           public $msg='参数错误';
           public $errorCode=1000;
    
    }

    2.MissException.php

    namespace app\lib\exception;
    use think\Exception;
    
    class MissException extends ServerException{
           public $code=500;
           public $msg='请求资源没有找到';
           public $errorCode=900;
    }



    (5)使用两种系列的异常处理

    $e= new  ParameterException([
          'msg'=>$this->error;
    ]);
    throw $e;


    风口下的猪2019-07-16thinkphp

    阅读更多
  • 项目不一定是自己做,资源积累很重要

    项目管理

           一个创业者,不应该把思维定在点上:项目要自己做,产品要尽量自己来,收益要得到控制。实际上,个人品牌化资源化是非常重要的,项目可以是送出去的,产品是可以整合的,收益可以是远期的,这样是可以积累自己人脉的。

    风口下的猪2019-06-28项目管理

    阅读更多
  • tp5内置函数json是response类下的

    thinkphp

            tp5内置函数json是response类下的,也就是说其主要用于请求响应,我们知道直接return数组是有问题的,必须使用json()将数组处理,json()有两个参数,第一个是要返回的数据数组,第二个则是响应状态码,一般默认为200。

    风口下的猪2019-06-25thinkphp

    阅读更多
  • 软件开发
  • 素质要求
  • 计算机基础
  • 架构
  • 安全
  • 性能
  • 运维
  • 尾页
  • 数据库
  • 开发终端
  • 语言基础
  • 项目管理
  • 产品设计
  • 系统
  • 工作规范
  • 计算机网络
  • 前端技术栈
  • 数据结构
  • 计算机组成原理
  • 后端技术栈
  • 性能优化
  • 安全设计
  • 常见模块
  • 计算机操作系统
  • 服务器
  • python
  • MySQL
  • thinkphp
  • PHP
  • Java
  • JavaScript
  • Windows
  • Linux
  • 特效
  • indexedDB
  • vue
  • 淘宝联盟
  • Ionic
  • Angular
  • 微信小程序
  • 支付宝小程序
  • uni-app
  • css/sass/less
  • 支付
  • socket
  • 爬虫
  • web性能优化
  • 消息推送
  • CVM
  • sqlite
  • Redis
  • 前端基础
  • 基础
  • element
  • Nginx
  • yii2
  • /ponder/index/catelist/catelist/cateid/10.html

    我的名片

    网名:风口下的猪

    职业:软件开发、广告传媒

    现居:重庆渝北

    Email:kamoneyte@qq.com

    标签云

    站点信息

    • 文章统计:528篇
    • 移动端访问:扫码进入SQ3R