1.合并两个数组有几种方式,试比较它们的异同方式:1、array_merge()2、’+’3、array_merge_recursive异同:array_merge 简单的合并数组array_merge_recursive 合并两个数组,如果数组中有完全一样的数据,将它们递归合并array_combine 和 ‘+’ :合并两个数组,前者的值作为新数组的键2.请写一个函数来检查用户提交的数据是否为整数(不区分数据类型,可以为二进制、八进制、十进制、十六进制数字)答:其实主要还是is_int和 floor 这个方法
if(!is_numeric($jp_total)||strpos($jp_total,".")!==false){
echo "不是整数";
}else{
echo "是整数";
}
3.PHP的strtolower()和strtoupper()函数在安装非中文系统的服务器下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换
答:原因是:中文是由多字节组成的,而只有英文系统的单个英文字符只有一个字节,所以该系统把中文的每一个字节都做了strtolower()处理,改变后的中文字节拼接在一起就成了乱码(新生成的编码映射对应的字符可能就不是中文了)
手动解决:用str_split(string string,intstring,intsplit_length = 1)按每个字节切割,像中文能切割成三个字节。对识别到的字节若是英文字母则进行转换。
= 97 && $v<= 122){
$v -= 32;
}
$r .= chr($v);
}
return $r;
}
$a = a中你继续F@$%^&*(BMDJFDoalsdkfjasl;
echo origin string:.$a." ";
echo result string:;
$r = mystrtoupper($a);
var_dump($r);
4.PHP的is_writeable()函数存在Bug,无法准确判断一个目录/文件是否可写,请写一个函数来判断目录/文件是否绝对可写答:其中bug存在两个方面,1、在windowns中,当文件只有只读属性时,is_writeable()函数才返回false,当返回true时,该文件不一定是可写的。如果是目录,在目录中新建文件并通过打开文件来判断;如果是文件,可以通过打开文件(fopen),来测试文件是否可写。
2、在Unix中,当php配置文件中开启safe_mode时(safe_mode=on),is_writeable()同样不可用。
读取配置文件是否safe_mode是否开启。
/**
* Tests for file writability
*
* is_writable() returns TRUE on Windows servers when you really cant write to
* the file, based on the read-only attribute. is_writable() is also unreliable
* on Unix servers if safe_mode is on.
*
* @access private
* @return void
*/
if ( ! function_exists(is_really_writable))
{
function is_really_writable($file){
// If were on a Unix server with safe_mode off we call is_writable
if (DIRECTORY_SEPARATOR == / AND @ini_get("safe_mode") == FALSE){
return is_writable($file);
}
// For windows servers and safe_mode "on" installations well actually
// write a file then read it. Bah...
if (is_dir($file)){
$file = rtrim($file, /)./.md5(mt_rand(1,100).mt_rand(1,100));
if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE){
return FALSE;
}
fclose($fp);
@chmod($file, DIR_WRITE_MODE);
@unlink($file);
return TRUE;
} elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) {
return FALSE;
}
fclose($fp);
return TRUE;
}
}
5.PHP的chmod()函数存在Bug,无法保证设置成功,请写一个函数在指定路径下创建一个目录/文件并确保可以正确设置权限掩码答:我也找不到答案
6.PHP处理上传文件信息数组中的文件类型$_FILES[‘type’]由客户端浏览器提供,有可能是黑客伪造的信息,请写一个函数来确保用户上传的图像文件类型真实可靠
答:用getimagesize来判断上传图片的类型比$_FILES函数的type更可靠
同一个文件,使用不同的浏览器php返回的type类型是不一样的,由浏览器提供type类型的话,
就有可能被黑客利用向服务器提交一个伪装撑图片后缀的可执行文件。
可以通过getimagesize()函数来判断上传的文件类型,如果是头像文件 会返回这样的一个数组
Array(
[0] => 331
[1] => 234
[2] => 3
[3] => width="331" height="234"
[bits] => 8
[mime] => image/png
);
如果通过getimagesize()函数返回的是这样的一个数组 说明上传的是头像文件。其中索引为2的表示类型1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byteorder),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 =JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM,
你可以通过这个再去限制上传的头像类型
7.PHP通过对数据的URL编码来实现与Javascript的数据交互,但是对于部分特殊字符的编解码与Javascript的规则不尽相同,请具体说明这种差异,并针对UTF-8字符集的数据,写出PHP的编解码函数和Javascript的编解码函数,确保PHP编码数据可以被Javascript正确解码 、Javascript编码的数据可以被PHP正确解码
答:
//js decodeURIComponent 貌似对GB2312编码的格式不识别,必须转为utf-8才可以,然后,如果字符串中有空格的 就转为 + 号了
var ds = ;
var dddd= decodeURIComponent (ds);
alert(dddd);
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容