來當資安研究員,Joomla 的 XSS 漏洞研究

前陣子,在全世界 CMS (Content Management System) 市場擁有 2% 市占率的 Joomla 被發現含有 XSS (Cross-Site Scripting) 漏洞。 造成這個漏洞的原因並非是 Joomla 的程式邏輯有什麼問題,而是 PHP 本身提供的函式...

用 PHP 解釋 SOLID 原則裡的 O

此為 SOLID 原則介紹的系列文章之一,所有文章的連結如下。用 TypeScript 解釋 SOLID 原則裡的 S用 PHP 解釋 SOLID 原則裡的 O用 TypeScript 簡單介紹 SOLID 原則裡面的 L用 PHP 簡單介紹 SOLID 原則裡面的 I用 Type...

簡單介紹 PHP 8.1 的列舉 (Enumerations)

PHP 8.1 在前陣子正式推出!加入不少新功能,其中包含最多人期待的列舉 (Enumerations)。列舉可以用來定義一系列的常數設定值,避免在開發時使用無效的設定值。簡單的 enum 設定如下。// 有回退的 enum (也就是那個...

Laravel ORM 的新功能,One of Many

在 Laravel 8.42 版本中,新增了一個蠻有趣的語法 One of Many。可以用來找出一對多關聯中,再「多」裡面「最新」的那一筆紀錄,並建立一對一關聯。簡單舉個例子,以部落格文章 (Post) 與留言回覆 (Reply) 舉例。一...

Laravel 8.37 的新功能,匿名 Migration

這個功能的想法起因於某個 Laravel 的 issue,這個 issue 描述了一個問題。問題中描述的狀況是:在專案版本 1.0 的時候建立一個 migration,名稱為 create_new_table。在專案版本 1.1 的時候建立一個 migration,名...

使用 Docker 把自己的 Laravel 專案容器化

最近我正在學習如何使用容器管理平台 K8s,過程中深刻體會到容器化所帶來的許多好處。舉例來說,它可以更好地實現水平擴展,同時在更新服務時,可以使用滾動更新 (rolling update) 的方式,讓服務不間斷。因此某一天...

在 Laravel 中使用 Algolia 實作搜尋功能

Algolia 是一個專精於搜尋的網路服務。與 Elasticsearch 類似,只要將可供搜尋的資料匯入至 Algolia 的資料庫 (Index) 就可以在前端使用 Call API 的方式進行搜尋並取得搜尋結果。有許多網站或是程式文件都是使用 Al...

簡單介紹 Laravel 的 DB Transactions

MySQL 資料庫,PHP 的好夥伴,在當前的版本中,MySQL 資料庫基本上都是使用 innoDB 作為預設的資料庫引擎。innoDB 與之前 MyISAM 相比,支援了 ACID 相容的交易 (Transaction) 功能。所謂的交易,是資料庫管理系統執...

簡單介紹 Laravel 的 replicate helper

如果需要從資料庫中複製一筆資料來產生新資料的話,Laravel 的 ORM 提供一個 replicate 方法。在複製完之後,你還可以對資料內容進行調整並儲存,生成一筆新的資料。下面是範例,首先我們先取得 id 為 1 的資料。$po...

不寫 JavaScript,就讓網站變成 SPA!Laravel Livewire 初體驗 (下)

此篇文章為下篇,還沒有看過上篇的朋友,建議可以先看完上篇文章。繼續之前的文章,我們已經有了回覆區塊,也完成了對回覆表單的內容進行即時驗證,本篇文章會完成將回覆的內容存進資料庫,並在回覆表單底下顯示所有...