PHP的一些面试题以及基础知识
1、PHP中字符串和数字加减
1.1、7.0及以下版本
echo "1" + 1 、echo "1" - 1 ,解析成数字参与运算;
echo "9fdd" - 1 字符串中第一位是数字,在运算时候,会解析字符串中第一个数字参与运算,数字以后的字符忽略;
echo "fd6fdf" - 1 会直接忽略整个字符串,输出 - 1 ;
1.2、7.1及以上版本
echo "1" + 1 、echo "1" - 1 ,解析成数字参与运算;
echo "9fdd" - 1,会输出8,但是会提示语法错误;
echo "fd6fdf" - 1 ,忽略字符串部分,直接输出 - 1, 并且语法有警告错误;
2、PHP是单线程还是多线程
3、如何保证token不被盗用?
① app端
前端第一次请求登录的时候把ip地址或者设备id携带过来(就只有第一次),保存在后数据库或者redis缓存中,后面的请求token对应的ip地址或者设备id不一样,则视为非法请求。出现非法请求以后,必须使用注册的手机号进行验证码验证,验证通过则解除安全提示(原来的token过期不再使用),否则不让登录。(最好是携带设备id,因为ip有可能换流量换WIFI等.)
4、php中isset()函数和empty()函数的区别?
① 共同点
都可以判断一个变量是否为空;都返回布尔型,即 true 或 false
② 不同点
empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告;empty() 5.5 版本之后支持表达式了,而不仅仅是变量。
isset() 函数用于检测变量是否已设置并且非 NULL。如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。