建立測試用的網頁伺服器(支援MySQL)

建立測試用的網頁伺服器(支援MySQL)

建立測試用的網頁伺服器(支援MySQL)

網頁伺服器

在我們上傳網站到免費空間之前(例如000webhost),我們會需要做一些測試,因為如果每修改一次就重新上傳一次很沒有效率。本文介紹一個很簡單、很小、免安裝的網頁伺服器架設軟體,Uniform Server

  • 到官網http://www.uniformserver.com/下載。
  • 下載之後解壓縮,得到一個資料夾UniServerZ。
  • 執行這個資料夾中的UniController.exe即可開啟。
  • 第一次執行時會要你設定從取根目錄的密碼,還要開啟防火牆
  • 介面真的很簡單。
  • 啟動伺服器之前,我們先回到UniServerZ資料夾中,進入其中的一個www資料夾。
  • 用記事本開啟其中的.htaccess檔案。
  • 把Deny from all改成Allow from IP,IP就輸入你要連到這個網頁的電腦IP。請勿使用Allow from all,你的電腦非常有可能會被入侵,或是被勒索,就是會把你的檔案全部加密無法打開,你必須要付費給他才幫你解。
  • 接著回到程式點選[Start Apache]即可開啟伺服器。
  • 如果無法啟動,顯示"應用程式無法正確啟動 (0xc000007b)",可以參考這篇文章來解決。
  • 可以看到綠燈亮了表示伺服器正在運行中。
  • 外部要連線進來的話就在瀏覽器輸入http://伺服器的IP即可連線,注意到http後面並沒有s。(要知道伺服器IP的話可以到[命令提示字元]輸入ipconfig查詢。)
  • 我們現在說明如何建立一個有SSL的連線。注意,要先停止伺服器的運行才能設定,也就是要先按[Stop Apache]停止伺服器運行。
  • 在程式首頁的功能表依序選擇[Apache],[Apache SSL],[Server Certificate and Key generator]
  • 選項都照預設的就好,按下[Generate]
  • 回到UniServerZ資料夾,這次要改成進入ssl資料夾中,跟剛剛一樣地,用記事本開啟.htaccess檔案,把Deny from all改成Allow from IP,IP就輸入你要連到這個網頁的電腦IP。請勿使用Allow from all,你的電腦非常有可能會被入侵,或是被勒索,就是會把你的檔案全部加密無法打開,你必須要付費給他才幫你解。
  • 這時候從外部連線進來的時候,在瀏覽器輸入https://伺服器的IP,就是有SSL的連線。
  • 所以簡單來說,
    http://伺服器的IP是連到UniServerZ/www/index.php
    https://伺服器的IP是連到UniServerZ/ssl/index.php

資料庫

接下來我們設定資料庫

  • 關於PHP及MySQL的教學可以參考w3school,這些課程很基本也很簡單。
  • 一樣在Uniform Server的主畫面按下[Start MySQL],綠燈亮起表示開啟資料庫成功。
  • 按下[phpMyAdmin]會開啟網頁進到資料庫管理的頁面。
  • 在這個資料庫管理的頁面,選擇[Databases]。
  • 我們建立一個簡單的資料庫。輸入資料庫的名稱,例如mydb然後按下Create。
  • 接著建立一個簡單的工作表。輸入工作表的名稱,例如mytable,我們只要3個column,分別記錄Name, ID, Phone,然後按下Go。
  • 在Name的部分輸入各column的名稱:Name, ID, Phone,Type都選text。
  • 切換到[Structure]頁面,可以看到剛剛建立的三個column。在這裡也可以新增或移除column。
  • 切換到[Browse]頁面,目前尚未有資料。
  • 回到UniServerZ\www資料夾中,把原本的index.php備份起來(例如改個檔名),然後自己新增一個index.php,內容如下(用記事本編輯另存成index.php檔即可,記得存檔類型要選擇所有檔案。)
    <html>
    <body>

    <form action="" method="POST">
    Name: <input type="text" name="name"> <br>
    ID: <input type="text" name="id"> <br>
    Phone: <input type="text" name="phone"> <br>
    <input type="submit" value="submit">
    </form>

    <?php

    $link = mysqli_connect('127.0.0.1', 'root', '剛剛設定的密碼');

    if ( $_SERVER['REQUEST_METHOD'] === 'POST' )
    {

    $Name = $_POST["name"];
    $ID = $_POST["id"];
    $Phone = $_POST["phone"];

    $sql = "INSERT INTO mytable".
    "(Name,ID,Phone)".
    "VALUES".
    "('$Name','$ID','$Phone')";
    mysqli_select_db( $link, 'mydb' );
    mysqli_query( $link, $sql );

    }

    ?>

    </body>
    </html>
  • 應該蠻好理解的,
    • 第一個部分form就是建立一個填入個人資料的表單。
    • 第二個部分部分就是跟資料庫連線,127.0.0.1是本地IP,就是自己連線到自己,root是資料庫預設的帳號。
    • if($_SERVER...這段是避免重新整理頁面時重新送出表格。
    • $Name = $_POST["name"];是取得表格中輸入的資料。
    • $sql = "INSERT INTO ...這裡是把輸入的資料存入資料庫。
  • 如果無法順利執行,建議逐行執行看看,並在中間加入echo "blabla",來確認是否順利執行至此。這個網頁的教學也不錯,範例都有加入判斷是否能夠順利執行的回報。
  • 或是到UniServerZ\core\apache2\logs裡面有個error檔,用記事本打開後可以看到錯誤訊息的記錄,例如我之前學的是用mysql_connect(沒有i),但這個指令在新版本的php已經不支援了參考這裡,所以我執行mysql_connect(blabla)之後發現無法連上,在這個error檔案中就可以看到Fatal error: Call to undefined function mysql_connect()這個錯誤訊息。
  • 現在在客戶端的網頁瀏覽器輸入http://IP/index.php,IP就是伺服器的IP,可以在[命令提示字元]中輸入ipconfig查詢到,可以看到剛剛建立的表格,輸入個人資料後按下submit。
  • 回到資料庫的管理系統,可以看到已經收到剛剛由表格送出的個人資料,並建立成一筆新的資料了。

No comments:

Post a Comment