zoukankan      html  css  js  c++  java
  • php常见面试问题

     1. 如果没有开启cookies,session如何工作?

     PHP中的sessions通常会使用cookies的方法。但是如果没有cookies(浏览器禁用cookies),PHP sessions也可以工作。

     没有cookies,php会做两件事:

     (1)找到在页面中的所有form表单,PHP在form表单中自动添加隐藏域(name="PHPSESSID"),这个隐藏域的值就是PHP分配给你的session ID,例如:  

    1 <form>
    2     <input type="hidden" name="PHPSESSID" value="12345678" >
    3 </form>

     当form表单提交到服务器时,PHP能够获得session ID,将能够知道客户端是谁。

        (2). PHP将会找到在你页面中的所有links,修改这些links,以至于有一个参数添加到links中,这个参数的名字是PHPSESSID,它的值就是session ID。例如:

    如果你的代码中有一个link:

    1 <a href="http://www.example.com">Go to this link><a/>

     当被PHP修改后,将会变成下面的样子:

    1 <a href="http://www.example.com?PHPSESSID=72aa95axyz6cd67d82ba0f809277326dd">Go to this link</>

    PHPSESSID的名字可以被修改,它主要用来握着PHP session的值。如果你想要修改这个名字,你可以修改php.ini的session.name的值。

     如果没有开启cookies,使用的PHP sessions的缺点是什么?

    如果你想要分享一个伴随着PHP session的link给其他人,他们就可以使用你使用的session ID。

    2. ==和===的区别?

    ==用来检测左边的值和右边的值是否相等,而===实际上是检测左边的值和右边的值是否相等,还要检测左边和右边是否有相同的变量类型(booleans, ints etc)

    举个例子来说明一下:

    当检测两个数相等时,最好使用===。但是更重要的是,你需要知道什么时候,为什么使用===。

    这个例子中,你必须使用===。

    当你使用strpos方法时,它可能会返回0,意味着你搜索的字符串在第一位。这个例子,我们需要确保字符串中不包含“xyz”。

    2  if ( strpos( $inputString, 'xyz' ) == false ) { // do something }

     但是上面的代码会带来一个问题,如果xyz在$inputstring的第一位,$strpos将会返回0(因为xyz在第一位)。但是在PHP中会把0当做false,PHP会认为0和false是相等的。但是这并不是我们想要的,尽管$inputString包含字符串xyz,但是0和false的相等告诉我们$inputString并不包含xyz。这个问题可以通过下面的代码解决:

    1 //good code:
    2  if ( strpos( $inputString, 'xyz' ) === false ) { // do something }
  • 相关阅读:
    【UOJ 121】Hzwer的陨石
    【UOJ 666】古老的显示屏
    【UOJ 222】正方形二分型
    【UOJ 654】虫洞问题
    【UOJ 226】最近公共祖先
    【UOJ 92】有向图的强连通分量
    poj2139 Floyd
    poj1631 dp,最长上升子序列
    poj1065&1548 dp,最长上升子序列,偏序与反偏序
    poj1458(裸LCS)
  • 原文地址:https://www.cnblogs.com/yandufeng/p/5118691.html
Copyright © 2011-2022 走看看