bestlong 怕失憶筆記

當健忘由隨機逐漸趨向常態時,作筆記是非常必要的

Entries Tagged ‘PHP’

configure: error: Please reinstall the BZip2 distribution

在 base on php:<php version>-fpm 的 Dockerfile 安裝 php extension bz2

執行 docker-php-ext-install bz2 命令出現錯誤


1
2
checking for BZip2 in default path… not found
docker-php-ext-install bz2

只要先安裝相依套件


1
apt install libbz2-dev

Leave a Comment

將Zen Cart購物車系統修改MySQL連接指定為UTF-8字元集

國外開發的系統做了語系 utf-8 格式中文化處理之後使用系統輸入中文資料,使用 phpMyAdmin 連接 MySQL 資料庫查看還是會有儲存亂碼的問題。所以還是自行指定 Zen Cart 的資料庫連線過程會比較妥當。

請修改 includes\classes\db\mysql 目錄下的 query_factory.php 檔案,尋找下列程式碼段落:

1
2
3
4
5
6
7
      if (@mysql_select_db($zf_database, $this->link)) {
        $this->db_connected = true;
        return true;
      } else {
        $this->set_error(mysql_errno(),mysql_error(), $zp_real);
        return false;
      }

將其修改成

1
2
3
4
5
6
7
8
9
10
11
      if (@mysql_select_db($zf_database, $this->link)) {
        $this->db_connected = true;
       // *** Add Start ***
       mysql_query("SET NAMES 'utf8'", $this->link);
       mysql_query("SET CHARACTER SET UTF8", $this->link);
       // *** Add End ***
        return true;
      } else {
        $this->set_error(mysql_errno(),mysql_error(), $zp_real);
        return false;
      }

編輯儲存後再開始輸入中文資料就不會有亂碼問題,可以用 phpMyAdmin 確認是否正常顯示喔。

Comments (1)

幫 phpbb 論壇加上防機器人註冊的機制

自己用 phpbb 架設的討論區(www.bestlong.idv.tw),因為常常有軟體機器人來自動註冊會員,造成管理上的負擔。而這些機器人主要是為了廣告的目的。註冊時可以在會員資料輸入個人網址,而且不管是否啟動帳號都可在會員列表中看到網址,所以會被利用來提升搜尋引擎排名。若是有做到能自動啟用會員帳號的機器人,還可以進一步的發表文章內容當然就是廣告,讓管理者刪到手軟。

雖然竹貓星球中有許多 MOD 可以防堵此一問題,不過因為做法是公開的所以有可能會讓駭客加入到軟體機器人的智能當中。所以自己動手研究一下 phpbb 的程式碼,在註冊的過程中增加一些讓一般人可以判定的必要操作條件,讓機器人不會過關來達到防堵的目標。

 原本每日都有 5 個以上的機器人註冊帳號,自從加上防堵機制後果然就沒有再出現了。

Comments (2)

PHP Object Generator 幫你寫資料庫物件程式

一個滿好玩的開放原始碼的 PHP Object Generator (簡稱 POG)網站。能夠幫助程式設計師快速的產生具有 CRUD (Create、Read、Update、Delete)功能的 PHP database 物件程式碼。

只要簡單的三大步驟,首先輸入所使用的 PHP 語言版本(PHP4、PHP5、PHP5.1+)以及資料庫系統(目前只有看到 MySQL 的版本),再來輸入你想要的物件名稱,然後依序輸入所需要的欄位名稱與型態,預設只有三個欄位當然是不夠的,可以按下 [+ Add attribute] 按鈕來增加欄位數,最後按下 Generate code 的送出按鈕。

哇啦,程式碼就出來了,連建立資料表的 SQL 語法都幫你產生好了。所產生的程式碼會自動幫你加入一個以物件名稱加上 id 當作欄位名稱的自動編號欄位作為主鍵。

不過單就所產生出來的程式碼來說,對於想學習 PHP 程式設計的人很具有參考價值喔。

PHP Object Generator Form

網址:http://www.phpobjectgenerator.com/

Leave a Comment

設定 Return path 避免用 PHP mail() 寄出的信件被擋信

在 PHP 程式中用 mail() 寄出郵件,最簡單的用法如下:

<?php
$header = “From:My Name<my_name@mydomain.com>”;
mail($to, $subject, $email_body, $header);
?>

這樣的處理方式,當信件傳送到到 mail server 之後,系統會以預設的電子郵件地址代替(例如 me@localhost )。

因為上列程式碼只有設定郵件標頭的 From 內容,在目前 spam mail 猖獗的時代是不夠完善的。

大多數的 mail server 都會將這類的 mail 直接擋掉或是標記成 spam 而導致收件人收不到 mail 的困擾。

可以將程式碼改成下列內容,增加指定 Return-Path 屬性來解決問題:

<?php
$header = “From:My Name<my_name@mydomain.com>\r\n”;
$header .= “Reply-To: My Name<my_name@mydomain.com>\r\n”;
$header .= “Return-Path: My Name<my_name@mydomain.com>\r\n”;
mail($to, $subject, $email_body, $header);
?>

Leave a Comment

  • 工商服務

    廣告讀取中...
  • 近期留言

  • 標籤

  • 彙整