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

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

没有cookies,php会做两件事:

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

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

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

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

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

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

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

 <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”。

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

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

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

php常见面试问题的更多相关文章

  1. Android开发面试经——6.常见面试官提问Android题②(更新中...)

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/fi ...

  2. Android开发面试经——5.常见面试官提问Android题①

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...

  3. 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)

    机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...

  4. [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

    机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...

  5. java异常常见面试问题

    java异常常见面试问题 一.java异常的理解 异常主要是处理编译期不能捕获的错误.出现问题时能继续顺利执行下去,而不导致程序终止,确保程序的健壮性. 处理过程:产生异常状态时,如果当前的conte ...

  6. (转)C/C++ 程序设计员应聘常见 面试笔试 试题深入剖析

    C/C++ 程序设计员应聘常见 面试笔试 试题深入剖析 http://www.nowcoder.com/discuss/1826?type=2&order=0&pos=23&p ...

  7. Hibernate的10个常见面试问题及答案

    在Java J2EE方面进行面试时,常被问起的Hibernate面试问题,大多都是针对基于Web的企业级应用开发者的角色的.Hibernate框架在Java界的成功和高度的可接受性使得它成为了Java ...

  8. Android常见面试笔试题目

    Android常见面试笔试题目 1.在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢? 答:可以处理消息循环的线程,他是一个拥 ...

  9. BAT网络运维常见面试题目总结

    BAT常见面试题目总结 Author:Danbo 2015-7-11 TCP/IP详解鸟哥Linux的书网络安全ping的原理make的过程文件有哪些类型各种Linux发行版的区别.有关suid的作用 ...

  10. Java面试题集(七)--Spring常见面试问题【重要】

    以下为spring常见面试问题: 1.什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台. Spring ...

随机推荐

  1. Vue.js使用前

    下载安装 node,npm,git 安装cnpm 淘宝cnpm镜像https://npm.taobao.org/,-g表示进行全局安装 npm install -g cnpm --registry=h ...

  2. [vue最新实战] gank客户端(vue2 + vue-router2 + vuex +webpace + es6)新手福利,干货多多

    vue-meizi 本项目是基于vue2最新实战项目,是适合新手进阶的绝佳教程.代码简单易懂,注释多多.实现了移动端使用最多的 无限滚动,图片加载,左右滑动,等待.先发布预览版本,后面更多更全的功能和 ...

  3. bootstrap tab标签页

    <ul id="myTab" class="nav nav-tabs"> <li class="active"> & ...

  4. CoordinatorLayout学习笔记

    CoordinatorLayout是一个增强型的FrameLayout.它的作用有两个 作为一个布局的根布局 最为一个为子视图之间相互协调手势效果的一个协调布局 代码如下: <?xml vers ...

  5. ios-贝塞尔曲线

    git下载地址:git@github.com:lu459700780/UIBezierPath.git 演示: #import "ViewController.h" @interf ...

  6. java实现——035第一个只出现一次的字符

    import java.util.Hashtable; public class T035 { public static void main(String[] args) { FirstNotRep ...

  7. ASP.NET异步处理

    前一篇:详解 .NET 异步 在前文中,介绍了.NET下的多种异步的形式,在WEB程序中,天生就是多线程的,因此使用异步应该更为谨慎.本文将着重展开ASP.NET中的异步. [注意]本文中提到的异步指 ...

  8. 移动硬盘/U盘装Windows 7旗舰版(VHD版)

    真正的移动版WIN7,在移动硬盘/U盘上运行的WIN7 工具准备 - 联想Y450本本,已安装Windows 7旗舰版(或者WINPE3.0版),用来给移动WIN7做引导 -Win7.vhd,15G, ...

  9. iOS 之 Aggregate Target

    工程导航栏>选中工程>菜单File>New>Target>Other>Aggregate

  10. C++第二天学习

    回顾: 1.第一个C++程序 头文件 输入输出 名字空间 using namespace std; 扩展名 编译方式 g++ 2.名字空间 3.结构.联合.枚举 4.字符串 标准库提供的表示字符串的类 ...