• 【PHP笔试题】


    1、以下脚本输出什么?

    $s = '12345';
    $m = 'a2b1c';
    $s[$s[$m]] = '3';
    echo $s;
    
    • [ ] A.12345
    • [ ] B.12235
    • [ ] C.22345
    • [x] D.13345

    2、以下脚本输出什么?

    echo 'Testing ' . 1 + 2 . '45';
    
    • [ ] A.Testing 1245
    • [ ] B、Testing 345
    • [x] C、245
    • [ ] D、Tesing 1+245
    • [ ] E、什么都没有

    3、以下代码哪个符合PHP语法?(多选)

    • [x] A.$_10
    • [x] B.${"MyVar"}
    • [ ] C.$10_something
    • [ ] D.$@aVaR

    4、以下那一项不能把字符串(s1和)s2组成一个字符串?

    • [ ] A.(s1+)s2
    • [x] B." {(s1}{)s2}"
    • [x] C.(s1.)s2
    • [x] D.implode('', array($s1, $s2))
    • [ ] E.以上都可以
    • $s1+$s2两个字符串相加得到结果为int(0)

    5、对于大流量的网站,您采用什么样的方法来解决访问量问题?

    • 首先,确认服务器硬件是否足够支持当前的流量。

      普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大,那么必须首先配置一台更高性能的专用服务器才能解决问题,否则怎么优化都不可能彻底解决性能问题。

    • 其次,优化数据库访问。

      服务器的负载过大,一个重要的原因是CPU负荷过大,降低服务器CPU的负荷,才能够有效打破瓶颈。而使用静态页面可以使得CPU的负荷最小化。前台实现完全的静态化当然最好,可以完全不用访问数据库,不过对于频繁更新的网站,静态化往往不能满足某些功能。
      缓存技术就是另一个解决方案,就是将动态数据存储到缓存文件中,动态网页直接调用这些文件,而不必再访问数据库,WordPress和Z-Blog都大量使用这种缓存技术。
      如果确实无法避免对数据库的访问,那么可以尝试优化数据库的查询SQL.避免使用Select * from这样的语句,每次查询只返回自己需要的结果,避免短时间内的大量SQL查询。

    • 第三,禁止外部的盗链。

      外部网站的图片或者文件盗链往往会带来大量的负载压力,因此应该严格限制外部对于自身的图片或者文件盗链,好在目前可以简单地通过refer来控制盗 链,Apache自己就可以通过配置来禁止盗链,IIS也有一些第三方的ISAPI可以实现同样的功能。当然,伪造refer也可以通过代码来实现盗链, 不过目前蓄意伪造refer盗链的还不多,可以先不去考虑,或者使用非技术手段来解决,比如在图片上增加水印。

    • 第四,控制大文件的下载。

      大文件的下载会占用很大的流量,并且对于非SCSI硬盘来说,大量文件下载会消耗CPU,使得网站响应能力下降。因此,尽量不要提供超过2M的大文件下载, 如果需要提供,建议将大文件放在另外一台服务器上。目前有不少免费的Web 2.0网站提供图片分享和文件分享功能,因此可以尽量将图片和文件上传到这些分享网站。

    • 第五,使用不同主机分流主要流量

      将文件放在不同的主机上,提供不同的镜像供用户下载。比如如果觉得RSS文件占用流量大,那么使用FeedBurner或者FeedSky等服务将RSS输出放在其他主机上,这样别人访问的流量压力就大多集中在FeedBurner的主机上,RSS就不占用太多资源了。

    • 第六,使用流量分析统计软件

      在网站上安装一个流量分析统计软件,可以即时知道哪些地方耗费了大量流量,哪些页面需要再进行优化,因此,解决流量问题还需要进行精确的统计分析才可以。 推荐使用的流量分析统计软件是Google Analytics(Google分析)。这个软件非常的不错哦!

    6、什么是sql注入以及如何防止sql注入?

    • 什么是sql注入:

      SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常见的一种安全漏洞。 可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚至有可能获取数据库乃至系统用户最高权限。

    • 如何防止sql注入?

      • 严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害。

      • 检查输入的数据是否具有所期望的数据格式,严格限制变量的类型,例如使用regexp包进行一些匹配处理,或者使用strconv包对字符串转化成其他基本类型的数据进行判断。

      • 对进入数据库的特殊字符('"尖括号&*;等)进行转义处理,或编码转换。Go 的text/template包里面的HTMLEscapeString函数可以对字符串进行转义处理。

      • 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。例如使用database/sql里面的查询函数Prepare和Query,或者Exec(query string, args ...interface{})。

      • 在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。

      • 避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。

    7、请简述COOKIE与SESSION的联系和区别并分析禁用COOKIE后还能使用SESSION吗?

    * cookie机制采用的是**在客户端保持状态的方案**。它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持。cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力.
    Cookie分为两种,一种可以叫做session cookie,浏览器关闭就会丢失,一种可以叫做persistent cookie,就是我们通常意义上所说的cookie,通常服务器端的session是借助于seesion cookie来和客户端交互的。
    
    * session机制采用的是**一种在客户端与服务器之间保持状态的解决方案**。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的。而session提供了方便管理全局变量的方式
    
    • 联系:

      session是通过cookie来工作的 session和cookie之间是通过(_COOKIE['PHPSESSID']来联系 的,通过)_COOKIE['PHPSESSID']可以知道session的id,从而获取到其他的信息。

      在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问
      

      时,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录
      到数据库中就可以根据这个查找了。

    • 区别:

      1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

      2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使session。

      3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
      考虑到减轻服务器性能方面,应当使用COOKIE。

      4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

    • 禁用COOKIE后不能使用SESSION

      因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。

    【注】但也可以通过url手动添加Session ID参数进行传递

    php.ini 中 SESSION 的配置

    session.use_only_cookies = 1;  // 开启仅使用cookies存放会话id
    session.use_trans_sid = 1;     // 允许SessionID通过URL明文传输(默认是关闭的,为了安全)
    

    [区别]: https://www.jianshu.com/p/4ce62bcbfb82

  • 相关阅读:
    字符串的比较方法---Java
    [模板]二进制枚举
    [唯一分解定理]感谢ZLY讲解
    [数学] 小数点后第n位
    [模板]二维前缀和
    [模板]欧拉函数及其应用
    [51nod] 1024 矩阵中不重复的元素
    Codeforces Round #521 (Div. 3) D. Cutting Out
    [差分] [POJ] 3276 Face The Right Way
    Educational Codeforces Round 54 (Rated for Div. 2) C. Meme Problem
  • 原文地址:https://www.cnblogs.com/zqunor/p/8764621.html
Copyright © 2020-2023  润新知