一起草最新网址_日韩一区二区麻豆国产_91视频婷婷_日本一区二区视频在线_日韩激情一区二区三区_国产另类第一区_成人免费在线播放视频_亚洲永久精品ww.7491进入_久久这里有精品视频_久久精品一级片_日韩av在线网页_波多野结衣不卡视频

PHP:避免重復提交和檢查數據來路(2)_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:php設計模式介紹之值對象模式
在所有的最簡單的程序中,大多數對象都有一個標識,一個重要的商業應用對象,例如一個Customer或者一個SKU,有一個或者更多的屬性---id,name,email地址,這樣可以把它從同一個類的其他實例區分開來。此外,對象有一個恒定的標識:它是貫穿于整個應用程序的一個

請大家看代碼,感覺哪里有不合理的地方,還請賜教!謝謝.

加密我是找的網上的一個方法,稍作了一下修改.

GEncrypt.inc.php:

 

class GEncrypt extends GSuperclass {

protected static function keyED($txt,$encrypt_key){

$encrypt_key = md5($encrypt_key);

$ctr=0;

$tmp = "";

for ($i=0;$i

if ($ctr==strlen($encrypt_key)) $ctr=0;

$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);

$ctr ;

}

return $tmp;

}

public static function encrypt($txt,$key){

//$encrypt_key = md5(rand(0,32000));

$encrypt_key = md5(((float) date("YmdHis") rand(10000000000000000,99999999999999999)).rand(100000,999999));

$ctr=0;

$tmp = "";

for ($i=0;$i

if ($ctr==strlen($encrypt_key)) $ctr=0;

$tmp.= substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));

$ctr ;

}

return base64_encode(self::keyED($tmp,$key));

}

public static function decrypt($txt,$key){

$txt = self::keyED( base64_decode($txt),$key);

$tmp = "";

for ($i=0;$i

$md5 = substr($txt,$i,1);

$i ;

$tmp.= (substr($txt,$i,1) ^ $md5);

}

return $tmp;

}

}

?>

GToken.inc.php

方法:

a,granteToken 參數:formName,即動作名稱,key是加密/解密 密鑰.

返回一個字符串,形式是: 加密(formName:session_id)

b,isToken 參數:token 即granteToken產生的結果,formName,動作名稱,fromCheck是否檢查來路,如果為真,還要判斷token里的session_id是否和當前的session_id一至.

c,dropToken,當成功執行一個動作后,調用這個函數,把這個token記入session里,

 

/**

* 原理:請求分配token的時候,想辦法分配一個唯一的token, base64( time rand action)

* 如果提交,將這個token記錄,說明這個token以經使用,可以跟據它來避免重復提交。

*

*/

class GToken {

/**

* 得到當前所有的token

*

* @return array

*/

public static function getTokens(){

$tokens = $_SESSION[GConfig::SESSION_KEY_TOKEN ];

if (empty($tokens) && !is_array($tokens)) {

$tokens = array();

}

return $tokens;

}

/**

* 產生一個新的Token

*

* @param string $formName

* @param 加密密鑰 $key

* @return string

*/

public static function granteToken($formName,$key = GConfig::ENCRYPT_KEY ){

$token = GEncrypt::encrypt($formName.":".session_id(),$key);

return $token;

}

/**

* 刪除token,實際是向session 的一個數組里加入一個元素,說明這個token以經使用過,以避免數據重復提交。

*

* @param string $token

*/

public static function dropToken($token){

$tokens = self::getTokens();

$tokens[] = $token;

GSession::set(GConfig::SESSION_KEY_TOKEN ,$tokens);

}

/**

* 檢查是否為指定的Token

*

* @param string $token 要檢查的token值

* @param string $formName

* @param boolean $fromCheck 是否檢查來路,如果為true,會判斷token中附加的session_id是否和當前session_id一至.

* @param string $key 加密密鑰

* @return boolean

*/

public static function isToken($token,$formName,$fromCheck = false,$key = GConfig::ENCRYPT_KEY){

$tokens = self::getTokens();

if (in_array($token,$tokens)) //如果存在,說明是以使用過的token

return false;

$source = split(":", GEncrypt::decrypt($token,$key));

if($fromCheck)

return $source[1] == session_id() && $source[0] == $formName;

else

return $source[0] == $formName;

}

}

