phphttphttps
① php用curl时,HTTP链接正常,HTTPS时,获取不到数据
https 需要认证。
简易方法 (不认证,不安全)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
安全方法(认证,安全):
用firefox查出网站的CA certificate,下戴, 然后
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");
② php网站http怎么变成https
服务器+域名+SSL数字证书=HTTPS
PHP网站升级HTTPS流程:
普通的HTTP网站搭建完毕,并且可以访问。
确定升级HTTPS的域名。
Gworg申请后根据Gworg要求完成SSL证书认证。
大约15分钟获得SSL数字证书。
配置到虚拟主机或云服务器就可以实现HTTPS。
解决办法:如果虚拟主机(空间)不支持,也可以让Gworg提供接入,只需解析域名就可以。
③ php curl调用http与https有何不同
https要求有证书,通常可以通过
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//SSL报错时使用
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//SSL报错时使用
对证书进行屏蔽。
如果是你自己本身需要验证证书,那就不能屏蔽这里了。
更多PHPcURL内容请参考我的博客《PHPcURL实现模拟登录与采集使用方法详解教程》
④ thinkphp .htaccess跳转http到https
.htaccess文件代码 deny from all Redirect permanent /index.php / order deny,allow 或参考ThinkPHP3.0完全开发手册 16.2 隐藏index.php
⑤ PHP中高级面试题 – 第一天
一、写一个函数,获取一篇文章内容中的全部图片,并下载
二、什么是 CSRF 攻击?XSS 攻击?如何防范?
CSRF:跨站请求伪造,可以通过通过判断来源和加 Token 的方式来防范。
XSS:跨站脚本攻击,可以通过对内容转义和过滤来防范,还有 CSP
三、应用中我们经常会遇到在 user 表随机调取 10 条数据来展示的情况,简述你如何实现该功能。
四、MYsql 中主键与唯一索引的区别
主键:绝对不能有空值。唯一索引:可以有空值
五、http 与 https 的主要区别
关键是 S 上。简而言之,https 建立连接后要先把 SSL 的证书发下去,有了公钥和私钥,就可以解密了。
六、两台 mysql 服务器,其中一台挂了,怎么让业务端无感切换,并保证正常情况下讲台服务器的数据是一致的
不是核心业务的话,先停写,把备机拉起来,查看两台机器的日志,进行数据补偿,开写。
如果是核心业务的话,现在所有的操作都在正常的状态机器上。把好的这台机器的备机拉起来,当主机。
以上全是应急操作。实际上数据库的容灾设计要复杂得多。
面试官要是问你,备机的数据不一致怎么办,你要勇敢怼回去,你们每秒多少写入操作。按照百万级表,每秒 1000 的写入效率,正常的设计是,分布在 2 台机器上每台 500。这个级别的数据同步,出现差异的概率 可以忽略不计的。有一台出现问题,另一台也可以抗住。
(正常的操作,还是先停写,等数据一致,切换,开写。我们公司搞这些切换都是在凌晨 4.00 左右,核心业务的每秒写操作,只有十几个。前后耽搁不到 20 秒)。
七、10 瓶水,其中一瓶有毒,小白鼠喝完有毒的水之后,会在 24 小时后死亡,问:最少用几只小白鼠可以在 24 小时后找到具体是哪一瓶水有毒。
答案:四只
二进制问题。薛定谔的老鼠。
一只老鼠有两个状态,死活,对应 01。假设老鼠的个数为 A,则有 2^A>=10; A=4;
思路很简单,十瓶药编号:0,1,10,11….1001;
0 不喝。第一只老鼠喝所有个位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。
24 小时后,看下死了的是 1,活着的是 0。按老鼠的顺序乖乖站好…… 假如第一只和第三只死了,那就是 0101,就是 5 有问题。
⑥ 如何使用php判断服务器是否是HTTPS连接
是否https
functionis_https()
{
if(!empty($_SERVER['HTTPS'])&&strtolower($_SERVER['HTTPS'])!=='off')
{
returnTRUE;
}
elseif(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']==='https')
{
returnTRUE;
}
elseif(!empty($_SERVER['HTTP_FRONT_END_HTTPS'])&&strtolower($_SERVER['HTTP_FRONT_END_HTTPS'])!=='off')
{
returnTRUE;
}
returnFALSE;
}