2014年6月9日 星期一

【PHP】過濾字串,防止XSS及SQL Injcettion

addslashes 過濾危險字元前面加\ 。
stripslashes 還原將\拿掉。
htmlspecialchars 只針對部份特殊字元處理, 所以未指定字串實際編碼時,仍然可以正確運作。
htmlentities 針對全部字元處理,所以若未指定字串正確編碼時,就會出現亂碼,因為預設是 ISO 編碼,修改編碼方式,htmlentities($str, ENT_QUOTES, 'UTF-8')。
htmlspecialchars 解譯htmlspecialchars_decode
mysql_real_escape_string 轉義SQL 語句中使用的字符串中的特殊字符。
過濾掉ch(xx) preg_replace("/ch(.*?)/","",$str)

防止 SQL injection 最好的方式是用 PDO ,不用過濾字也不會有這問題,因為他SQL語句跟變數是分開發送,但舊版的程式要全部改成 PDO 工程浩大,所以還是要用上述方法來防範,XSS攻擊可用 htmlspecialchars 、htmlentities 作防範,全過一次過濾可以用 array_walk_recursive、array_map。

2014年6月5日 星期四

【PHP】程式執行時間

2014年6月4日 星期三

【PHP】FTP

2014年5月30日 星期五

【PHP】預防XSS攻擊



*單一變數 $a = stripslashes_gpc($a);
*陣列 array_walk_recursive($_POST, 'stripslashes_gpc');
*不適用網頁編輯器

2014年5月29日 星期四

【MySQL、MSSQL】 分頁寫法

MSSQL 分頁的寫法:
抓取第80000~80020的資料 

SELECT * FROM
(SELECT ROW_NUMBER() over (order by id ASC) sort,* FROM test) as c
WHERE sort BETWEEN 80000 and 80020

OR

WITH Table AS (
   SELECT ROW_NUMBER() over (order by id ASC) sort,* FROM test
) SELECT * FROM Table WHERE sort BETWEEN 80000 and 80020



MYSQL:

SELECT * FROM `test` LIMIT 80000,20


* MySQL 簡單多了


2014年5月28日 星期三

【MYSQL、MSSQL】複製資料表、複製一筆資料

1.複製一個資料表
MySQL 建議使用下面的方式,好處是 Schema 會一樣
  1. CREATE TABLE new_table LIKE old_table;
  2. INSERT new_table SELECT * FROM old_table
MSSQL 要使用 SELECT * INTO new_table FROM old_table
只複製結構 SELECT * INTO new_table FROM old_table WHERE 1=0

2.複製一筆資料
MySQL、MSSQL 都可使用

INSERT INTO test(
id,
        name,
test1,
test2
)
SELECT
3 AS id,
name,
'test' AS test1,
test2
FROM test
WHERE id =1

* 要複製原來的值就不用AS

3.運用
當資料量大,查詢時可將一個表拆成多個表
如:
Insert Into new_table (學號, 姓名,國文,英文,數學)
Select * From old_table Where 英文>90

2014年5月15日 星期四

【Jquery】商品切換效果

範例一:右下左飄走
範例網址:演示



範例二:往右消失
範例網址:演示1  演示2

2014年5月8日 星期四

【PHP】截取中文字

2014年5月7日 星期三

【PHP】檔案寫入

網站範例連結



2014年5月6日 星期二

【PHP】匯入EXL

phpExcelReader 載點
使用方法:

PHPExcel: