CG 數位學習網 > PHP 教學



會員系統在入口網站、社群網站、購物網站,或是公司網站,幾乎已經是不可缺少的功能,擁有會員系統可以讓網站提供個人化服務,管理者可以透過會員系統瞭解訪客的族群與瀏覽行為,增加訪客的忠誠度。藉由分析與研究搜集到的重要資訊,協助您做出網站的經營決策,達到增加訪客流量的目標。

 

會員系統功能需求

使用 Dreamweaver 製作會員系統非常簡單,使用內建的工具就可以完成基本的會員系統,而部份需要的功能(例如上傳圖片)也可以透過擴充程式製作。我們先來看看這個會員系統的功能需求。

會員系統可以讓訪客申請成為會員,使用網站上的會員服務時必須輸入帳號與密碼登入,並可修改資料與執行登出網站的功能。

會員資料儲存於 tb_user 資料表,會員資料表的欄位規劃如下:

欄位名稱 資料型態 說明
user_ID smallint 會員編號 ( 主索引、自動編號 )
user_name varchar (20) 會員帳號
user_pass varchar (20) 登入密碼
user_nick varchar (20) 會員暱稱
user_mail varchar (30) 電子郵件
user_sex tinyint (1) 會員性別 ( 1 = 男 / 0 = 女 )
user_mobile varchar (20) 行動電話
signup_date date 註冊日期

 

會員系統網頁規劃

網頁說明 檔案名稱 說明
網站首頁 index.php 註冊連結 / 修改資料 / 登出
註冊會員 signup.php 註冊會員時填寫資料的網頁
註冊成功   註冊完成後出現的歡迎網頁
重複註冊   註冊帳號若重複出現的訊息
登入成功   登入會員成功時出現的訊息
登入失敗   帳號密碼錯誤時出現的訊息
限制存取 access_denied.php 未登入時將自動導向此頁
修改資料 user_edit.php 提供會員修改資料的網頁
刪除會員 user_del.php 管理者執行刪除會員的網頁

 

建立會員系統資料表

使用 phpMyAdmin 建立儲存會員資料的 tb_user 資料表。

設定會員資料表的欄位。

 

製作申請會員的網頁

首先製作申請會員的網頁,主要是透過表單讓訪客填寫資料,並且可將資料插入 tb_user 會員資料表。舊版 Dreamweaver 提供的表單驗證功能太簡單,以往經常需要安裝擴充程式,現在我們可以使用 Dreamweaver 提供的「Spry 表單檢驗工具集」來提供較完整的表單驗證功能。

請您先建立一個新網頁,並將檔名設定為 signup.php,網頁上的表單讓訪客填寫會員帳號、電子信箱、性別等相關資料,有的網站會讓訪客自行設定密碼,有些網站則是產生隨機的密碼,並寄送到訪客的電子信箱驗證填寫的資料是否正確。由於寄送郵件必須透過 SMTP 服務需要伺服器支援,先讓訪客自行設定登入的密碼。

使用 Dreamweaver 的表單工具建立所需的欄位,表單欄位的名稱與資料表的欄位名稱相同。

性別的選項按鈕,可以使用 Spry 驗證選項按鈕群組製作。

開啟「記錄插入表單」對話框,連線選擇「conn_mysql」,表格選擇「tb_user」。

「插入後,請前往」是訪客申請會員之後顯示的網頁,我們先輸入join_ok.php,稍後再製作這個網頁。

 

提示:您也可以使用 Dreamweaver 提供的「記錄插入表單精靈」製作加入會員的表單,以節省製作時間。

預設的表單標籤是從 tb_user 資料表取得的,標籤文字可以修改為中文或稍後從編輯視窗修改。

需注意 user_ID 會員編號是 MySQL 資料庫自動產生的,無需插入資料,因此先將此欄移除。

user_sex 性別則顯示為選項按鈕群組。

性別欄位使用選項按鈕群組。

記錄會員加入日期的 registration_date 欄位也是隱藏欄位,不需要訪客自行輸入,預設值輸入程式碼自動取得伺服器的系統日期。

 

需要在網頁上使用 session 變數的功能時,必須在網頁原始碼的第一行輸入:

<?php session_start(); ?>

注意:變數名稱大小寫輸入錯誤會出現錯誤訊息,因為 PHP 的變數名稱有區分大小寫。並請在新增資料集之後再加上這段程式碼,否則將被移到資料集程式碼的下方,而導致 session 變數無法正常使用的情形。

 

會員系統製作流程

首先修改網站首頁,進入網站時首頁會顯示表單讓訪客輸入帳號與密碼,在登入之後,原本帳號與密碼的表單欄位消失,取而代之的是歡迎光臨的訊息,並可讓會員修改個人資料、前往會員專屬網頁或登出網站。事實上無論訪客登入與否,都是看到相同的網頁,只是部份的內容會依訪客登入的狀態,顯示不同的訊息。

