Drupal 與 Laravel

Laravel Drupal
Laravel Logo 圖片來源:https://github.com/laravel/art/blob/master/laravel-l-slant.png Drupal Logo 圖片來源:https://www.drupal.org/about/media-kit/logos

在爬文章的時候看到一則是討論 Drupal 8 與 Laravel-Drupal Vs. Laravel,看到當天晚上就把一些想法發表回應到文章下面,可是作者遲遲還沒有允許張貼,這幾天一樣跑去看那篇文章看,還是沒被公開發佈,就先把回應寫在自己的部落格上。(現在,作者已經公布了)

以下是我回應給作者的內容(有改了一些拼字、文法錯誤…)

Berfore starting to build and develop Drupal sites for over 1 year, I use Laravel framework. I think in some website types, eg. media and content, Drupal is more suitable. Because, in Drupal 7/8, the ImageStyle is powerful, it can process different image size for different device screens. Especially, in Drupal 8, the cache system allows to control the cache of page easily and flexible.

In the beginning of developing Drupal 7, I cannot accept and realize the configurations are in database. Although, the features module can help export the configs into code. Sometimes, when deploying into production or stage site, the exported features may break or encounter the different tid. In Laravel, all configs are in code. When deploying, developers only pull the branch and set the config values into environment variables.

Sometimes, I hate to take much time to work on the customized displays or modifying forms in Drupal, since in Laravel or others development, I only need to change HTML or blade. In Drupal, I should implement hook functions to alter rener array or Form API.

BTW, I prefer Drupal 8, due to OO design, new config management, service container, plugins system, event listener, routing and so on. They provides more structural ways to maintain and develop.

繼續閱讀 “Drupal 與 Laravel”

圖片

用OpenShift 開發網站

openshift
圖片轉自OpenShift

從大學畢業後,要免費用伺服器還蠻麻煩的一件事情,查了許多VPS ,開發環境都不是非常好,像有些主機還是使用PHP 5.3 以下,MySQL 也不支援InnoDB Engine,服務也不沒很穩定,免費的主機也不能苛求太多,OpenShift 是由Red Hat 建置,跑在Amazon EC2上,穩定度看來是不錯的。

1. 介紹OpenShift

OpenShift 是RedHat 建立的雲端服務,屬於平臺即服務 (PaaS),可以讓開發者或一般人方便的使用架設好的開發環境,不用花費太多時間在管理系統上面。官方也蠻不錯的,提供一個免費方案,另一個基本上算免費,先看一下比較。

Free Bronze
Small Gears(1~3) *1 免費 免費
Small Gears(4個以上) X 須付費
Gear 閒置 *2 2天 X
基本儲存空間/1個Gear 1G 1G
額外儲存空間 X 須付費
rhcloud.com 上的次級網域
自訂網域
分享SSL/TLS 憑證
自訂SSL/TLS 憑證 X
付款資訊 *3 X

備註:

  1. Gear 是一個被限制的資源(如:記憶體、儲存空間等),簡單來說像是一個電腦一樣,Small Gear 的資源就是512M 的記憶體、100M swap 空間、1G 儲存空間(可付費擴增)
  2. Gear 閒置指,如果在某段時間內(免費方案是2天)沒有接收到HTTP 要求的話,會進入idle 狀態,如果有HTTP Request 進來,就會進入Started了(自己測試idle 切換到started 要等10幾秒左右)
  3. 付款資訊在Bronze 方案,是要填入信用卡資訊的,所以小心Small Gear 用超過1G的儲存空間就會開始計費…

比較起來,OpenShift 還不錯,可以自訂網域,記憶體跑小demo 、做Lab或者是小流量的網站 也不錯。官方說明中,以Drupal 來估計,Small Gear 可以Free 方案大約可以每秒15 個頁面、數百篇文章、每個月5萬個訪客,詳細得比較可以去看https://www.openshift.com/products/pricing

支援的程式語言包括,Java、PHP、Python、Ruby、Node.js、Perl等,本篇文章以PHP 為開發環境,資料庫則有MySQL、MangoDB、PostgreSQL等,如果要知道支援的版本,可以至https://www.openshift.com/developers/technologies

繼續閱讀 “用OpenShift 開發網站”

用OpenShift 開發網站

CodeIgniter開啟CSRF保護時使用Ajax

最近在利用CodeIgniter開發網站時,需要檢查使用者輸入的值是否有重複,為了避免使用者都輸入完資料送出表單後才去檢查,利用JQuery中的Ajax在輸入完的時候就進行檢查,但是利用Chrome Developer Tool來Debug時候,發現錯誤訊息是:

POST http://localhost/index.php/my_ajax/is_username_duplicate 500 (Internal Server Error)

最後Google後發現原來是我在之前開啟CSRF的問題。

一、什麼是CSRF

CSRF(Cross-Site Request Forgey, 跨站冒名請求)為當使用者在已登入的狀態下,被攻擊的人執行了使用者未知的操作,因為,當使用者在登入狀態下,只要不關閉瀏覽器,就會保留著Session或Cookie,網站通常都是利用檢查Session或Cookie來確認使否連線進來的使用者是否已經登入,所以攻擊者可以利用社交攻擊,傳送一個連結或操作等,使用者在未知情況下去操作,就可能會依照使用者所安排好的操作去執行,聽來聽去可能有點霧煞煞,參考網路上的一下範例解釋一下:

HTTP Request有兩種分別是POST及GET,在GET 方法可以利用網址後面帶入變數的方式,例如:

攻擊者可能利用電子郵件或者社群網站寄送一個連結給使用者

http://www.buy.com/buy.php?item=002&to=attack

這個連結可能是讓使用者買某個東西送給某人,如果使用者不經意點擊,就可能發生了,那會有人說改用POST就好了,其實不盡然,因為只要攻擊者利用JavaScript就可以執行POST 方法了

繼續閱讀 “CodeIgniter開啟CSRF保護時使用Ajax”

CodeIgniter開啟CSRF保護時使用Ajax

利用CSS或JQuery製作邊框圓角

最近,在改網站的版面,想要製作圓角,有找到兩種方法可以達成目的。
第一種是利用CSS3的element來達成,可是,目前,IE8(含)之前的瀏覽器,不支援CSS3。所以,就算加上了CSS上去,使用IE8之前瀏覽器的使用者,還是看不到。另一個方法就是使用JQuery,但是前提是使用者沒有把瀏覽器關閉Javascript。

使用CSS

CSS3語法

  • 設定四個角:border-radius
  • 設定左上角:border-top-left-radius
  • 設定右上角:border-top-right-radius
  • 設定左下角:border-bottom-left-radius
  • 設定右下角:border-bottom-right-radius

繼續閱讀 “利用CSS或JQuery製作邊框圓角”

利用CSS或JQuery製作邊框圓角