1. 用PHP写出显示客户端IP与服务器IP的代码
1 2 3 4 5 6 7 8 | $_SERVER['REMOTE_ADDR']客户端IP function getOnlineIP(){ if (getenv('HTTP_CLIENT_IP')) return getenv('HTTP_CLIENT_IP'); if (getenv('HTTP_X_FORWARDED_FOR')) return getenv('HTTP_X_FORWARDED_FOR'); if ($_SERVER["REMOTE_ADDR"]) return $_SERVER["REMOTE_ADDR"]; if (!empty($HTTP_SERVER_VARS['REMOTE_ADDR'])) return $HTTP_SERVER_VARS['REMOTE_ADDR']; } 服务器IP:gethostbyname(“www.baidu.com”); |
2. 打开php.ini中的Safe_mode,会影响哪些函数?至少说出6个。
答:1:用户输入输出函数(fopen() file() require(),只能用于调用这些函数有相同脚本的拥有者)
2:创建新文件(限制用户只在该用户拥有目录下创建文件)
3:用户调用popen() systen() exec()等脚本,只有脚本处在safe_mode_exec_dir配置指令指定的目录中才可能
4:加强HTTP认证,认证脚本拥有者的UID的划入认证领域范围内,此外启用安全模式下,不会设置PHP_AUTH
5:mysql服务器所用的用户名必须与调用mysql_connect()的文件的拥有者用户名相同
6:受影响的函数变量以及配置命令达到40个
3. 请写一个函数验证电子邮件的格式是否正确(要求使用正则)
答:preg_match(‘/^[\w\-\.]+@[\w\-]+(\.\w+)+$/’, $email);
4. MySQL数据库,一天一万条以上的增量,怎么优化?
答:处理的方法之一是按月进行分表,因为是日志表,主要操作是insert操作,所以每月初自动生成新的数据表,数据插入到对应月份的那张数据表。[比如表明前缀是cdb_smslog 后面加200910 及时cdb_smslog_200910],其他优化方式暂时想不起来,对于myISAM, 考虑容量的话,也有优化的方案
5.写出一种排序算法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //冒泡排序 function maopao($arr) { $count = count($arr); for($i=0; $i<$count-1; ++$i) { for($j=0; $j<$count-$i-1; ++$j) { if($arr[$j] > $arr[$j+1]) { $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; } |
6.写个函数用来对二维数组排序
答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function array_sort_by_any_row($array_name, $row_id, $order_type){ $array_temp=array(); foreach($array_name as $key=>$value){ $array_temp[$key]=$value[$row_id]; } if($order_type==="ASC"){ //顺序 asort($array_temp); } else { arsort($array_temp); } $result_array=array(); foreach($array_temp as $key=>$value){ $result_array[$key]=$array_name[$key]; } return $result_array; } $arr = array( array('num'=>5, 'value'=>6), array('num'=>2, 'value'=>39), array('num'=>36, 'value'=>29) ); $sortarr = array_sort_by_any_row($arr, 'num', 'DESC'); print_r($sortarr); |
7.写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | $path = str_replace('\', '/',__FILE__); echo $path.'<br />'; function extname1($path) { return strrchr($path, '.'); } function extname2($path) { $position = strrpos($path, '.'); return substr($path, $position); } function extname3($path) { $arr = explode('.', $path); return $arr[count($arr) - 1]; } function extname4($path) { preg_match_all('/[\w\/\:\-]+\.([\w]+)$/', $path, $out); return $out[1][0]; } function extname5($path) { return preg_replace('/^[^\.]+\.([\w]+)$/', '${1}', basename($path)); } print_r(extname5($path)); |
8.约瑟夫环问题