我們在網頁加上兩個區塊,分別製作「登入前」與「登入後」的內容:

 

登入前:「加入會員」按鈕連結到加入會員的網頁。

登入後:「修改會員資料」連結到網頁可修改個人資料。

 

避免訪客輸入錯誤的密碼

訪客申請網站會員時可以自行設定密碼,不過密碼欄位填寫時只會顯示 * 或 ● 字元,訪客可能輸入錯誤而未發現,申請完成後就會無法登入,最好加上密碼確認的功能。您可以使用 Dreamweaver 表單欄位比對的功能,或是安裝 Check form 擴充程式。

 

表單製作完成後,在「伺服器行為」面版點選新增「插入記錄」。

檢查表單與資料表欄位的對應是否正確。

 

避免訪客申請相同的帳號

目前還沒有檢查帳號是否重複的功能,因此訪客們申請會員時可能產生帳號重複,這將會導致會員登入錯誤的問題,為了避免申請重複的帳號,請再點選 [ 新增 > 使用者驗證 > 檢查新使用者名稱 ] 。

開啟首頁 index.php , 在「伺服器行為」面版點選「登入使用者」… 。

登入成功時,我們設定回到首頁。若訪客輸入的會員帳號不存在或密碼錯誤,需要顯示錯誤訊息。

MM_Username <---- 放入使用者名稱 ( user_name )

 

為了讓首頁可以判別登入的訪客身份,必須依訪客登入時建立的 session 變數進行篩選,請先建立資料集,資料集名稱訂為 rs_user , 連線到網站資料庫的 tb_user 資料表,查詢 user_name 會員帳號與 user_nick 暱稱欄位,登入後要製作顯示會員姓名或暱稱的歡迎訊息。

篩選器設定 memberName 欄位等 於 session 變數 MM_Username ,實際上 MM_Username 是登入後自動建立的 session 變數,這是 Dreamweaver 製作會員系統時內定的名稱,注意輸入時大小寫必須完全相 符,否則會找不到對應的會員帳號。接著可點選「測試」鈕,並在測試值欄位輸入在資料庫中已存在的會員帳號,應該會找到會員的相關記錄,若找不到記錄或找到多筆記錄的話,請檢查前面的步驟是否有錯。

 

製作會員登入的功能

網站在首頁提供會員登入的功能,登入前與登入後網頁顯示的內容不同,我們需要分別製作登入前後的區塊。

 

登入前

 

登入後

  顯示帳號與密碼欄位   顯示歡迎光臨的訊息
  顯示加入會員的連結   修改個人資料的功能
      顯示登出網站的功能
       

開啟「伺服器行為」面板,點選「新增 > 使用者驗證 > 登入使用者」,對話框設定。

輸入來源表單:form1 ( 若有修改表單名稱請自行變更 )

使用者名稱欄位:

密碼欄位:

 

顯示會員暱稱

選取網頁上的文字「會員暱稱」,接著在「繫結」面板點選 rs_member 資料集前的加號,選擇 memberNick 欄位後,按下方的「插入」按鈕,即可將網頁上的文字替換為正確的會員暱稱。

Dreamweaver 設計檢視的網頁上顯示 {rs_member.memberNick} 代表來自 rs_member 資料集的 user_nick 欄位。

實際的 PHP 程式碼為
<?php echo $row_rs_member['user_nick']; ?>

建立資料集,查詢會員的名稱,歡迎光臨!

 

製作會員登出的功能

登出網站的功能有兩種方式:按下網頁的連結時登出,或是進入網頁時登出。

我們使用按下連結時登出,而在會員登入或登出之後,再回到網站的首頁即可。

製作會員登出,從伺服器行為面板選擇 [ 新增 > 使用者驗證 > 登出使用者 ] 。

完成作業時,請前往選擇 index.php 網頁。

 

製作修改會員資料的功能

會員登入與登出的功能完成後,我們繼續製作修改會員資料的功能,因為會員可能會更換 Email信箱、電話號碼與地址,若是未提供修改資料的功能,會員就無法更新正確的資料。新增一個空白網頁並將檔案名稱改為「user_edit.php」,建立資料集來查詢會員資料,篩選器設定 user_name 欄位等於 Session 變數「MM_Username」,即可辨識會員的身份。

開啟瀏覽器檢視網頁時若是沒有顯示會員的資料,表示可能沒有啟用 Session 變數功能,因為資料集的篩選需要 session 變數,請把 <?php session_start(); ?> 加到原始碼第一行(若是可正確顯示會員資料則可跳過此步驟)。

修改會員資料的網頁,也需要檢查是否登入。

 

修改性別,性別是選項按鈕,與文字欄位的作法稍有不同,請選取任一選項按鈕,點選屬性列的「動態」按鈕即可開啟「動態選項按鈕群組」對話框。

