请大家晒晒平时使用的公用代码 公用函数,公用类,比较常见的手段。不论客户端,还是php 的,请大家贴一下,谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?phpecho $str;?> function CS_authcode() { session_start(); //生成验证码图片 Header("Content-type: image/PNG"); srand((double)microtime()*1000000);//播下一个生成随机数字的种子,以方便下面随机数生成的使用 //session_start();//将随机数存入session中 $_SESSION['authnum']=""; $authnum = ""; $im = imagecreate(52,22) or die("Cant's initialize new GD image stream!"); //制定图片背景大小 $red = ImageColorAllocate($im, 0,0,0); //设定三种颜色 $white = ImageColorAllocate($im, 255,255,255); $gray = ImageColorAllocate($im, 200,200,200); //imagefill($im,0,0,$gray); //采用区域填充法,设定(0,0) imagefill($im,0,0,$white);//ed //生成数字和字母混合的验证码方法 $ychar="1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z"; $list=explode(",",$ychar); for($i=0;$i<4;$i++){ $randnum=rand(0,33); $authnum.=$list[$randnum];//ed 加入一个空格 } //while(($authnum=rand()%100000)<10000); //生成随机的四位数 //将四位整数验证码绘入图片 $_SESSION['authnum']=$authnum; //int imagestring(resource image,int font,int x,int y,string s, int col) imagestring($im, 5, 10, 3, $authnum, $red); //用col颜色将字符串s画到image所代表的图像的x,y座标处(图像的左上角为0,0)。 //如果 font 是 1,2,3,4 或 5,则使用内置字体 for($i=0;$i<400;$i++){ //加入干扰象素 { $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); // imagesetpixel($im, rand()%90 , rand()%30 , $randcolor); imagesetpixel($im, rand()%90 , rand()%30 , $gray); } ImagePNG($im); ImageDestroy($im); exit();}日期时间相关/** * 返回给指定的日期添加天数后的日期 * * @param string $date 被添加的日期 * @param int $addDay 添加的天数 * @return string */function dateAdd($date, $addDay){ $parts = explode(' ', $date); $date = $parts[0]; $time = $parts[1]; $ymd = explode('-', $date); $hms = explode(':', $time); $year = $ymd[0]; $month = $ymd[1]; $day = $ymd[2]; $hour = $hms[0]; $minute = $hms[1]; $second = $hms[2]; $day = $day+$addDay; if($month=='1' || $month=='3' || $month=='5' || $month=='7' || $month=='8' || $month=='10' || $month=='12'){ if($day>31){ $day = $day - 31; $month++; } } if($month=='4' || $month=='6' || $month=='9' || $month=='11'){ if($day>30){ $day = $day - 30; $month++; } } if($month=='2'){ if(checkRun($year)){ //Feb has 29 days in leap year if($day>29){ $day = $day - 29; $month++; } } else{ if($day>28){ $day = $day - 28; $month++; } } } if($month==13){ $month = 1; $year++; } if(strlen($month)==1){$month = "0".$month;} if(strlen($day)==1){$day = "0".$day;} return $year . "-" . $month . "-" . $day;}/** * 验证是否是润年 * * @param int $year 年份 * @return boolean 如果是则返回True,否则返回False */function checkRun($year){ if($year%4==0 && ($year%100!=0 || $year%400==0) ) return true; else return false;}/** * 将时间转化成秒 * @param string $time */function time_to_second($time) { if (is_time($time)) { $array_time = explode(':', $time); return $array_time[0]*3600+$array_time[1]*60+$array_time[2]; } else { return 0; }}/** * 将时间转化为unix时间戳 * * @param string $date * @return int 如果转化成功则返回unix时间戳,否则返回-1 */function format_date_to_unix($date){ $date = trim($date); $regexp = '^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})( ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}))?$'; if(ereg($regexp,$date,$regs)){ return mktime($regs[5],$regs[6],$regs[7],$regs[2],$regs[3],$regs[1]); }else{ return -1; }}/** * Calculation of the time the auction closes * @param int $begin unix timestamp * @param int $end unix timestamp * @return string The time the auction closes */function date_between($begin, $end = 0, $between = FALSE){ if ($end === 0) $end = time(); if ($between === FALSE) $between = $begin - $end; if($between < 0) return ''; if ($between < 60) { return $between.'秒'; } else { $second = $between % 60; $between = $between / 60; if ($between < 60) { return (int)$between."分".$second."秒"; } else if($between === 60) { return "1小时"; } else { $minute = $between % 60; $between = ($between - $minute) / 60; if ($between < 24) { $string = (int)$between."小时"; if ($minute > 0) { $string .= $minute."分"; } return $string; } else if($between === 24) { return "1天"; } else { $hour = $between % 24; $between = $between - $hour; $day = $between / 24; $string = (int)$day."天"; if ($hour > 0) { $string .= $hour."小时"; } if ($minute > 0) { $string .= $minute."分"; } return $string; } } }} /** * 获取真实的IP地址 */function CS_get_ip(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return $ip;}/** * 获取来访地址 * * @return string 如果来访地址存在,则返回来访地址,否则返回空 */function CS_get_referer() { return isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != '' ? $_SERVER['HTTP_REFERER'] : '';}/** * *取得下载页面的地址 * * @param unknown_type $url */function CS_file_get_contents($url){ $t = 5; $cont = ""; while ($t-- >0) { $time = 5-$t; //echo "第$time 次下载 $url"; $cont = file_get_contents($url); if($cont) { //echo "下载成功"; break; } } return $cont;}/** * 取得当前页面的完整地址 */function CS_get_current_url() { return 'http://'.$_SERVER[ 'HTTP_HOST'].$_SERVER[ 'REQUEST_URI'];}/** * 取得手机型号信息 * @param string or array $where 查询的条件 */function CS_get_text($key) { static $STATIC_Text_INFO = array(); if (!isset($STATIC_Text_INFO[$key])) { $CI = &get_instance(); //读数据库模式. // $CI->load->model('Text_model'); // $text = $CI->Text_model->get_info_by_title($key); //取得指定的值. $CI->config->load("cfg_text"); //$CI->config->load('cfg_text'); $val = $CI->config->item($key); if( !$val ) $val = "<hr/><font color = 'red'>尚无-[$key]-项配置文字,请及时添加相应的内容</font><hr/><br>"; $STATIC_Text_INFO[$key] = $val; } return $STATIC_Text_INFO[$key];}/** * 判断是否是post提交 * */function CS_is_post() { return strtolower($_SERVER['REQUEST_METHOD']) == 'post';}/** * 判断是否是GET提交 * * @return boolean 如果是get则返回true */function CS_is_get() { return strtolower($_SERVER['REQUEST_METHOD']) == 'get';}/** * 跳转到上一页,如果指定了$location并且没有来路时,则跳转到指定页 * * @param string $location 指定跳转的页面 */function CS_header_referer($location = '') { if ($_SERVER['HTTP_REFERER'] != '') { header('location:'.$_SERVER['HTTP_REFERER']); exit(); } else if ($location != '') { redirect($location); }}function CS_log($str,$Path) { $fp=fopen($Path,"a+"); if(is_array($str)) { foreach($str as $key=>$val) { $tempstr=$key."=>".$val."\n"; fwrite($fp,$tempstr); } }else{ fwrite($fp,$str."\n"); } fclose($fp); }/** * 验证文件是否是图片 * * @param string $path 文件路径 * @return boolean 如果是则返回True,否则返回False */function CS_check_img($path) { $extension = CS_get_extension($path); return $extension == 'jpg' || $extension == 'png' || $extension == 'jpeg' || $extension == 'gif';} /** * 取得文件的扩展名 * * @param string $path 文件路径 * @return string */function CS_get_extension($path) { $path_parts = pathinfo($path); $extension = strtolower($path_parts['extension']); return $extension;}/** * 输入浏览器信息标头 * @param string $content_type[text/html] 网页输出类型 * @param string $charset[utf-8] 网页输入编码 */function CS_header($content_type = 'text/html', $charset = 'utf-8') { header('Content-type:'.$content_type.'; charset='.$charset); if(function_exists("date_default_timezone_set")){ // date_default_timezone_set('asia/shanghai'); }}/** * 输出JS报错提示,并且跳转页面 * @param string $message 提示语句 * @param string $location 跳转页面 * @param string $title 提示框的标题 */function CS_js_alert($message, $location, $title = '提示信息', $js_scope = '') { CS_header(); //发送浏览器信息头 echo '<script type="text/javascript">'.$js_scope.'LD_alert("'.$title.'", "'.$message.'");location.href="'.$location.'"</script>'; exit();}/** * 取得对应表名的模型名称 * * @param string $table 表名 * @return string 模型名称 */function CS_get_model_name($table) { return ucfirst(strtolower($table.'_model'));}/** * 获取手机号对应的服务商 * * @param string $mobile * @return int [0=>移动, 1=>联通, 2=>小灵通, -1=>不可识别] */function CS_get_mobile_facilitator($mobile) { $channel_regex_map = array( 0 => '/^0?(13[0-9]|15[0|1|3|6|8|9])\d{8}$/', // 移动 1 => '/^0?1(3[0-2]|5[56]|8[56])\d{8}$/', // 联通 2 => '/^(0[1-9][0-9]{9,10})$/', // 小灵通 ); foreach ($channel_regex_map as $channel => $regex) { if (preg_match($regex, $mobile, $match)) { return $channel; } } return -1; // 不可识别的类型}/** * 动态执行数据库中一个字段的值,并将返回值赋给该字段 * * @param mixed $var 一行[一个对象]或多行数据[一个数组] * @param array $fields 字段名称(可以是多个) */function CS_eval_fields($var, $fields) { if (is_object($var)) { foreach ($fields as $field) { if (isset($var->$field) && $var->$field != '') $var->{$field.'_php'} = @eval($var->$field); //如果字段存在 } } else if (is_array($var)) { foreach ($var as $row) { //循环每一行 foreach ($fields as $field) { if (isset($row->$field) && $row->$field != '') $row->{$field.'_php'} = @eval($row->$field); //如果字段存在 } } } return $var;}/** * 反序列化数据库中一个字段的值,并将返回值赋给该字段 * * @param mixed $var 一行[一个对象]或多行数据[一个数组] * @param array $fields 字段名称(可以是多个) */function CS_unserialize_fields($var, $fields) { if (is_object($var)) { foreach ($fields as $field) { if (isset($var->$field) && $var->$field != '') $var->{$field.'_php'} = @unserialize($var->$field); //如果字段存在 } } else if (is_array($var)) { foreach ($var as $row) { //循环每一行 foreach ($fields as $field) { if (isset($row->$field) && $row->$field != '') $row->{$field.'_php'} = @unserialize($row->$field); //如果字段存在 } } } return $var;}/** * 将一个数组格式化为GET传参格式 * @param array $params 待格式化的数组,数组的键值是参数名,数组的值是参数值 * @return string 如果$params不是数组或是一个空数组,那么返回空,否则返回格式化后的字符串 */function CS_to_query_string($params) { if (is_array($params) && sizeof($params) > 0) { //如果参数是数组,并且不是一个空数组 $new_params = array(); foreach ($params as $key => $value) { array_push($new_params, $key.'='.rawurlencode($value)); } return join('&', $new_params); } else { return ''; }}/** * 格式化数字 * @param int $number 数字 * @return 格式化的数字。 * */function CS_numeric_format($number){ return number_format($number,1,'.','');}/** * 选择颜色 * */function CS_select_color($num){ if($num > 0){ $color = '#999999'; }else{ $color = '#996600'; } return $color;}/** * 计算百分比 * @param int $input 输入量 * @param int $pass 同步量 * @return 百分比 * */function CS_counting_per($input,$pass){ if($input <1 && $pass > $input){ return '100%'; } if($pass>0 && $input>0){ return CS_numeric_format((($pass/$input)*100))."%"; //百分比 } if($input < 1 && $pass < 1){ return ' '; } return ' ';}/** * 利用CI中方法,清除特殊数据 (主要是对$this->input->xss_clean()方法的扩展) */function CS_xss_clean($var) { if (is_array($var)) { foreach ($var as $key => $value) { $var[$key] = CS_xss_clean($value); } } else { $CI = & get_instance(); $var = $CI->input->xss_clean($var); } return $var;}/** * 设置浏览器的缓存时间 * * @param string $interval 缓存时间间隔 * @return NULL */function cache_browser($interval = 60) { $now = time(); $pretty_lmtime = gmdate('D, d M Y H:i:s', $now) . ' GMT'; $pretty_extime = gmdate('D, d M Y H:i:s', $now + $interval) . ' GMT'; // 向后兼容HTTP/1.0 header("Last Modified: $pretty_lmtime"); header("Expires: $pretty_extime"); // 支持HTTP/1.1 header("Cache-Control: private,max-age=$interval,s-maxage=0"); }/** * 设置数据置查询的where * * @param string $where 查询条件,多态表现.可能是数组. * @return string 模型名称 */function CS_set_where($where) { $CI = &get_instance(); if (is_array($where)) { //当条件是数组的时候 foreach ($where as $key => $value) { //循环条件 //当元素是数组或元素是字符串并且元素的键名是数字 if (is_array($value) || (is_string($value) && is_numeric($key))) $CI->db->where($value); //元素是字符串并且元素的键名不是数字 else if (is_string($value) && !is_numeric($key)) $CI->db->where($key, $value); } } else if (is_string($where)) { $CI->db->where($where); }}/** * BREADCRUMB 导航条面包屑 * * @param string $array * @return no return. */function bread_crumb($array){ $i = 0; foreach($array as $key=>$val) { if($i) echo ">>";$i++; $url = $val["url"]; $title = $val["title"]; echo "<a href = '$url'>$title</a>"; } }/** * *创建文件夹 * * @param unknown_type $dir */function CS_mkdir($dir) { if (!is_dir($dir)) { $temp = explode('/', $dir); $cur_dir = ''; for ($i = 0; $i < count($temp); $i++) { $cur_dir .= $temp[$i] . '/'; if (!is_dir($cur_dir)) { @ mkdir($cur_dir, 0777); @ fopen("$cur_dir/index.htm", "a"); } } }}//验证地址是否为图片function CS_is_pic($url){ $pic_arr = array("jpg","jpeg","png","gif"); $pinfo = pathinfo($url); $ext_name = $pinfo["extension"]; $ext_name = strtolower($ext_name) ; if(in_array($ext_name,$pic_arr)) { return true; } else { return false; }}/** * 预格式化输出数组 * * @param string $array * @return no return. */function pr($array){ print("<pre>"); print_r($array); print("</pre>");}/** * * 将指定表格的指定健名和值名称生成配置文件,并写入到指定文件中. * @param char $table_name * @param char $key_name * @param char $val_name * @param char $cfg_var_name * @param char $dest_path */function CS_mk_cfg($table_name,$key_name,$val_name,$cfg_var_name ='cfg',$dest_file){ $str_config = "<?php\n"; $CI = &get_instance(); $CI->db->from($table_name); //设置查询表格 $CI->db->select($key_name.",".$val_name); //设置查询字段. $CI->load->helper('file'); $query = $CI->db->get(); foreach($query->result() as $key=>$item) { $info = str_replace("'","\"",$item->$val_name); $str_config .= '$config[\''.$item->$key_name.'\']=\''.$info.'\';'; $str_config .= "\n"; } $dest_path_dir = $_SERVER['DOCUMENT_ROOT']."/system/application/config/"; $dest_file = $dest_path_dir.$dest_file.".php"; write_file($dest_file, $str_config, 'w+');}/** * 删除指应对象里面的 upload/ 以gif|jpg|jpeg|zip|swf|doc 结尾的文件。 * * @param object $row */function delete_file($row){ if(sizeof($row)){ foreach($row as $val) { //查找里面相应的文件 preg_match_all("/(upload[^\.]*\.(gif|jpg|jpeg|zip|swf|doc))/i",$val,$matches); if(sizeof($matches[0])) { foreach($matches[0] as $file_piece) { if(file_exists($_SERVER['DOCUMENT_ROOT']."/".$file_piece)) { // unlink($_SERVER['DOCUMENT_ROOT']."/".$file_piece) or die("file"); } } } } } }/** * * 将http下的图片文件指向到下载到本地,并对内容进行替换。 * */function img2local($arr){ if(is_array($arr) and sizeof($arr)) { foreach($arr as $key => $val) { preg_match_all("/(http:\/\/(?!.*http.*)[^<]*\.(jpg|gif|jpeg|png))/iU",$val,$matches); if(sizeof($matches[0])) { foreach ($matches[0] as $val_img) { $old_file_name = $val_img; $img_info = pathinfo($old_file_name); //创建临时文件夹. $temp_dir = "upload/down/".date("y-m-d"); if(!is_dir($temp_dir)) CS_mkdir($temp_dir); //生成随机文件,并将远程文件写入到相应的目录下去. $myPath= "upload/down/".date("y-m-d")."/".date("His").rand(0,1000).".".$img_info["extension"]; $file=$old_file_name; $data=file_get_contents($file); fwrite(fopen($myPath,"wb+"),$data); //对数组的内容进行替换 $arr[$key] = str_ireplace($val_img,"/".$myPath,$arr[$key]); } } } } return $arr; } 有空看看我的blog http://blog.csdn.net/mu_rain 里面堆了很多代码。 求B2C外贸网站方案(选型) php框架的下拉菜单怎么做 用emacs怎么编写php dedecms 问答模块 用过齐博系统的大神帮忙看下 急问~~php 多进程用dom写xml 如何锁定? linux下部署遇到的路径问题,大家解答下,谢谢了!!!! 有用open flash chart的朋友进来一下? 一段 php程序,从后台数据库读取图片地址显示在页面中,请高手帮我看看 wamp+wnmp+lnmp+lamp一键安装包 让天下没有难配的php环境 关于文kindeditor文本编辑器的问题 PHP一个问题 好像挺简单 高人没事过来看下
echo $str;
?>
function CS_authcode() {
session_start();
//生成验证码图片
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);//播下一个生成随机数字的种子,以方便下面随机数生成的使用
//session_start();//将随机数存入session中
$_SESSION['authnum']=""; $authnum = "";
$im = imagecreate(52,22) or die("Cant's initialize new GD image stream!"); //制定图片背景大小
$red = ImageColorAllocate($im, 0,0,0); //设定三种颜色
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
//imagefill($im,0,0,$gray); //采用区域填充法,设定(0,0)
imagefill($im,0,0,$white);//ed
//生成数字和字母混合的验证码方法
$ychar="1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";
$list=explode(",",$ychar);
for($i=0;$i<4;$i++){
$randnum=rand(0,33);
$authnum.=$list[$randnum];//ed 加入一个空格
}
//while(($authnum=rand()%100000)<10000); //生成随机的四位数
//将四位整数验证码绘入图片
$_SESSION['authnum']=$authnum;
//int imagestring(resource image,int font,int x,int y,string s, int col)
imagestring($im, 5, 10, 3, $authnum, $red);
//用col颜色将字符串s画到image所代表的图像的x,y座标处(图像的左上角为0,0)。
//如果 font 是 1,2,3,4 或 5,则使用内置字体
for($i=0;$i<400;$i++){ //加入干扰象素 {
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
// imagesetpixel($im, rand()%90 , rand()%30 , $randcolor);
imagesetpixel($im, rand()%90 , rand()%30 , $gray);
}
ImagePNG($im);
ImageDestroy($im);
exit();
}日期时间相关/**
* 返回给指定的日期添加天数后的日期
*
* @param string $date 被添加的日期
* @param int $addDay 添加的天数
* @return string
*/
function dateAdd($date, $addDay){
$parts = explode(' ', $date);
$date = $parts[0];
$time = $parts[1];
$ymd = explode('-', $date);
$hms = explode(':', $time);
$year = $ymd[0];
$month = $ymd[1];
$day = $ymd[2];
$hour = $hms[0];
$minute = $hms[1];
$second = $hms[2];
$day = $day+$addDay;
if($month=='1' || $month=='3' || $month=='5' || $month=='7' || $month=='8' || $month=='10' || $month=='12'){
if($day>31){
$day = $day - 31;
$month++;
}
}
if($month=='4' || $month=='6' || $month=='9' || $month=='11'){
if($day>30){
$day = $day - 30;
$month++;
}
}
if($month=='2'){
if(checkRun($year)){
//Feb has 29 days in leap year
if($day>29){
$day = $day - 29;
$month++;
}
}
else{
if($day>28){
$day = $day - 28;
$month++;
}
}
}
if($month==13){
$month = 1;
$year++;
}
if(strlen($month)==1){$month = "0".$month;}
if(strlen($day)==1){$day = "0".$day;}
return $year . "-" . $month . "-" . $day;
}/**
* 验证是否是润年
*
* @param int $year 年份
* @return boolean 如果是则返回True,否则返回False
*/
function checkRun($year){
if($year%4==0 && ($year%100!=0 || $year%400==0) )
return true;
else
return false;
}/**
* 将时间转化成秒
* @param string $time
*/
function time_to_second($time) {
if (is_time($time)) {
$array_time = explode(':', $time);
return $array_time[0]*3600+$array_time[1]*60+$array_time[2];
} else {
return 0;
}
}/**
* 将时间转化为unix时间戳
*
* @param string $date
* @return int 如果转化成功则返回unix时间戳,否则返回-1
*/
function format_date_to_unix($date){
$date = trim($date);
$regexp = '^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})( ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}))?$';
if(ereg($regexp,$date,$regs)){
return mktime($regs[5],$regs[6],$regs[7],$regs[2],$regs[3],$regs[1]);
}else{
return -1;
}
}/**
* Calculation of the time the auction closes
* @param int $begin unix timestamp
* @param int $end unix timestamp
* @return string The time the auction closes
*/
function date_between($begin, $end = 0, $between = FALSE)
{
if ($end === 0) $end = time();
if ($between === FALSE) $between = $begin - $end;
if($between < 0) return '';
if ($between < 60)
{
return $between.'秒';
}
else
{
$second = $between % 60;
$between = $between / 60;
if ($between < 60)
{
return (int)$between."分".$second."秒";
}
else if($between === 60)
{
return "1小时";
}
else
{
$minute = $between % 60;
$between = ($between - $minute) / 60;
if ($between < 24)
{
$string = (int)$between."小时";
if ($minute > 0)
{
$string .= $minute."分";
}
return $string;
}
else if($between === 24)
{
return "1天";
}
else
{
$hour = $between % 24;
$between = $between - $hour;
$day = $between / 24;
$string = (int)$day."天";
if ($hour > 0)
{
$string .= $hour."小时";
}
if ($minute > 0)
{
$string .= $minute."分";
}
return $string;
}
}
}
}
/**
* 获取真实的IP地址
*/
function CS_get_ip(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return $ip;
}/**
* 获取来访地址
*
* @return string 如果来访地址存在,则返回来访地址,否则返回空
*/
function CS_get_referer() {
return isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != '' ? $_SERVER['HTTP_REFERER'] : '';
}/**
* *取得下载页面的地址
*
* @param unknown_type $url
*/
function CS_file_get_contents($url)
{
$t = 5;
$cont = "";
while ($t-- >0)
{
$time = 5-$t;
//echo "第$time 次下载 $url";
$cont = file_get_contents($url);
if($cont)
{
//echo "下载成功";
break;
}
}
return $cont;
}/**
* 取得当前页面的完整地址
*/
function CS_get_current_url() {
return 'http://'.$_SERVER[ 'HTTP_HOST'].$_SERVER[ 'REQUEST_URI'];
}/**
* 取得手机型号信息
* @param string or array $where 查询的条件
*/
function CS_get_text($key) { static $STATIC_Text_INFO = array();
if (!isset($STATIC_Text_INFO[$key])) {
$CI = &get_instance();
//读数据库模式.
// $CI->load->model('Text_model');
// $text = $CI->Text_model->get_info_by_title($key); //取得指定的值.
$CI->config->load("cfg_text");
//$CI->config->load('cfg_text');
$val = $CI->config->item($key);
if( !$val ) $val = "<hr/><font color = 'red'>尚无-[$key]-项配置文字,请及时添加相应的内容</font><hr/><br>";
$STATIC_Text_INFO[$key] = $val;
}
return $STATIC_Text_INFO[$key];
}
/**
* 判断是否是post提交
*
*/
function CS_is_post() {
return strtolower($_SERVER['REQUEST_METHOD']) == 'post';
}/**
* 判断是否是GET提交
*
* @return boolean 如果是get则返回true
*/
function CS_is_get() {
return strtolower($_SERVER['REQUEST_METHOD']) == 'get';
}/**
* 跳转到上一页,如果指定了$location并且没有来路时,则跳转到指定页
*
* @param string $location 指定跳转的页面
*/
function CS_header_referer($location = '') {
if ($_SERVER['HTTP_REFERER'] != '') {
header('location:'.$_SERVER['HTTP_REFERER']);
exit();
} else if ($location != '') {
redirect($location);
}
}function CS_log($str,$Path) {
$fp=fopen($Path,"a+");
if(is_array($str))
{
foreach($str as $key=>$val)
{
$tempstr=$key."=>".$val."\n";
fwrite($fp,$tempstr);
}
}else{
fwrite($fp,$str."\n");
}
fclose($fp);
}/**
* 验证文件是否是图片
*
* @param string $path 文件路径
* @return boolean 如果是则返回True,否则返回False
*/
function CS_check_img($path) {
$extension = CS_get_extension($path);
return $extension == 'jpg' || $extension == 'png' || $extension == 'jpeg' || $extension == 'gif';
}
* 取得文件的扩展名
*
* @param string $path 文件路径
* @return string
*/
function CS_get_extension($path) {
$path_parts = pathinfo($path);
$extension = strtolower($path_parts['extension']);
return $extension;
}/**
* 输入浏览器信息标头
* @param string $content_type[text/html] 网页输出类型
* @param string $charset[utf-8] 网页输入编码
*/
function CS_header($content_type = 'text/html', $charset = 'utf-8') {
header('Content-type:'.$content_type.'; charset='.$charset);
if(function_exists("date_default_timezone_set")){
// date_default_timezone_set('asia/shanghai');
}
}/**
* 输出JS报错提示,并且跳转页面
* @param string $message 提示语句
* @param string $location 跳转页面
* @param string $title 提示框的标题
*/
function CS_js_alert($message, $location, $title = '提示信息', $js_scope = '') {
CS_header(); //发送浏览器信息头
echo '<script type="text/javascript">'.$js_scope.'LD_alert("'.$title.'", "'.$message.'");location.href="'.$location.'"</script>';
exit();
}/**
* 取得对应表名的模型名称
*
* @param string $table 表名
* @return string 模型名称
*/
function CS_get_model_name($table) {
return ucfirst(strtolower($table.'_model'));
}/**
* 获取手机号对应的服务商
*
* @param string $mobile
* @return int [0=>移动, 1=>联通, 2=>小灵通, -1=>不可识别]
*/
function CS_get_mobile_facilitator($mobile) {
$channel_regex_map = array(
0 => '/^0?(13[0-9]|15[0|1|3|6|8|9])\d{8}$/', // 移动
1 => '/^0?1(3[0-2]|5[56]|8[56])\d{8}$/', // 联通
2 => '/^(0[1-9][0-9]{9,10})$/', // 小灵通
);
foreach ($channel_regex_map as $channel => $regex) {
if (preg_match($regex, $mobile, $match)) {
return $channel;
}
}
return -1; // 不可识别的类型
}/**
* 动态执行数据库中一个字段的值,并将返回值赋给该字段
*
* @param mixed $var 一行[一个对象]或多行数据[一个数组]
* @param array $fields 字段名称(可以是多个)
*/
function CS_eval_fields($var, $fields) {
if (is_object($var)) {
foreach ($fields as $field) {
if (isset($var->$field) && $var->$field != '') $var->{$field.'_php'} = @eval($var->$field); //如果字段存在
}
} else if (is_array($var)) {
foreach ($var as $row) { //循环每一行
foreach ($fields as $field) {
if (isset($row->$field) && $row->$field != '') $row->{$field.'_php'} = @eval($row->$field); //如果字段存在
}
}
}
return $var;
}/**
* 反序列化数据库中一个字段的值,并将返回值赋给该字段
*
* @param mixed $var 一行[一个对象]或多行数据[一个数组]
* @param array $fields 字段名称(可以是多个)
*/
function CS_unserialize_fields($var, $fields) {
if (is_object($var)) {
foreach ($fields as $field) {
if (isset($var->$field) && $var->$field != '') $var->{$field.'_php'} = @unserialize($var->$field); //如果字段存在
}
} else if (is_array($var)) {
foreach ($var as $row) { //循环每一行
foreach ($fields as $field) {
if (isset($row->$field) && $row->$field != '') $row->{$field.'_php'} = @unserialize($row->$field); //如果字段存在
}
}
}
return $var;
}/**
* 将一个数组格式化为GET传参格式
* @param array $params 待格式化的数组,数组的键值是参数名,数组的值是参数值
* @return string 如果$params不是数组或是一个空数组,那么返回空,否则返回格式化后的字符串
*/
function CS_to_query_string($params) {
if (is_array($params) && sizeof($params) > 0) { //如果参数是数组,并且不是一个空数组
$new_params = array();
foreach ($params as $key => $value) {
array_push($new_params, $key.'='.rawurlencode($value));
}
return join('&', $new_params);
} else {
return '';
}
}/**
* 格式化数字
* @param int $number 数字
* @return 格式化的数字。
* */
function CS_numeric_format($number){
return number_format($number,1,'.','');
}/**
* 选择颜色
* */
function CS_select_color($num){
if($num > 0){
$color = '#999999';
}else{
$color = '#996600';
}
return $color;
}/**
* 计算百分比
* @param int $input 输入量
* @param int $pass 同步量
* @return 百分比
* */
function CS_counting_per($input,$pass){
if($input <1 && $pass > $input){
return '100%';
}
if($pass>0 && $input>0){
return CS_numeric_format((($pass/$input)*100))."%"; //百分比
}
if($input < 1 && $pass < 1){
return ' ';
}
return ' ';
}/**
* 利用CI中方法,清除特殊数据 (主要是对$this->input->xss_clean()方法的扩展)
*/
function CS_xss_clean($var) {
if (is_array($var)) {
foreach ($var as $key => $value) {
$var[$key] = CS_xss_clean($value);
}
} else {
$CI = & get_instance();
$var = $CI->input->xss_clean($var);
}
return $var;
}/**
* 设置浏览器的缓存时间
*
* @param string $interval 缓存时间间隔
* @return NULL
*/
function cache_browser($interval = 60)
{
$now = time();
$pretty_lmtime = gmdate('D, d M Y H:i:s', $now) . ' GMT';
$pretty_extime = gmdate('D, d M Y H:i:s', $now + $interval) . ' GMT';
// 向后兼容HTTP/1.0
header("Last Modified: $pretty_lmtime");
header("Expires: $pretty_extime");
// 支持HTTP/1.1
header("Cache-Control: private,max-age=$interval,s-maxage=0");
}
/**
* 设置数据置查询的where
*
* @param string $where 查询条件,多态表现.可能是数组.
* @return string 模型名称
*/
function CS_set_where($where) {
$CI = &get_instance();
if (is_array($where)) { //当条件是数组的时候
foreach ($where as $key => $value) { //循环条件
//当元素是数组或元素是字符串并且元素的键名是数字
if (is_array($value) || (is_string($value) && is_numeric($key))) $CI->db->where($value);
//元素是字符串并且元素的键名不是数字
else if (is_string($value) && !is_numeric($key)) $CI->db->where($key, $value);
}
} else if (is_string($where)) {
$CI->db->where($where);
}
}
/**
* BREADCRUMB 导航条面包屑
*
* @param string $array
* @return no return.
*/
function bread_crumb($array)
{ $i = 0;
foreach($array as $key=>$val)
{
if($i) echo ">>";$i++;
$url = $val["url"];
$title = $val["title"];
echo "<a href = '$url'>$title</a>";
}
}
/**
* *创建文件夹
*
* @param unknown_type $dir
*/
function CS_mkdir($dir) {
if (!is_dir($dir)) {
$temp = explode('/', $dir);
$cur_dir = '';
for ($i = 0; $i < count($temp); $i++) {
$cur_dir .= $temp[$i] . '/';
if (!is_dir($cur_dir)) {
@ mkdir($cur_dir, 0777);
@ fopen("$cur_dir/index.htm", "a");
}
}
}
}//验证地址是否为图片
function CS_is_pic($url)
{ $pic_arr = array("jpg","jpeg","png","gif");
$pinfo = pathinfo($url);
$ext_name = $pinfo["extension"];
$ext_name = strtolower($ext_name) ;
if(in_array($ext_name,$pic_arr))
{
return true;
}
else {
return false;
}
}/**
* 预格式化输出数组
*
* @param string $array
* @return no return.
*/
function pr($array)
{
print("<pre>");
print_r($array);
print("</pre>");
}/**
* * 将指定表格的指定健名和值名称生成配置文件,并写入到指定文件中.
* @param char $table_name
* @param char $key_name
* @param char $val_name
* @param char $cfg_var_name
* @param char $dest_path
*/
function CS_mk_cfg($table_name,$key_name,$val_name,$cfg_var_name ='cfg',$dest_file)
{
$str_config = "<?php\n"; $CI = &get_instance();
$CI->db->from($table_name); //设置查询表格
$CI->db->select($key_name.",".$val_name); //设置查询字段.
$CI->load->helper('file');
$query = $CI->db->get();
foreach($query->result() as $key=>$item)
{
$info = str_replace("'","\"",$item->$val_name);
$str_config .= '$config[\''.$item->$key_name.'\']=\''.$info.'\';';
$str_config .= "\n";
}
$dest_path_dir = $_SERVER['DOCUMENT_ROOT']."/system/application/config/";
$dest_file = $dest_path_dir.$dest_file.".php"; write_file($dest_file, $str_config, 'w+');
}/**
* 删除指应对象里面的 upload/ 以gif|jpg|jpeg|zip|swf|doc 结尾的文件。
*
* @param object $row
*/
function delete_file($row)
{
if(sizeof($row)){
foreach($row as $val)
{
//查找里面相应的文件
preg_match_all("/(upload[^\.]*\.(gif|jpg|jpeg|zip|swf|doc))/i",$val,$matches);
if(sizeof($matches[0]))
{
foreach($matches[0] as $file_piece)
{
if(file_exists($_SERVER['DOCUMENT_ROOT']."/".$file_piece))
{
// unlink($_SERVER['DOCUMENT_ROOT']."/".$file_piece) or die("file");
}
}
}
}
}
}
/**
* * 将http下的图片文件指向到下载到本地,并对内容进行替换。
*
*/
function img2local($arr)
{
if(is_array($arr) and sizeof($arr))
{
foreach($arr as $key => $val)
{
preg_match_all("/(http:\/\/(?!.*http.*)[^<]*\.(jpg|gif|jpeg|png))/iU",$val,$matches);
if(sizeof($matches[0]))
{
foreach ($matches[0] as $val_img)
{
$old_file_name = $val_img;
$img_info = pathinfo($old_file_name);
//创建临时文件夹.
$temp_dir = "upload/down/".date("y-m-d");
if(!is_dir($temp_dir)) CS_mkdir($temp_dir);
//生成随机文件,并将远程文件写入到相应的目录下去.
$myPath= "upload/down/".date("y-m-d")."/".date("His").rand(0,1000).".".$img_info["extension"];
$file=$old_file_name;
$data=file_get_contents($file);
fwrite(fopen($myPath,"wb+"),$data);
//对数组的内容进行替换
$arr[$key] = str_ireplace($val_img,"/".$myPath,$arr[$key]);
}
}
}
} return $arr;
}