工作中随手小笔记~

函数与类的区别:

类是有状态的,而函数无状态的,所以函数与类之间最大的区别在于是否有状态,落到更实际的点就是方法与方法之间是否需要共享数据,如果需要共享数据,则可以写成类的方法,如果不需要共享数据,那就可以用写成函数。
很多时候我们会写一些静态类,每个方法都是独立的,这些方法是可以用函数来代替的,而有些时候我们需要先初始化某些参数,然后后面的方法时可以直接用到这些参数,这些不是函数所擅长的。个人相对更喜欢用类来封装,即便有时候时候没有数据的传递,但当需要传输数据时,类会更方便扩展一点。

访问PHP脚本接口,直接以txt文件格式下载数据:

主要是这两句请求头的设置,后续要以txt文件存储的字符串直接输出就可以了。

header(‘Content-Type: application/octet-stream’);
header(‘Content-Disposition: attachment; filename=data.txt’);

foreach ($data as $key => $value) {
    $name = md5($value, false);
    $str = $name.PHP_EOL;
    echo $str;
}

踩坑BUG:

1.cookie的邮箱问题:

邮箱在cookie中是会加双引号的,这样在对cookie加密和解密的时候需要额外注意,双引号带来的影响。

2. ajax跨域请求:

学习ajax的时候都知道,ajax默认是无法跨域请求的。而在平时的项目开发中,也基本都是不会遇到跨域名的ajax请求。 但是(2019-08-02)今天写一个(fog项目)游戏礼包码的兑换的时候,需要调用到游戏研发的数据系统。
这个时候发现直接使用php请求是正常的,但是ajax请求总是得不到response响应头,排查了半天才想起来ajax是无法跨域的 。。。。

解决方法:
1.(后端)php脚本文件中加入 header(“Access-Control-Allow-Origin:*”);
代码意思的允许所有的跨域请求。
2.(前端)ajax内的增加两个成员属性:
dataType : “jsonp”,
jsonp : "jsonpcallback"

并且,请求方式type必须换成get(目前只有get方式支持跨域)

建议:使用前端修改方法,后端的权限开的太大,有安全隐患

3. 极验验证码post和get死活不通过:

搞了两三天了,快被一个验证码给搞死了。 自己写一个都比这么排查快。。。。。。

场景:
前端使用极验方式,ajax同步闯过来极验验证参数,后端做验证,验证通过,然后把数据往游戏研发接口送。

问题:
本地测试,没有任何问题。 (包括局域网内,他人连我机子测试也没问题)。 但是上线之后就是死活过不去,总是提示验证码错误,把前段传递的参数打印出来后,手动把参数往验验证码接口送 = 通过。 取消打印直接往接口送 = 再次失败。 排查了三四天,一直以为是我的问题。还把极验换到了图形验证码还是通不过。 最后没办法呼叫导师和组里的大牛帮助,结果他们也排查了两三天。。。甚至追到整个公司的系统验证码。。。 追的很深。。也追的很远。。。。 终于在今晚的再次加班中。。。解决了o(╥﹏╥)o!!

解决方案:
据了解,验证码这块全平台都是通用一个组件的,是java组那里封装处理的。 我是看了之前公司另一个也是调用这个验证码处理接口的,请求是用post的走的,没问题的通过了。 但是到我这的时候,也用的post的,出问题的。。 但是手动的post送又没问题??? Excuse me??? 玩呢??? 后面是组内一个大牛,说往接口那送的改成get试试。。才解决了。。(看起来很小的问题的是不是? 就是post和get的区别而已)但是,别的地方有用post又可以? 然后导师去追日志,php日志、apache日志、服务器日志,有异常,但好像不是根源。 又追到java那边的日志去,发现有问题了!! 但是解决了那个问题之后,还是没结局我这个问题,也就是说,那个问题不是造出我这个问题的根源。。。。 又继续追。。。。。
就这样。。。追了那么久之后,发现是一个post和get的区别弄的我们都要吐了,但是,又说不清,到底是java接受端的的时候post的get的异常的问题(因为别的地方用post可以)又或者是我本地post传数据的就有问题了(但是打印出来又没问题?)。。。。玄学(肯定不是玄学,但是很难找到根源。本地可以,服务器上不行,别人的post可以,我的post不行等等等等)

4.省略index.php前缀,导致请求走CDN而缓存回源问题:

明天补笔记,因为现在也好晚了!!又加班到现在!! 我要回家了!!!

5.ajax请求url识别问题

在这里插入图片描述
1.请求地址以 ‘ \ ’开头:
url中,如果是 /common/message/common.php?act=sendPhoneCode&type=1
前面直接以斜杆开头的,那么会直接在当前域名往下接下去如: 【activity.leiting.com】 /common/message/…

在这里插入图片描述
2. 请求地址以字母开头(其实就是和 “ ./ ” 当前目录下,一个道理):
如图,url中,如果是 common/message/commo…
前面以字母开头的,那么会直接在当前子目录下接下去如: 【activity.leiting.com/library/function/】common/message/…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值