小小仕

小小仕 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

小小仕 提出了问题 · 1月19日

thinkphp5在windows服务器上经常出现写入缓存失败

file_put_contents(C:\phpStudy\PHPTutorial\WWW\app\runtime\cache\4f\819a837d54a6ed09abc77a8560a66f.php): failed to open stream: Permission denied

环境用的是phpstudy,在使用cache缓存数据时,经常报这种错误,但是windows上文件夹不存在权限问题啊,有大佬遇到过么,求指点!

关注 3 回答 2

小小仕 提出了问题 · 1月19日

php 苹果内购验证凭证请求返回很慢

$params = array("receipt-data" => "MII6iAYJKoZIhvcNAQcCoII6eTCCOn","password"=>"*******" );
$params = json_encode($params);
$ios_verify_url = 'https://sandbox.itunes.apple.com/verifyReceipt';//测试环境
$ch = curl_init($ios_verify_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);  //这两行一定要加,不加会报SSL 错误
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
$result = curl_exec($ch);
curl_close($ch);
print_r($result);

代码如上,有大佬知道什么原因么

关注 1 回答 0

小小仕 提出了问题 · 2020-08-24

PHP 使用leanclound时怎么判断数据是否保存/更新成功呢?

PHP 使用leanclound时怎么判断数据是否保存/更新成功呢?

关注 1 回答 0

小小仕 提出了问题 · 2020-07-25

thinkphp5 接收支付宝异步回调问题

使用的是支付宝app支付SDK。支付成功后在回调地址中接收到的POST值不是"键=值&键=值&"的形式,而是"键键"的形式。因此验签也过不了。真奇怪,,我就是直接使用$_POST接收的,也没对$_POST做任何处理。哪位大佬知道是怎么回事。

        $aop = new \AopClient();
        $aop->alipayrsaPublicKey = $this->zfbPublicKey;
        $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");

关注 1 回答 0

小小仕 回答了问题 · 2019-11-15

解决关于每次刷新都能加载不同的新数据的问题?

自己的想法:每次下拉刷新时其实是加载了下一页的数据,只不过把这个数据放到最上面展示,让用户觉得有新数据,然后上拉加载时正常翻页。

关注 2 回答 2

小小仕 赞了回答 · 2019-11-15

解决关于每次刷新都能加载不同的新数据的问题?

没做过,但是很有趣的一个业务需求。

暂时不考虑推荐系统这种东西。也不考虑每天很多数据的问题。

那么如何保证每次刷新都加载不同的新数据。

首先我们要考虑用户是优先拿最新的段子,所以否一次性把某天上传的段子(可以理解今天) id 都发给用户。

然后在用户的手机上,进行随机取(不随机也行。看需求),取完后抛弃此 id。(保存在前端 app)当前列表结束时候。发送今天的日期,然后保存到数据库(可能这种东西更适合 nosql)。

后面该用户再次取某一天时,不会取今天的,然后如果当前的段子没结束,就始终取当前天数剩下的,然后再去取当前最新的(不在数据库中的最新)。

这样的话,前端持有某一天上传的所有段子id,后端持有当前用户看完的日期。这样基本可以保证。

可以根据业务调整时间维度(月份,天数,小时)

这里也有很多可以优化的点。就不一一诉说了,善用提前和延时加载。用户如何把年月日维度给定义等等。

关注 2 回答 2

小小仕 提出了问题 · 2019-11-14

解决关于每次刷新都能加载不同的新数据的问题?

做了一个段子app,不可能保证每时每刻都有新的数据插入数据库。那么这时用户在app上刷新时,怎么保证每次刷新都能获取到不同的新内容呢,让用户觉得,段子是无限多的。

关注 2 回答 2

小小仕 赞了回答 · 2019-10-28

解决有关后台删除或修改一个线上产品的问题

这种看业务规定了吧,不是你想怎么处理就如何处理的。或者医生修改后,通知客户端预约已发生变化,是继续约还是放弃都行,需要客户端知道这个动态。当然具体看你们业务规定吧

关注 2 回答 1