按下閃電圖示按鈕後,選擇資料集 rs_member 下方的 memberSex 按鈕。

再按下「確定」按鈕。

加入 memberID 隱藏欄位,因為更新記錄需要使用「主索引鍵」。

接著在「伺服器行為」面板,按下 [ 新增 > 更新記錄 ] 。

更新後前往 member_modify_ok.php 網頁,顯示會員資料已更新的訊息。

 

限制存取頁面

會員若是沒有輸入帳號與密碼,將無法使用需要登入網站的一些功能(例如修改個人資料或是在討論區發言等)。即使訪客在瀏覽器直接輸入位址企圖跳過驗證,也必須讓他們無法檢視網頁的內容,重新導向到登入的網頁。注意!在您的網站中若是有許多網頁需要驗證,請在這些網頁分別加上「限制存取頁面」。

開啟需要會員登入才能檢視的頁面,點選 [ 新增 > 使用者驗證 > 限制存取頁面 ] 。

限制存取頁面的準則可以是使用者名稱與密碼,或是再加上存取層級,讓您的網站可以擁有不同的會員等級。

如果訪客沒有登入,而嘗試在瀏覽直接器輸入位址,就會自動導向到 access_denied.php 網頁。

 

製作網站會員的管理功能

製作網站會員的後端管理頁,主要的功能是讓網站管理者可以修改或刪除會員資料。

新增網頁,並檔案的名稱命名為 member_list.php。此網頁需要列出全部的會員,請先建立 rs_members 資料集。

接著將資料集的欄位逐一放在網頁的適當位置,並使用表格排版。

目前僅顯示一筆會員資料,必須透過重複區域的方式顯示所有的會員。

選取表格的一列,從「伺服器行為」面板點選 [ 新增 > 重複區域 ] 。

★DWCS5_PHP_MS_List_RepeatRegion.gif

實際資料集為 rs_members

 

★DWCS5_PHP_RecordsetNavigation_02.gif

顯示記錄總數

★DWCS5_PHP_MS_TotalRecords_02.gif

輸入「目前共有 N 位會員」的文字,網站管理者經常需要掌握會員的數量。

製作刪除會員的功能,點選「參數」按鈕

參數對話框

★DWCS5_PHP_MS_Delete_memberID_01.jpg

動態資料對話框,選取 memberID 欄位

★DWCS5_PHP_MS_Delete_memberID_02.jpg

名稱、值 設定完成後按「確定」按鈕

★DWCS5_PHP_MS_Delete_memberID_03.jpg

URL

 

製作刪除會員的功能

提供網站的管理人員刪除會員的功能,先新增以下的空白網頁,稍後會說明製作步驟。

刪除會員 member_delete.php

確認刪除 member_delete_confirm.php

刪除會員的功能是從 member_list.php 傳遞過來的 URL 參數判斷要刪除的會員編號,因此篩選器設定為 memberID 等於 URL 參數 memberID。

★DWCS5_PHP_MS_Recordset_Admin.gif

 

★DWCS5_PHP_MS_Delete_Record.jpg

實際操作後您可能已經發現,刪除記錄時完全沒有確認的步驟,會員一旦刪除是無法救回的,您可以安裝 Confirm Links 擴充程式,避免發生管理者誤按刪除而造成無法挽回的問題。

提示:您可以從 Tom Muck 官方網站 ( http://www.tom-muck.com ) 下載 confirmlinks.mxp 擴充程式。

 

改進網頁的顯示方式

性別的部份使用「1∕0」儲存在資料庫,是為了節省儲存空與維持資料庫執行效能,然而網頁上若是可以顯示為「男∕女」將更容易理解。這個部份可以透過 Dreamweaver 的擴充程式來製作。

Advanced Conditional Region 2.0 - 按此下載
PHP Show If Recordset Field Condition Is True - 按此下載

隨著會員的數量增加,管理網頁將會需要分頁的功能,可是 Dreamweaver 的資料集導覽列工具只提供上一頁、下一頁的連結,頁數太多時並不好用,若想製作頁碼連結,可以使用擴充程式(例如 Navigation Builder、Recordset Navigation Suite)製作導覽頁面的分頁連結。

注意!前往 next 下一頁或是 previous 上一頁的文字若在 Navigation Builder 改成中文的話,網頁上可能會出現亂碼。

請按「確定」加入 PHP 程式碼,再切換到程式碼檢視修改。

 

限制存取後端管理網頁

後端管理界面只有網站管理者可以使用,必須再加上限制存取的功能,即使一般訪客猜得到後端管理網頁的網址,進入網頁時也將自動導向到另一個網頁。這部份與前面製作的修改會員資料網頁相同。



~ CG 數位學習網版權所有 ~