start(); // 驗證使用者 if(!$a->checkAuth()) { header('Location:login.php'); // 若未登入則轉至登入網頁 exit(); } header('Content-Type:text/html; charset=utf-8'); $username = $a->getUsername(); // 先取得會員名稱 //----------------------------------------------------------- // 變更電子郵箱作業 $email = $a->getAuthData('email'); // 取得註冊的電子郵箱 if(isset($_POST['email']) && $_POST['email']!= $email) { // 是否與原資料不同 if(!verifyemail($_POST['email'])) // 格式是否正確 $message = '電子郵件未設定或格式錯誤!'; elseif(!$a->checkemail($_POST['email'])) // 是否已被使用 $message = '此電子郵件已被其他會員註冊!'; else { $sql = sprintf('UPDATE users SET email=%s WHERE username=%s', $mdb2->quote($_POST['email'],'text'), $mdb2->quote($username,'text')); $res = $mdb2->exec($sql); if(PEAR::isError($res)) die('資料庫操作失敗,請稍後再試:'.$res->getMessage()); // 執行正常結果, 設定訊息。 $message = '電子郵件已更新!'; } } //----------------------------------------------------------- // 變更密碼作業 // 先至資料庫取得舊密碼經MD5編碼的字串 $sql = "SELECT password FROM users WHERE username = " . $mdb2->quote($username,'text'); $res = $mdb2->query($sql); if(PEAR::isError($res)) die('資料庫操作失敗,請稍後再試:'.$res->getMessage()); $password = $res->fetchOne(); // 檢查表單中輸入的密碼經 MD5 編碼後, 是否與舊密碼編碼結果相同 // 以及『新密碼』及『確認新密碼』兩欄的內容相同 if(md5(mystrip($_POST['oldpass']))==$password && ($_POST['newpass1']==$_POST['newpass2'])) { // 呼叫 changePassword() 方法設定新密碼 $res = $a->changePassword($a->getUsername(), mystrip($_POST['newpass1'])); if(PEAR::isError($res)) die('操作失敗,請稍後再試:'.$res->getMessage()); else $message .= '密碼已更新!'; } //----------------------------------------------------------- // 變更密碼提示與答案作業 // 若密碼提示或答案與原有資料不同, 才會進行更新 if(isset($_POST['prompt']) && isset($_POST['answer']) && ( mystrip($_POST['prompt'])!=$a->getAuthData('prompt') || mystrip($_POST['answer'])!=$a->getAuthData('answer'))) { // 建立更新密碼提示 (prompt) 和答案 (answer) 的 UPDATE 敘述 // 為簡化程式邏輯, 即使使用者只更改其中一項 // 程式也會同時更新這兩個項目 $sql = sprintf("UPDATE users SET prompt = %s, answer = %s WHERE username = %s", $mdb2->quote($_POST['prompt'],'text'), $mdb2->quote($_POST['answer'],'text'), $mdb2->quote($username,'text')); $res = $mdb2->exec($sql); if(PEAR::isError($res)) die('更新失敗,請稍後再試:'.$res->getMessage()); $message .= '密碼提示及答案已更新!'; } ?> 會員資料
會員資料
會 員 帳 號
舊 密 碼
(如要變更密碼才需先輸入舊密碼)
新 密 碼
確 認 新 密 碼
電 子 郵 件
密 碼 提 示
答 案
 
回登入網頁