jorry2008

jorry2008

这家伙有点懒,还没写个性签名!

  • 财富值25
  • 威望值0
  • 总积分45

个人信息

  • 回复了 的回答

    http://www.bootcss.com/p/bootstrap-datetimepicker/
    http://www.runoob.com/jqueryui/example-datepicker.html
    做程序,文档都不去看。。。。。。。。。。。。。。。

    通过你的截图可以看出,yong 提供的方法,能更好的解决你的问题,这个最好由js来解决,放php里会增加不少代码,比如你提交入库失败返回时,那个格式又得重新格式化

  • 回复了 的评论

    你这种压根就不算扩展啊。只是类似引用autoload差不多。

    亲,人家没有说是拓展

  • 赞了回答

    在yii1版本中并没有这个特性,yii.js中全局绑定了ajax的请求,并自动添加了一些属性比如:

    function initCsrfHandler() {
            // automatically send CSRF token for all AJAX requests
            $.ajaxPrefilter(function (options, originalOptions, xhr) {
                if (!options.crossDomain && pub.getCsrfParam()) {
                    xhr.setRequestHeader('X-CSRF-Token', pub.getCsrfToken());
                }
            });
            pub.refreshCsrfToken();
        }
    

    然后验证时,多了一个方法:

    public function validateCsrfToken($token = null)
        {
            $method = $this->getMethod();
            // only validate CSRF token on non-"safe" methods http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1
            if (!$this->enableCsrfValidation || in_array($method, ['GET', 'HEAD', 'OPTIONS'], true)) {
                return true;
            }
    
            $trueToken = $this->loadCsrfToken();
    
            if ($token !== null) {
                return $this->validateCsrfTokenInternal($token, $trueToken);
            } else {
                return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken)
                    || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken);
            }
        }
    

    即:$this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken);中的$this->getCsrfTokenFromHeader()

    所以可以肯定的是,在框架内使用jquery的ajax可以不用带csrf相关参数

  • 在yii1版本中并没有这个特性,yii.js中全局绑定了ajax的请求,并自动添加了一些属性比如:

    function initCsrfHandler() {
            // automatically send CSRF token for all AJAX requests
            $.ajaxPrefilter(function (options, originalOptions, xhr) {
                if (!options.crossDomain && pub.getCsrfParam()) {
                    xhr.setRequestHeader('X-CSRF-Token', pub.getCsrfToken());
                }
            });
            pub.refreshCsrfToken();
        }
    

    然后验证时,多了一个方法:

    public function validateCsrfToken($token = null)
        {
            $method = $this->getMethod();
            // only validate CSRF token on non-"safe" methods http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.1.1
            if (!$this->enableCsrfValidation || in_array($method, ['GET', 'HEAD', 'OPTIONS'], true)) {
                return true;
            }
    
            $trueToken = $this->loadCsrfToken();
    
            if ($token !== null) {
                return $this->validateCsrfTokenInternal($token, $trueToken);
            } else {
                return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken)
                    || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken);
            }
        }
    

    即:$this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken);中的$this->getCsrfTokenFromHeader()

    所以可以肯定的是,在框架内使用jquery的ajax可以不用带csrf相关参数

  • 赞了回答

    应该是不会自动带上 x-csrf-token 这个头信息的吧.

    你遇到的过 不带 的情况, 都是一样的请求方式么?

    都是自己手写的ajax? 而不是用的框架带的js库(比如 yii.activeForm.js)里面的方法发起的请求?

    如果方便的话 请提供多一些信息.

  • 回复了 的回答

    yii默认配置,可关闭。一般情况下不建议关闭。

    你还是没有听明白你楼上所问的东西

  • Yii::$app->request->cookiesYii::$app->response->cookies 在 Yii 里面是分开的,前者是客户端(浏览器cookie),后者是服务器端。
    所以:

    Yii::$app->request->cookies //主要负责读取
    Yii::$app->response->cookies //主要负责创建
    

    当然两者可以混用,但是根据业务需要,
    取客户端cookie之前,在响应中应该写入或修改
    如果两者分不清或者使用错误,那就是程序不OOP
    思想不到位

试用期 等级规则
45/50
资料完整度
10/100
用户活跃度
0/100

Ta的关注

1

Ta的粉丝

0

Ta的访客

1