Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: PHP

Hook on header and footer

Posted on 2012 年 7 月 18 日2021 年 3 月 12 日 By 日落 在〈Hook on header and footer〉中尚無留言

最近學用 Ajax 處理一些網頁上的事件,javascript 越寫越長,就覺得有必要按照程式碼類別拆成不同檔案,在執行時期決定到底哪些檔案需要匯入。像是管理介面用的 CSS、javascript 就需要在一般頁面當中載入,或是在不需要使用到 Google Maps 時將 javascript API 拿掉。

CodeIgniter 在 controller 與 view 切開後,傳遞資訊只能在 loader 載入時送參數,不過若有多個需要動態載入的資源放在一起,程式寫起來會很麻煩。

// Controller
$data['googleMapAPI'] = true;
$data['jqueryPlugin'] = true;

// View
<?php if( $googleMapAPI == true ): ?>
   <script src=" ..... "></script>
<?php endif; ?>

<?php if( $jqueryPlugin == true ): ?>
   <script src="...."></script>
<?php endif; ?>

這時候想到 WordPress Codex 有個不錯的作法可以參考。Wordpress 為了讓樣板、外掛製作能夠分開、不會互相影響,做出了一個 add_action( ) 的功能,外掛設計師將需要執行的動作「註冊」到系統中,樣板設計師在特定位置呼叫時,系統便會執行已註冊的動作。

// Plugin
<?php
   add_action('wp_head', 'js_include');
   add_action('wp_footer', 'action-on-ready');

   function js-include(){
      echo '<script src="..."></script>';
   }

   function action-on-ready(){
      echo '<script> $('document').ready(); </script> ';
   }
?>

// Template
<html>
<head>
   <titie> .... </title>
   <!-- load script in header -->
   <?php echo wp_head(); ?>
</head>
<body>
   ......
   <!-- load page scripts in footer -->
   <?php wp_footer(); ?>
</body>
</html>

CodeIgniter 有 Hook 類別,不過並沒有 view 的插入點,想試試看能不能把 wordpress add_action( )  功能實作出來。

Tags:PHP, 網頁設計

CodeIgniter 使用心得分享

Posted on 2012 年 6 月 15 日2021 年 3 月 12 日 By 日落 在〈CodeIgniter 使用心得分享〉中尚無留言

以前寫 PHP 時不知道有 framework 可以用,程式從頭到尾都硬幹,每個輪子都自己打造的下場,不外乎就是時間不夠用、事情常常 delay、bug 買一送二越 de 越多 …..。

得知有 PHP frameworks 時,大為欣喜,只是這麼多套 framework 到底應該先挑哪一套當作起步?就怕挑了一個功能太強太複雜的會讓自己一直碰壁、挑了個太冷門的之後換一套 framework 就接近從頭學起。

經朋友介紹,CodeIgniter 該有的基本功能都有了,且不難上手,適合第一次沒用過 framework 的人當作入門。所以最近幾個網頁功能都用 CodeIgniter 當作練習。

最近 C4Labs 朋友在玩  PHP,所以藉機分享一下最近 CodeIgniter 的使用經驗,以及問題、解決方法。以下是投影片,請多指教。

Introduction to codeigniter

View more PowerPoint from Zero Huang

Ref:
CodeIgniter | 小惡魔 – 電腦技術 – 工作筆記 – AppleBOY
http://blog.wu-boy.com/tag/codeigniter/

ps. 沒事不要裝 ion_auth 啊,會讓人嚴重墮落 XD

Tags:CodeIgniter, PHP

XSS Filter on CodeIgniter

Posted on 2012 年 6 月 13 日2021 年 3 月 12 日 By 日落 在〈XSS Filter on CodeIgniter〉中有 2 則留言

過去防止 XSS 攻擊都是透過 htmlspecialchars() 將「<」、「>」等符號編碼,但若是前端有使用 CKEditor 之類工具,文章中的樣式也會全部被洗掉。

最近用 CodeIgniter Input class 提供的 XSS filter 時,無意間發現 filter 不是將所有特殊符號過濾掉,而是經過 parser 以後才決定哪些標籤和屬性需要刪除。

一般常見用來測試 XSS 的字串:

<script>alert(123)</script>

輸出:

[removed]alert(123)[removed]

若是將 javascript 嵌在屬性當中,CodeIgniter 會將標籤留下、屬性刪除:

<a href="#" onclick="alert(123)">test</a>

輸出:

<a >test</a>
Tags:CodeIgniter, PHP, 資訊安全

PHP Closing Tags

Posted on 2011 年 12 月 23 日2021 年 3 月 12 日 By 日落 在〈PHP Closing Tags〉中尚無留言

一般寫 PHP 會將系統設定、資料庫連結等功能分開放在多個不同的檔案中。

index.php:

<?php
   require('settings.php');

   // something else

   session_start();
?>

settings.php:

<?php
   // some settings
?>
 

以上程式執行以後會噴錯誤訊息:
session_start(): Cannot send session cache limiter - headers already sent
原因是在 index.php 呼叫 session_start() 之前已經輸出資料,不過到底是哪裡有輸出資料?仔細看才會發現 settings.php 在「?>」後方還換了一行,換行是在 PHP closing tag 之外,所以就被當作一般資料送出。

當程式很龐大時,這種 bug 實在會讓人摔鍵盤、丟滑鼠、凹螢幕。

事實上 PHP 程式不加上結尾的「?>」也是可以執行的,直譯器到檔案結尾會自動當作該程式段落結束,所以程式可以改寫成這樣:

index.php

<?php
   require('settings.php');

   // something else

   session_start();
 

settings.php

<?php
   // some settings
 
 
Tags:PHP, 程式設計

轉貼:開元中最好的 web 開發資源

Posted on 2011 年 6 月 11 日2021 年 3 月 12 日 By 日落 在〈轉貼:開元中最好的 web 開發資源〉中尚無留言

CoolShell.cn 網站上整理了不少網頁開發相關資源,包括:

  • 學習 HTML5 編成與設計
  • Server 端工具
  • PHP Framework 與工具
  • 資料庫
  • API 與即時資訊處理 (在線數據)
  • 線上軟體開發與媒體工具
  • 程式資源與版本管理工具
  • JavaScript Framework
  • JavaScript 移動與觸摸相關 framework
  • jQuery 外掛與相關資源
  • HTML5 視訊播放器
  • JavaScript 音訊處理與視覺化工具
  • JavaScript 2D、3D 圖形
  • JavaScript 與 HTML5 API (接口?)
  • 其他 JavaScript 工具
  • Client 端工具
  • CSS3 與字型資料
  • 網站樣板
忘了貼網址 XD

开源中最好的Web开发的资源

http://coolshell.cn/articles/4795.html
Tags:Apache, CSS, HTML, JavaScript, MySQL, PHP, 網路架站

文章分頁

上一頁 1 ... 19 20 21 ... 26 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.