为了账号安全,请及时绑定邮箱和手机立即绑定

几个PHP的基础面试题。

2017.02.27 14:35 6802浏览

1、session与cookie的区别是什么?如果客户端禁用了cookie功能,将会对session有什么影响?

2、isset($str),empty($str)两个函数的区别是什么?

3、http状态码404、302、403、500的含义是什么?

4、如题:

$a=0;
if($a++){echo 1;}else{echo 0;}

输出结果是什么?

5、如何使用一个函数创建出 a/b/c/d 的文件夹?

6、PHP里面如何定义一个常量(constant),请写出两种办法?

7、在mysql中如何创建数据库Manager,创建表User(username,sex),以及用户名:name,性别男的一条数据


1、实际上这种技术可以简单的用对action应用URL重写来代替。

cookie 和session 的区别:

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

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

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

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

e、所以个人建议:

将登陆信息等重要信息存放为SESSION

其他信息如果需要保留,可以放在COOKIE中

Cookie与 Session,一般认为是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但为什么禁用Cookie就不能得到Session呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。

假定用户关闭Cookie的情况下使用Session,其实现途径有以下几种:

   1. 设置php.ini配置文件中的“session.use_trans_sid = 1”,或者编译时打开打开了“--enable-trans-sid”选项,让PHP自动跨页传递Session ID。
   2. 手动通过URL传值、隐藏表单传递Session ID。
   3. 用文件、数据库等形式保存Session ID,在跨页过程中手动调用。

2、

empty

如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,”"、0、”0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。

isset

如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。

3、

200:访问成功(表示一切正常,返回的是正常请求结果)

302:临时重定向(指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出)

304:未修改(表示客户机缓存的版本是最新的,客户机应该继续使用它。)

403:服务器禁止访问

404:访问的文件不存在(服务器上不存在客户机所请求的资源)

500:内部服务器错误(服务器端的CGI、ASP、JSP等程序发生错误)

4、 0

5、mkdir($path,0777,true);

第一个参数:必须,代表要创建的多级目录的路径;

第二个参数:设定目录的权限,默认是 0777,意味着最大可能的访问权;

第三个参数:true表示允许创建多级目录。

    header("Content-type:text/html;charset=utf-8");
    //要创建的多级目录
    $path="dai/php/php学习";
    //判断目录存在否,存在给出提示,不存在则创建目录
    if (is_dir($path)){  
        echo "对不起!目录 " . $path . " 已经存在!";
    }else{
        //第三个参数是“true”表示能创建多级目录,iconv防止中文目录乱码
        $res=mkdir(iconv("UTF-8", "GBK", $path),0777,true); 
        if ($res){
            echo "目录 $path 创建成功";
        }else{
            echo "目录 $path 创建失败";
        }
    }

6、使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数。另外const在编译时要比define快很多。

a、const用于类成员变量的定义,一经定义,不可修改。Define不可以用于类成员变量的定义,可用于全局常量。

b、Const可在类中使用,define不能

c、Const不能再条件语句中定义常量

<?php
if (...){
const FOO = 'BAR';    // 无效的invalid
}
if (...) {
define('FOO', 'BAR'); // 有效的valid
}
?>

d、const采用普通的常量名称,define可以采用表达式作为名称

const  FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}

e、const只能接受静态的标量,而define可以采用任何表达式

const BIT_5 = 1 << 5;    // 无效的invalid
define('BIT_5', 1 << 5); // 有效的valid

f、const定义的常量时大小写敏感,而define可以通过第三个参数(为true表示大小写不敏感)来指定大小写是否敏感。

define('FOO', 'BAR', true);
echo FOO; // BAR
echo foo; // BAR

7、

CREATE DATABASE Manager; 
CREATE TABLE if not exists user(username varchar(50),sex varchar(2));
insert into user(username,sex) values('name','男');
点击查看更多内容
48人点赞

若觉得本文不错,就分享一下吧!

评论

相关文章推荐

正在加载中
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消