PHP 入門指南 - 整合編碼、解碼功能

伺服端有了 Encrypt 物件 (object) ,就能進行編碼 (encode) 及解碼 (decode) 囉




完整程式檔案請參考 encryptor_function.php


我們替 Encode 設計的 encode_button() 如下
function encode_button($input) {
    global $e, $data;
    $f = fopen($data, "r");
    if (filesize($data) == 0) {
        fclose($f);
        return "encode denied";
    }
    else {
        $s = fread($f, filesize($data));
        $e->setcArray($s);
  $output = $e->toEncode($input); 
        fclose($f);
  
        return "encode: ".$output;
    }
}


encode_button() 需要一個參數 $input ,這就是 $_POST["input"] 囉!到函數處理就以參數傳遞。同樣的要先檢查是否有密碼表,如果沒有密碼表就顯示 "encode denied" ,有密碼表就進行編碼工作並顯示編碼結果。


有一種可能的奇怪結果,也就是使用者並沒有輸入文字就按下 Encode ,這時候 $input 會得到空字串,因此回傳 "encode: " 後面空空如也。這不會是個很理想的情況,我們倒是可以增加一組 if-else 檢查,如果 $input 是空字串就提供另外的提示訊息。


伺服端的主要工作在接收資料、處理資料,因為如果資料要寫進資料庫, $input 為空字串會造成沒意義的資料,相對浪費資料庫空間,其實這個設計交給用戶端的 JavaScript 會比較好,由用戶端進行檢查,確保送進伺服器的都是有意義的資料。


這裡我們保持簡單的設計就好。


至於替 Decode 設計的 decode_button() 如下
function decode_button($input) {
    global $e, $data;
    $f = fopen($data, "r");
    if (filesize($data) == 0) {
        fclose($f);
        return "decode denied";
    }
    else {
        $s = fread($f, filesize($data));
        $e->setcArray($s);
  $output = $e->toDecode($input);
        fclose($f);
  
        return "decode: ".$output;
    }
}


decode_button() 幾乎與 encode_button() 一樣,只有將 $e->toEncode() 換成 $e->toDecode(); 。


encryptor04.php 修改如下
<?php
// include
include "encryptor_function.php";

// switch
switch ($_REQUEST["op"]) {
    case "New":
        $main = input_form();
        $display = new_button();
        break;
    
    case "Load":
        $main = input_form();
        $display = load_button();
        break;
    
    case "Encode":
        $main = input_form();
        $display = encode_button($_POST['input']);
        break;
    
    case "Decode":
        $main = input_form();
        $display = decode_button($_POST['input']);
        break;
    
    case "Clean":
        $main = input_form();
        $display = clean_button();
        break;
    
    case "record":
        $main = "This is record page..";
        $display = "This is record page..";
        break;
    
    case "about":
        $main = "This is about page..";
        $display = "This is about page..";
        break;
    
    default:
        $main = input_form();
        $display = "something happened";    
}

// make page
echo make_page($main, $display);

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:encryptor05.php
    功能:示範 PHP 程式 
    作者:張凱慶
    時間:西元 2012 年 11 月 */
?>


結果如下



好了,主要功能大都完成了。凡走過必留下痕跡,接下來我們要用資料庫 (database) 記錄使用者操作的記錄,先來認識 MySQL 資料庫吧!


中英文術語對照
物件object
編碼encode
解碼decode
資料庫database


您可以繼續參考
網站篇


相關目錄
回 PHP 入門指南
回 PHP 教材
回首頁


參考資料
http://www.php.net/manual/en/tutorial.firstpage.php
http://www.php.net/manual/en/tutorial.useful.php
http://www.php.net/manual/en/functions.user-defined.php
http://www.php.net/manual/en/functions.arguments.php
http://www.php.net/manual/en/functions.returning-values.php

沒有留言: