/*----------------程式概述-----------------------------------------------------
程式名稱: sql_injection.php
編輯開始日期: 2012/01/16
程式功用: 用來防堵SQL Injection..等駭客攻擊
程式創始: Rex
----------------程式修改歷程----------------------------------------------------
[程式修改時間] [程式修改人] [修改的部份,約略描述]
2012/01/16 Rex 新增
-----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
函數名稱: sql_injection
函數功能: 防堵SQL Injection
函數引數: $as_value (String or Array) 傳入字串或陣列
$as_type (Array) 字串類型
1.int //數字
2.double //浮點數
3.string //純文字--清除特殊字串&HTML轉為實體
4.9zstring //字串--僅可輸入英數字
5.paswordstring //字串--僅可輸入英數字及特殊符號
$as_length (Int) 限制長度 (預設0不限制)
函數傳回值:$ls_value(String) 傳回處理後字串
函數創始: Rex
編輯開始時間: 2012/01/16
------------------------修改記錄------------------------------------------------
[程式修改時間] [程式修改人] [修改的部份,約略描述]
2012/01/16 Rex 新增
-----------------------------------------------------------------------------*/
function sql_injection($as_value,$as_type,$as_length=0)
{
//判斷$as_value是否為陣列
if (is_array($as_value)) {
//如果$as_value是陣列,那麼就以預設為字串處理它的每一個陣列值
foreach ($as_value as $key=>$value) {
$as_value[$key] = replace_words(addslashes($value));
}
} else {
//如果$as_value不是陣列,那麼就僅處理一次
switch($as_type){
case 'int':
//數字
$as_value = intval($as_value);
break;
case 'double':
//浮點數
$as_value = doubleval($as_value);
break;
case 'string':
//清除特殊字串&HTML轉為實體
//限制字串長度
if (!($as_length==0)){
$as_value = substr($as_value,0,$as_length);
}
//清除特殊字串
$as_value = replace_words($as_value);
//在指定的預定字符前添加反斜線
$as_value = addslashes($as_value);
//把一些預定的字符轉為HTML實體
$as_value = htmlspecialchars($as_value,ENT_QUOTES);
//htmlspecialchars() 函數把一些預定的字符轉為HTML實體。
//預定的字符是:
//& (和號) 轉為 &
//" (隻引號) 轉為 "
//' (單引號) 轉為 '
//< (小於) 轉為 <
//> (大於) 轉為 >
//html_entity_decode() //呈現時還原HTML
break;
case '9zstring':
//僅可輸入英數字
//限制字串長度
if (!($as_length==0)){
$as_value = substr($as_value,0,$as_length);
}
//字串比對僅英文字
$as_value = words_match($as_value);
break;
case 'paswordstring':
$as_value = preg_replace("''si", "", $as_value);//去掉javascrip
break;
default:
//同string
//限制字串長度
if (!($as_length==0)){
$as_value = substr($as_value,0,$as_length);
}
//清除特殊字串
$as_value = replace_words($as_value);
//在指定的預定字符前添加反斜線
$as_value = addslashes($as_value);
//把一些預定的字符轉為HTML實體
$as_value = htmlspecialchars($as_value,ENT_QUOTES);
}
//Update特殊字串及字串檢查
//$as_value = replace_words($as_value);
//字串比對
//$as_value = words_match($as_value);
}
return $as_value;
}
/*-----------------------------------------------------------------------------
函數名稱: replace_words
函數功能: 防堵SQL Injection Update特殊字及HTML格式
函數引數: $as_words (String) 傳入字串
函數傳回值:$ls_words(String) 傳回處理後字串
函數創始: Rex
編輯開始時間: 2012/01/16
------------------------修改記錄------------------------------------------------
[程式修改時間] [程式修改人] [修改的部份,約略描述]
2012/01/16 Rex 新增
-----------------------------------------------------------------------------*/
function replace_words($as_words)
{
//引號轉換為全型
$as_words = str_replace("'","’",$as_words);
$as_words = str_replace('"','"',$as_words);
$as_words = str_replace(";","﹔",$as_words);
$as_words = str_replace(",","﹐",$as_words);
//覆蓋特殊字元
$as_words = str_replace("%","",$as_words);
$as_words = str_replace("--","",$as_words);
$as_words = str_replace("/*","",$as_words);
$as_words = str_replace(";","",$as_words);
$as_words = str_replace(",","",$as_words);
$as_words = str_replace("'","",$as_words);
$as_words = str_replace('"',"",$as_words);
$as_words = preg_replace("''si", "", $as_words);//去掉javascrip
return $as_words;
}
/*-----------------------------------------------------------------------------
函數名稱: words_match
函數功能: 防堵SQL Injection 字串比對
函數引數: $as_match (String) 傳入字串
函數傳回值:$ls_match(String) 傳回處理後字串
函數創始: Rex
編輯開始時間: 2012/01/16
------------------------修改記錄------------------------------------------------
[程式修改時間] [程式修改人] [修改的部份,約略描述]
2012/01/16 Rex 新增
-----------------------------------------------------------------------------*/
function words_match($as_match)
{
if(preg_match('#[^A-Za-z0-9./_-]#',$as_match)){
$loop_num = mb_strlen( $as_match, "utf-8");
for($x=0;$x<$loop_num;$x++){
if(preg_match('#[^A-Za-z0-9./_-]#',substr($as_match,$x,1))){
$as_match = str_replace(substr($as_match,$x,1),"",$as_match);
$x--;
$loop_num--;
}
//下面二行為了防止無限迴圈
if($x>$loop_num)
exit;
}
//$as_match = "";
}
return $as_match;
}
?>
function page_area($page,$pages,$link){
if(empty($page)){$page=1;}
for($i=1;$i<=$pages;$i++){
if($page==$i){
$select_all .= '';
}else{
$select_all .= '';
}
}
$prepage=$page-1;
$nextpage=$page+1;
if($prepage<=0){$prepage=1;}
if($nextpage>=$pages){$nextpage=$pages;}
if($page != 1){
$page_fr= <<< page_front
|
|
page_front;
}else{
$page_fr= <<< page_front
 |
 |
page_front;
}
if($page != $pages){
$page_la= <<< page_last
|
|
page_last;
}else{
$page_la= <<< page_last
 |
 |
page_last;
}
$page_conet_bef= <<< page_conet
page_conet;
if($pages > 1){
$page_conet_all= <<< page_sele
page_sele;
}
return $page_conet_all;
}
?>
/*----------------程式概述-----------------------------------------------------
程式名稱: content_link.php
編輯開始日期: 2013/11/25
程式功用: 用來轉換文章中http連結
程式創始: Rex
----------------程式修改歷程----------------------------------------------------
[程式修改時間] [程式修改人] [修改的部份,約略描述]
2013/11/25 Rex 新增
-----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
函數名稱: content_link
函數功能: 轉換文章中http連結
函數引數: $as_http (String) 傳入字串
函數傳回值:$as_http (String) 傳回處理後字串
函數創始: Rex
編輯開始時間: 2013/11/25
------------------------修改記錄------------------------------------------------
[程式修改時間] [程式修改人] [修改的部份,約略描述]
2013/11/25 Rex 新增
-----------------------------------------------------------------------------*/
function content_link($as_http)
{
$ls_http = $as_http;
$j=0;
$i=0;
$ls_start=0;
//是否有HTTP
$ls_do = stripos($ls_http,'http://',$ls_start) ;
//第一個"/"結尾
$ls_show_end = stripos($ls_http,'/',$ls_do + 7);
while ($ls_do) {
$i++;
$j++;
//開始
$ls_start = stripos($ls_http,'http://',$ls_start) ;
$ls_show_end = stripos($ls_http,'/',$ls_do + 7);
$ls_end1 = stripos($ls_http,' ',$ls_start);
$ls_end2 = stripos($ls_http,'
= $ls_end2){
$ls_end = $ls_end2;
}else{
$ls_end = $ls_end1;
}
}
}
//連結長度
$ls_length = $ls_end - $ls_start;
if ($ls_length > 300){ continue; }
$ls_adr_show ="";
$ls_adr ="";
$li_show_end_length = $ls_show_end - $ls_start;
$ls_adr_show = substr($ls_http,$ls_start,$li_show_end_length+1);
$ls_adr = substr($ls_http,$ls_start,$ls_length);
$as_link[$j] = "".$ls_adr_show."";
$ls_link = "[@Link".$j."]";
$ls_http = str_replace($ls_adr,$ls_link,$ls_http);
//$ls_start = stripos($ls_http,'',$ls_end);
$ls_do = stripos($ls_http,'http://',$ls_start) ;
if ($i > 10){ continue; }
}
$i=0;
$ls_start=0;
$ls_do = stripos($ls_http,'https://',$ls_start) ;
$ls_show_end = stripos($ls_http,'/',$ls_do + 8);
while ($ls_do) {
$i++;
$j++;
$ls_start = stripos($ls_http,'https://',$ls_start) ;
$ls_end1 = stripos($ls_http,' ',$ls_start);
$ls_end2 = stripos($ls_http,'
= $ls_end2){
$ls_end = $ls_end2;
}else{
$ls_end = $ls_end1;
}
}
}
$ls_length = $ls_end - $ls_start;
if ($ls_length > 300){ continue; }
$li_show_end_length = $ls_show_end - $ls_start;
$ls_adr_show = substr($ls_http,$ls_start,$li_show_end_length+1);
$ls_adr = substr($ls_http,$ls_start,$ls_length);
//$ls_link = "".$ls_adr_show."";
$as_link[$j] = "".$ls_adr_show."";
$ls_link = "[@Link".$j."]";
$ls_http = str_replace($ls_adr,$ls_link,$ls_http);
//$ls_start = stripos($ls_http,'',$ls_end);
$ls_do = stripos($ls_http,'https://',$ls_start) ;
if ($i > 10){ continue; }
}
if(!empty($as_link)){
foreach($as_link as $as_link_loop){
$k++;
$ls_adr = "[@Link".$k."]";
$ls_http = str_replace($ls_adr,$as_link_loop,$ls_http);
}
}
return $ls_http;
}
?>
function show_template($data_content,$data_type=1,$data_youtube,$data_pic,$data_pic_big,$data_file){
$data_content = str_replace(" "," ",$data_content);
//$data_content = str_replace(" "," ",$data_content);
switch ($data_type){
case 1:
$data_pic[0] = str_replace('id=""','id="PicShowLeft"',$data_pic[0]);
$conter_data = $data_pic[0].nl2br($data_content);
$conter_data = ''.$conter_data.'
';
break;
case 2:
$data_pic[0] = str_replace('id=""','id="PicShowRight"',$data_pic[0]);
$conter_data = nl2br($data_content).$data_pic[0];
$conter_data = ''.$conter_data.'
';
break;
case 3:
$data_pic[0] = str_replace('id=""','id="PicShowLeft"',$data_pic[0]);
$data_pic[1] = str_replace('id=""','id="PicShowRight"',$data_pic[1]);
$conter_data = $data_pic[0].nl2br($data_content).$data_pic[1];
$conter_data = ''.$conter_data.'
';
break;
case 4:
$data_pic[0] = str_replace('id=""','id="PicShowRight"',$data_pic[0]);
$data_pic[1] = str_replace('id=""','id="PicShowLeft"',$data_pic[1]);
$conter_data = $data_pic[0].nl2br($data_content).$data_pic[1];
$conter_data = ''.$conter_data.'
';
break;
case 5:
if(!empty($data_pic_big)){
foreach($data_pic_big as $data_pic_big_loop){
$data_pic_all .= $data_pic_big_loop;
}
}
$conter_data = ''.$data_pic_all.'
'.nl2br($data_content).'
';
break;
case 6:
if(!empty($data_pic_big)){
foreach($data_pic_big as $data_pic_big_loop){
$data_pic_all .= $data_pic_big_loop;
}
}
$conter_data = ''.nl2br($data_content).'
'.$data_pic_all.'
';
break;
case 7:
$data_youtube = str_replace('allowfullscreen>','allowfullscreen id="ShowYouTube">',html_entity_decode(stripslashes($data_youtube)));
$conter_data = ''.$data_youtube.nl2br($data_content).'
';
break;
default:
$conter_data = nl2br($data_content);
$conter_data = ''.$conter_data.'
';
}
if($data_type!=7){
$conter_data = content_link($conter_data);
}
if(!empty($data_file)){
$conter_data =$conter_data."相關檔案下載連結︰
";
foreach($data_file as $data_file_loop){
$conter_data =$conter_data.$data_file_loop."
" ;
}
}
return $conter_data;
}
?>