小小仕 提出了问题 · 2019-10-24

解决有关后台删除或修改一个线上产品的问题

在做一个预约的网站时遇到一点疑问,希望大家帮忙解答一下: 这个网站是预约挂号的,后台医生需要设置7天每天的挂号时间段,如下:
YUY627.png

现在有个问题: 假设现在是24号,我预约了25号9点到9点20的时间段,预约成功后,后台医生发现25号这个时间段他有事,于是把这个时间段修改成了其他时间段,或直接删除了。 此时,我的预约记录怎么处理呢?

关注 2 回答 1

小小仕 赞了回答 · 2019-09-29

解决面试经典问题:Cookie禁用了,Session还能用吗?

这个问题下面的所有答案都被人恶意的踩,麻烦管理员出来主持公道

默认SESSION配置

默认的JSP、PHP配置中,SessionID是需要存储在Cookie中的,默认Cookie名为:

  • PHPSESSIONID

  • JSESSIONID

以下以PHP为例:

  1. 你第一次访问网站时,

  2. 服务端脚本中开启了Sessionsession_start();

  3. 服务器会生成一个不重复的 SESSIONID 的文件session_id();,比如在/var/lib/php/session目录

  4. 并将返回(Response)如下的HTTP头 Set-Cookie:PHPSESSIONID=xxxxxxx

  5. 客户端接收到Set-Cookie的头,将PHPSESSIONID写入cookie

  6. 当你第二次访问页面时,所有Cookie会附带的请求头(Request)发送给服务器端

  7. 服务器识别PHPSESSIONID这个cookie,然后去session目录查找对应session文件,

  8. 找到这个session文件后,检查是否过期,如果没有过期,去读取Session文件中的配置;如果已经过期,清空其中的配置

如果客户端禁用了Cookie,那PHPSESSIONID都无法写入客户端,Session还能用?

答案显而易见:不能

并且服务端因为没有得到PHPSESSIONID的cookie,会不停的生成session_id文件

取巧传递session_id

但是这难不倒服务端程序,聪明的程序员想到,如果一个Cookie都没接收到,基本上可以预判客户端禁用了Cookie,那将session_id附带在每个网址后面(包括POST),
比如:

GET http://www.xx.com/index.php?session_id=xxxxx
POST http://www.xx.com/post.php?session_id=xxxxx

然后在每个页面的开头使用session_id($_GET['session_id']),来强制指定当前session_id

这样,答案就变成了:

聪明的你肯定想到,那将这个网站发送给别人,那么他将会以你的身份登录并做所有的事情
(目前很多订阅公众号就将openid附带在网址后面,这是同样的漏洞)。

其实不仅仅如此,cookie也可以被盗用,比如XSS注入,通过XSS漏洞获取大量的Cookie,也就是控制了大量的用户,腾讯有专门的XSS漏洞扫描机制,因为大量的QQ盗用,发广告就是因为XSS漏洞

所以Laravel等框架中,内部实现了Session的所有逻辑,并将PHPSESSIONID设置为httponly并加密,这样,前端JS就无法读取和修改这些敏感信息,降低了被盗用的风险。

Cookie在现代

禁用Cookie是 IE6 那个年代的事情,现在的网站都非常的依赖Cookie,禁用Cookie会造成大量的麻烦。

在Flash还流行的年代,Flash在提交数据会经常出现用户无法找到的情况,其实是因为Flash在IE下是独立的程序,无法得到IE下的Cookie。
所以在Flash的flash_var中,一般都会指定当前的session_id,让Flash提交数据的时候,将这个session_id附带着提交过去
Chrome中使用 Flash沙箱 已经解决了cookie的问题,但是为了兼容IE,比如swfupload等flash程序都要求开发者附带一个session_id

面试者的用意

面试者出此题也是为了考察你对HTTP协议和服务器会话的理解。

关注 50 回答 13

认证与成就

  • 获得 25 次点赞
  • 获得 40 枚徽章 获得 0 枚金徽章, 获得 8 枚银徽章, 获得 32 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2016-11-11
个人主页被 3.6k 人浏览