?>

示例:

首先從$_POST里取出token,用isToken判斷.

 

include("../common.inc.php");

$token = $_POST["token"];

if (GToken::isToken($token,"adminLogin",true)) {

$vCode = $_POST["vCode"];

if (strtoupper($vCode) != strtoupper($_SESSION[GConfig::SESSION_KEY_VALIDATE_CODE ])) {

throw new Exception("驗證碼不正確!");

}

$vo = new VO_Admin();

$vo->setNickName($_POST["name"]);

$vo->setPwd($_POST["pwd"]);

$mo = new MO_Admin();

$mo->setVO($vo);

$f = $mo->login();

if(!$f){

throw new Exception("用戶名或密碼不正確!");

}else{

GToken::dropToken($token);

//header("location:".GDir::getRelativePath("/admin/index.php"));

echo "here"; //如果是外部提交的,這句就不會打印出來!

}

}

$sFile = GDir::getAbsPath(GConfig::DIR_SERIALIZE ,"admin/login");

$tpl = GSerialize::load($sFile);

if ($tpl === false) {

$tpl = new GTpl(GConfig::DIR_SKIN ,GConfig::DEBUG_TPL_FILE );

$tpl->load(array(

"header" => "admin/header.html",

"footer" => "admin/footer.html",

"admLogin" => "admin/login.html",

"admLoginJs"=> "admin/loginJs.html"

));

GSerialize::save($tpl,$sFile);

}

$tpl->assign("title","管理員登陸");

$tpl->assign("path",GDir::getRelativePath(SITE_DIR));

$tpl->assign("vImg",GDir::getRelativePath("/vImg.php"));

if (MO_Admin::isLogined()) {

$tpl->parseBlock("blk_logined");

}else {

$tpl->assign("token",GToken::granteToken("adminLogin"));

$tpl->parseBlock("blk_loadScripts","cond_notLogin");

$tpl->parseBlock("blk_notLogin");

}

echo $tpl->parse("header");

echo $tpl->parse("admLogin");

echo $tpl->parse("footer");

echo $tpl->parse("admLoginJs"); Webjx.Com

?>

這一切看著似乎是沒有問題了.

如果想判斷是否是執行的匹配動作,可以把isToken里的formName改一下,運行,很好,沒有匹配上.證明這個成功.

是否能避免重復提交,我沒有驗證,太簡單的邏輯了.

余下的就是判斷 來路檢查 是否正常工作了.

把上面的示例產生的html copy到本地的一個網頁內(以達到不同的域的目的),運行,檢查來路不明,沒有執行動作(需要把isToken的第三個參數設為true).

把isToken的第三個參數設置為false,提交,指定的動作執行了!

好了,到此為止,不知道哪個地方是否還存在BUG,這就要在長期運用中慢慢調試修改了!

