1.負載平衡 Session不好處理,用token後台可以支援多個平台(web、APP)
2.防止跨網域請求偽造攻擊(CSRF),每次請求都要先獲得token,只有連結不能執行
產生 token
https://blog.7311.tw/2013/12/php-token.html
https://yami.io/jwt/
2018年6月26日 星期二
【jquery】bind、live、on
bind必需要每一個HtmlElement都要綁定,而live不用,
live適合用在動態新增element,如Ajax下載回來的HTML,
用live其中相同的selector的HtmlElement,就不用重Bind,
可以省去不少麻煩。
$("#myform").on("change","select",save_complete);
$("#myform").on("click",".del_score",del_score);
https://dotblogs.com.tw/wadehuang36/2010/10/13/jquery-bind-live
live適合用在動態新增element,如Ajax下載回來的HTML,
用live其中相同的selector的HtmlElement,就不用重Bind,
可以省去不少麻煩。
//在 jQuery 1.3 以上版本
$(selector).live(events, data, handler);
//在 jQuery 1.4.3 以上版本
$(document).delegate(selector, events, data, handler);
//在 jQuery 1.7 以上版本
$(document).on(events, selector, data, handler);
$(":input").bind("keyup change", function(e) {
// do stuff!
})
$("#myform").on("change","input",save_complete);$("#myform").on("change","select",save_complete);
$("#myform").on("click",".del_score",del_score);
https://dotblogs.com.tw/wadehuang36/2010/10/13/jquery-bind-live
【javascript】event.preventDefault() 與 event.stopPropagation()
javascript 要停止執行程式可以用 event.preventDefault() 與 event.stopPropagation()
stopPropagation 可阻止冒泡事件發生
差別:https://dotblogs.com.tw/harry/2016/09/10/131956
https://www.cnblogs.com/jiqing9006/archive/2012/09/11/2679831.html
stopPropagation 可阻止冒泡事件發生
差別:https://dotblogs.com.tw/harry/2016/09/10/131956
https://www.cnblogs.com/jiqing9006/archive/2012/09/11/2679831.html
2018年6月25日 星期一
【Bootstrap】CSS3 icon 圖示
做網頁常常要用到小icon,以前都是用image,
現在可以直接用更方便的bootstrap的css的icon,
https://www.w3schools.com/icons/bootstrap_icons_glyphicons.asp
現在可以直接用更方便的bootstrap的css的icon,
https://www.w3schools.com/icons/bootstrap_icons_glyphicons.asp
2018年6月13日 星期三
【PHP】HTML直接輸出PDF
可以使用 tcpdf
網址:https://tcpdf.org/
範例:https://tcpdf.org/examples/example_021/
網址:https://tcpdf.org/
範例:https://tcpdf.org/examples/example_021/
require("class/TCPDF-master/tcpdf.php"); class Mya_tcpdf { public function tcpdf_html($html, $title) { // create new PDF document $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // set document information $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor(''); $pdf->SetTitle($title); $pdf->SetSubject(''); $pdf->SetKeywords(''); // set default header data $pdf->setPrintHeader(false); $pdf->setFooterFont(array(PDF_FONT_NAME_DATA, '', 10)); // set default monospaced font $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); // set margins //$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetMargins(10, 10, 10); $pdf->SetHeaderMargin(0); $pdf->SetFooterMargin(10); // set auto page breaks $pdf->SetAutoPageBreak(TRUE, 10); // set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); // set some language-dependent strings (optional) if (@file_exists(dirname(__FILE__).'/lang/eng.php')) { require_once(dirname(__FILE__).'/lang/eng.php'); $pdf->setLanguageArray($l); } // set font $pdf->SetFont('msjh','',1); // 字形需另外下載 // add a page $pdf->AddPage(); // output the HTML content $pdf->writeHTML($html, true, false, true, false, ''); // reset pointer to the last page $pdf->lastPage(); // --------------------------------------------------------- //Close and output PDF document $pdf->Output("abc.pdf", 'I'); } }
【PHP】HTML Purifier 可過濾HTML限定只能用那些HTML
碰到只能用某些HTML,自己過濾超麻煩,
後來找到好用的套件 :HTML Purifier
裡面還有很多功能,也可阻擋XSS攻擊
後來找到好用的套件 :HTML Purifier
裡面還有很多功能,也可阻擋XSS攻擊
require('class/htmlpurifier/HTMLPurifier.auto.php'); $config = HTMLPurifier_Config::createDefault(); $config->set('HTML', 'Allowed', 'a[accesskey|href|rel|tabindex}target|type] ,area[accesskey|alt, coords|href|name|shape|tabindex|target] ,img[alt|border|height|ismap|src|usemap|width] ,b,blockquote[cite],br,dd,div,dl,dt,em,h1,h2,h3,h4,h5,h6 ,hr,i,li[value],map,ol[start|type] ,nav[accesskey|contenteditable|contextmenu|data-*|draggable|dropzone|hidden|spellcheck|tabindex|translate] ,ol[start|type],p,pre,rp,rt,ruby,s,small,source,span,strike,strong,style,sub,sup, ,table[border|cols|summary|cellpadding|cellspacing|align] ,tbody[valign],td[bordercolor|colspan|rowspan],tfoot[valign] ,th[colspan|rowspan|scope],thead[valign],tr[colspan|rowspan] ,tt,u,ul,video[autoplay|controls|height|loop|muted|poster|preload|src|width] ' ); $purifier = new HTMLPurifier($config); echo $cleanContent = $purifier->purify($content);
2018年6月7日 星期四
【Jquery UI】拖移(sortable)抓到值
$(".cat1 .type-sort").sortable({update: function (e, ui){
$current_id = ui.item.attr('id');
$change_id = ui.item.prev().attr('id');
console.log(ui.item.attr('id')+'/'+ui.item.prev().attr('id'));
console.log($("#"+$current_id).html());
}});
$current_id = ui.item.attr('id');
$change_id = ui.item.prev().attr('id');
console.log(ui.item.attr('id')+'/'+ui.item.prev().attr('id'));
console.log($("#"+$current_id).html());
}});
【Jquery】動態產生也可綁定事件
利用Jquery產生出來的物件 (append、prepend),
在之前設定的$('.item').click()會失效,
要改成 $('body').on('click','.item',funciton (){});
在之前設定的$('.item').click()會失效,
要改成 $('body').on('click','.item',funciton (){});
訂閱:
文章 (Atom)