這篇文章又針對表單進行了一些進階的寫法
比如加入程式碼計算使用者年紀
或是加入審核機制防呆等

算出使用者年紀

用到date、strtotime

1
2
$now=date("Y");
$birth_year=date("Y",strtotime($birth));
1
2
3
4
5
6
7
8
9
$birth=$_POST["birth"];
$now=date("Y");
$birth_year=date("Y",strtotime($birth));
echo "<h1>Hello world! Welcome ".$username."!</h1><br>".
"你的密碼是:".$_POST["password"]."<br>".
"你的性別是:".$sex."<br>".
"你的生日是:".$_POST["birth"]."<br>".
"你今年".($now-$birth_year)."歲<br>";

加入表單驗證範例

  1. 最簡單版本,用html的方法寫:在input裡加上required

    1
    <input type="text" name="username" placeholder="輸入姓名" required>
  2. 用empty檢查(兩個php版)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php 
    if(empty($_POST["username"])){
    echo "請輸入姓名!";
    }
    if(empty($_POST["password"])){
    echo "請輸入密碼!";
    }
    else{
    $username=$_POST["username"];
    ...
  3. 把所有東西都寫在一頁中

只需要一頁index.php
一樣有輸入的表單、處理輸入後端、顯示的前端

Part a. 輸入表單
重點在於action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"
還有最後submit給一個name,等一下後端處理會用到

1
2
3
4
5
6
7
8
9
<h1>Welcome <?php echo $username ?></h1>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" >
姓名:<input type="text" name="username" placeholder="輸入姓名"> &nbsp <?php echo $usernameErr?><br><br>
密碼:<input type="password" name="password" placeholder="輸入密碼"> &nbsp <?php echo $passwordErr?><br><br>
性別:<input type="radio" name="sex" value=0><input type="radio" name="sex" value=1>女 &nbsp&nbsp <?php echo $sexErr?><br><br>
生日:<input type="date" name="birth">&nbsp <?php echo $birthErr?><br><br>

<input type="submit" name="submit" value="送出">
</form>

Part b. 後端處理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
$username=$password=$sex=$birth="";
$usernameErr=$passwordErr=$sexErr=$birthErr="";
if($_SERVER["REQUEST_METHOD"] = "POST"){
if (isset($_POST["submit"])){
if(empty($_POST["username"])){
$usernameErr="請輸入名字";
}
else{
$username=$_POST["username"];
}
if(empty($_POST["password"])){
$passwordErr="請輸入密碼";
}
else{
$password=$_POST["password"];
}
if(empty($_POST["sex"])){
$sexErr="請選擇性別";
}
else{
if($_POST["sex"]==1){
$sex="女性";
}else{
$sex="男性";
}
}
if(empty($_POST["birth"])){
$birthErr="請選擇出生年月日";
$age=0;
}
else{
$birth=$_POST["birth"];
$age=date("Y")-date("Y",strtotime($birth));
}

}
}
?>

Part c. 前端顯示

1
2
3
4
5
6
7
8
9
<?php
if (isset($_POST["submit"]) && !empty($username)&& !empty($password)&& !empty($sex)&& !empty($birth)){
echo "<h2>Hello ".$username."!</h2><br>";
echo "你的密碼是:".$password."<br>";
echo "你的性別是:".$sex."<br>";
echo "你的生日是:".$birth."<br>";
echo "你今年".$age."歲<br>";
}
?>

成功後會顯示下面畫面:


相關補充

  1. 修改Port號
    (1) AppServ:

    (2) Xampp:

    開啟檔案後搜尋”listen”,改成8080

    原本只需輸入localhost/就可以顯示
    現在必須輸入localhost:8080/

  2. 把PHP的錯誤訊息打開(Error 500)
    (1) AppServ:AppServ/PHP Edit php.ini (或是C:\AppServ\php7)
    (2) Xampp:Config/php.ini
    在裡面找到display_startup_errors,把OFF改成ON
    之後重啟Apche即可