分享:談PHP程序開發中的中文編碼問題
PHP程序設計中中文編碼問題曾經困擾很多人,導致這個問題的原因其實很簡單,每個國家(或區域)都規定了計算機信息交換用的字符編碼集,如美國的擴展 ASCII 碼, 中國的 GB2312-80,日本的 JIS 等。作為該國家/區域內信息處理的基礎,字符編碼集起著統一編碼的

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:PHP教程/更新時間:2009-03-15
相關PHP教程
日本一级黄色录像| 可以看av的网站久久看| 亚洲aaa在线观看| 欧美性x x x| 久久精品国产理论片免费| 久久视频在线直播| 欧美变态tickle挠乳网站| 欧美性受xxxx黑人猛交| 国产精品视频久久久| 三级在线免费观看| 91制片厂在线| 国产精品色呦呦| 国产综合色香蕉精品| 国产精品免费成人| 国产男男gay体育生白袜| 91网址在线看| 亚洲午夜免费电影| 欧美综合久久久| 日韩中文娱乐网| 亚洲资源在线网| 亚洲最新在线| 91欧美日韩一区| 欧美成aaa人片免费看| 精品免费日韩av| 不卡一卡2卡3卡4卡精品在| 男女超爽视频免费播放| 国产欧美精品一二三| 国产亚洲第一页| 国产高清视频免费观看| 亚洲国产一区二区视频| 精品欧美日韩在线| 国产一区二区网站| 欧美二区在线观看| 免费久久99精品国产自| 好吊色视频一区二区三区| 国产成人亚洲综合a∨婷婷图片| 稀缺小u女呦精品呦| 国产主播第一页| 亚洲色图.com| 日韩精品免费在线观看| 日韩性xxxx爱| 久久久久久久久爱| 天天干天天色天天爽| 亚洲精品无码国产| 成人免费视频网站| 美女网站视频在线观看| 91麻豆产精品久久久久久| 日韩午夜激情电影| 亚洲日本欧美日韩高观看| 国产一区二区久久久| 性欧美成人播放77777| 老牛影视av牛牛影视av| 亚洲人视频在线观看| 欧美精品乱码久久久久久| 91免费看片在线| 影音先锋男人资源在线观看| 国产精品日韩精品欧美在线| 久久久精品日本| 最新不卡av| 手机在线免费毛片| 国产精品高潮呻吟久久久| 一区二区三区免费在线观看| 欧美日韩激情一区二区三区| 欧美一区二区免费观在线| 日韩精品在线私人| 国语自产在线不卡| 欧美日韩激情视频在线观看| 亚洲成熟少妇视频在线观看| 岛国精品在线观看| 亚洲精品国精品久久99热一| 欧美一级裸体视频| 欧美性猛交xxxx免费看久久久| www.好吊操| 久久久久久97三级| eeuss一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 日韩精品免费在线| 亚洲精品自在在线观看| 国产熟女一区二区| 91老司机福利 在线| 欧美巨乳在线观看| 日日橹狠狠爱欧美超碰| 国产精品区在线| 国产又黄又粗视频| 在线观看黄色网| 国产jizzjizz一区二区| 国产成人极品视频| 国产成人无码一区二区在线观看| 日韩永久免费视频| 91精品久久久久久久91蜜桃| 精品少妇在线视频| 波多野洁衣一区| 国产精品久久久久久久久久久久午夜片 | 麻豆精品传媒视频| 真人做人试看60分钟免费| aaa一级黄色片| 日本在线视频免费观看| 午夜亚洲国产au精品一区二区| 91嫩草在线视频| 一起草最新网址| av电影在线观看完整版一区二区| 国产精品久久久久久久美男| www.热久久| 国产精品com| 亚洲国产精品欧美久久| 性色av一区二区三区红粉影视| 毛片aaaaa| 懂色aⅴ精品一区二区三区蜜月| 日韩美女视频中文字幕| 90岁老太婆乱淫| 日韩伦人妻无码| 欧美日本一区二区三区四区 | 不卡视频在线观看| 国产女人精品视频| 国产成人精品一区二区无码呦| 欧美精品高清视频| 奇米精品一区二区三区| 国内精品免费**视频| 亚洲免费视频成人| 秋霞在线一区二区| 国产一区福利在线| 久久精品久久精品国产大片| 欧美极品少妇xxxxⅹ高跟鞋| 久久久久久久久久一区二区| 欧美中文字幕不卡| 国产又粗又硬视频| 精品久久久久久久久久久院品网 | 欧美黑人性生活视频| 一区二区三区四区欧美| 69国产精品视频免费观看| 亚洲国产精品女人久久久| 黄色片在线观看免费| 欧美性xxxx在线播放| 国产一级二级毛片| 石原莉奈在线亚洲二区| 久久福利电影| 97久久精品人人爽人人爽蜜臀| 国产精品日韩一区二区| 中文字幕精品视频在线观看| 久久久精品影视| 国产一区二区动漫| 国产艳俗歌舞表演hd| 午夜欧美在线一二页| 视频一区三区| 国产三级伦理片| 青青久久aⅴ北条麻妃| 久久久久久久久久97| 在线视频亚洲一区| 中文字幕第100页| 亚洲精品国产第一综合99久久| 国产一区二区视频在线免费观看| 91制片厂在线| 国产精品久久久久影院| www.xxxx欧美| 国产精品专区在线| 美美哒免费高清在线观看视频一区二区| 国产美女免费视频| 国产www精品| 精品一区二区在线观看| 日韩成人手机在线| 欧美性色欧美a在线播放| 亚洲一级片在线播放| 久久人人爽人人爽人人片av高请| 久久国产精品72免费观看| 无码播放一区二区三区| 日韩欧美成人一区| 久久久久久久久久久久久av| 国产精品一区av| 久久久久欧美精品| 一道本在线观看视频| 亚洲综合在线观看视频| 日本55丰满熟妇厨房伦| 亚洲电影免费观看| 亚洲欧美综合另类| 成人激情视频免费在线| 成人av在线一区二区三区| 中文精品无码中文字幕无码专区| 天天影视色香欲综合网老头| 最近中文字幕无免费| 亚洲综合成人在线| 男操女免费网站| 欧美日韩精品一区二区三区| 色婷婷av一区二区三| 男女视频网站在线观看| 久久精品欧美视频| av一区二区不卡| 成年女人免费视频| 日本一区二区不卡| 久久精品国产一区二区| av在线播放亚洲| 1区2区3区国产精品| 日韩av一卡二卡三卡| 一本色道亚洲精品aⅴ| 女人扒开腿免费视频app| 亚洲国产精品黑人久久久| www.99riav| 国产精品网站在线观看| 久久久久无码国产精品| 国产99午夜精品一区二区三区| 蜜桃久久久久久| 亚洲成人午夜在线| 精品女同一区二区三区在线播放| www.国产视频.com| 国产精品久久久99| 91嫩草丨国产丨精品| 热久久这里只有精品| 亚洲视频一区在线| 在线观看毛片网站| 中文字幕亚洲影院| 国产成人精品av在线| 国产女人18毛片水真多成人如厕| 五月天av网站| 国产97在线|日韩| 亚洲深夜福利在线| 日本免费www| 在线亚洲人成电影网站色www| 中文字幕成人在线视频| 久久免费成人精品视频| 26uuu色噜噜精品一区| 青青草精品视频在线| 欧美午夜性色大片在线观看| 97人妻人人揉人人躁人人| 日韩中文字幕国产| 无套内谢大学处破女www小说| 欧美激情视频播放| 97精品久久久午夜一区二区三区| 欧美国产日韩综合| 国风产精品一区二区| 一区二区三区四区在线观看视频| 洋洋成人永久网站入口| 69视频免费看| 妞干网在线视频观看| 中文字幕综合在线| 成人乱码一区二区三区| 91精品国产吴梦梦| 亚洲一二三专区| 一级片中文字幕| 成人欧美一区二区三区在线| 亚洲午夜精品网| 国产精品拍拍拍| 日韩一区二区在线看片| 中文字幕av第一页| 小早川怜子一区二区三区| 91嫩草在线| 欧美日韩一区免费| 国产伦子伦对白视频| www插插插无码视频网站| 欧美日韩亚洲不卡| 日本污视频网站| 666精品在线| 亚洲电影一区二区| 国产精品乱码一区二区| 国产又粗又大又爽的视频| 深夜精品寂寞黄网站在线观看| 国产女人18水真多18精品一级做 | 免费不卡亚洲欧美| 亚洲国产小视频| 伊人伊成久久人综合网小说| 国产亚洲色婷婷久久| 亚洲精品国产精品国自| 国产精品少妇自拍| 欧美视频在线不卡| 免费在线看黄色片| 丁香桃色午夜亚洲一区二区三区| 国产日本一区二区三区| 久久国产一二区| 久久久精彩视频| 亚洲风情在线资源站| 久久发布国产伦子伦精品| 91精品国产综合久久婷婷香蕉 | 青青视频在线免费观看| 欧美专区中文字幕| 狠狠久久亚洲欧美专区| 久久人人爽人人爽人人| 日本中文字幕网址| 国内成人精品视频| 久久久久99| 看一级黄色录像| 精品视频一区二区不卡| 精品久久久久亚洲| 亚洲综合色区另类av| 黄色片视频免费| 国产精品久久国产| www.精品av.com| 午夜毛片在线观看| 久久久久久久久久久一区| 亚洲一区二区五区| 草久久免费视频| 亚洲精品人成| 6080yy午夜一二三区久久| 亚洲一二三四视频| 国产+人+亚洲| 成人动漫在线一区| 亚洲一二三不卡| 亚洲人成欧美中文字幕| 手机av免费在线观看| 中文字幕人成一区| 在线看欧美日韩| 欧美77777| 69xxx免费视频| 国产精品天天狠天天看| 国内精品写真在线观看| 国产在线观看福利| 美女av一区二区三区| 日韩大片免费在线观看| 日韩成人手机在线| 精品剧情v国产在线观看在线| 黄色一级片在线免费观看| 欧美日韩在线一区二区三区| 6080亚洲精品一区二区| 免费看成人av| 久久久999精品视频| 欧美日韩国产精品专区 | 国产精品50p| 久久人人爽亚洲精品天堂| 国产精品久久三| 中文字幕在线欧美| 成人免费xxxxx在线视频| 国产精品大陆在线观看| 欧美日韩亚洲综合| 中文字幕乱码人妻无码久久| 超碰10000| 日韩在线一区二区三区免费视频| 成人一区二区三区| 午夜视频在线观看国产| 国产一区香蕉久久| 精品视频一区二区三区免费| 91福利免费视频| 欧美视频在线观看网站| 久久精品国产一区| 国产亚洲精品aa| 国产无码精品久久久| 五月天男人天堂| 亚洲精品视频在线播放| 精东粉嫩av免费一区二区三区| 日日噜噜夜夜狠狠久久波多野| 日本a级片在线观看| 欧美黑人巨大精品一区二区| 久久久综合网站| 久久免费播放视频| 青草草在线视频| 精品粉嫩超白一线天av| 一区二区三区高清在线| 精品一区二区三区在线播放| 中文字幕第99页| 破处女黄色一级片| 中文字幕一二三区| 亚洲最大免费| 日本成熟性欧美| 日韩一二在线观看| 欧美精品手机在线| 亚洲国产精品人人做人人爽| 精品人妻一区二区三区四区不卡 | 国产精品jizz| 欧美日韩综合网| 操人视频在线观看欧美| 18成人在线视频| 国产免费久久久| 日本道中文字幕| 国内自拍中文字幕| 国产精品夜色7777狼人| 国产大尺度在线观看| 夜夜嗨av一区二区三区免费区| 亚洲精品国产高清久久伦理二区| 国产激情视频一区二区在线观看| 天天影视综合色| 98精品国产自产在线观看| 在线视频欧美日韩| 成人亚洲精品777777大片| 中文字幕一区二区三区有限公司 | 久久精品国产免费| 超碰在线97观看| 亚洲天堂视频一区| 天天干天天玩天天操| 一区二区冒白浆视频| 久久这里只有精品99| 欧美日韩免费一区| 91一区二区在线| 一道本在线视频| 无码一区二区三区在线| 黄色一级片播放| 国产奶头好大揉着好爽视频| 色综合666| 成人国产在线视频| 日韩精品视频免费专区在线播放 | 蜜桃传媒一区二区亚洲| 波多野结衣二区三区| 国产成人手机在线| 国产按摩一区二区三区| 欧美自拍第一页| 久久se这里有精品| 成人av网站在线| 亚洲激情在线播放| 国产精品黄色在线观看| 国产人伦精品一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲天堂手机在线| 日本少妇高清视频| 波多野结衣爱爱视频| 波多野结衣爱爱视频| 亚洲午夜久久久影院伊人| 久久伊人精品视频| 国内精品久久久久久久久| 国产成人一区二区| 97人人模人人爽视频一区二区| 国产伦精品一区二区三区| 天天好比中文综合网| 精品人妻人人做人人爽| 亚洲综合首页| 极品粉嫩国产18尤物|