:::

4-4 整併並引入共同執行檔案 header.php

  1. 由於前台 index.php 及後台 admin/index.php 裡面都要連線資料庫,萬一資料庫日後改設定,便要改好幾個檔案,維護起來不易,檔案也顯得複雜,因此,可以將共同的部份獨立成一個php檔
  2. 我們建立一個 header.php,也就是所有檔案一開始做的動作都放在這裡,例如:
    <?php
    $dbhost = 'localhost'; //一般是 localhost 或 127.0.0.1
    $dbuser = 'root'; //一般是 root
    $dbpasswd = '12345';
    $dbname = 'blog';
    $dbcharacter = 'utf8mb4'; //一般是 utf8
    
    try
    {
        $db = new PDO("mysql:host={$dbhost};dbname={$dbname};charset={$dbcharacter}", $dbuser, $dbpasswd);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //禁用prepared statements的模擬效果
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // echo "連線成功";
    } catch (PDOException $e) {
        echo "無法連上資料庫:" . $e->getMessage();
    }
    

     

  3. 由於接下來檔案可能要常常互相引入,甚至之後還會前後臺互相引入,因此,最好設定一個絕對位置,才不至於把自己搞得暈頭轉向,我們利用常數來設定之:
    <?php
    $dbhost = 'localhost'; //一般是 localhost 或 127.0.0.1
    $dbuser = 'root'; //一般是 root
    $dbpasswd = '12345';
    $dbname = 'blog';
    $dbcharacter = 'utf8mb4'; //一般是 utf8
    
    // 專案絕對路徑
    define('_PATH', 'D:/xampp8/htdocs');
    // 專案網址
    define('_URL', 'http://localhost');
    
    

     

  4. admin/index.php index.php 只要引入該檔案即可(後台要用 ../header.php 表示引入上一層的 header.php):
    <?php
    require_once '../header.php';
    
    // 寫入資料庫
    $sql = "INSERT INTO `articles`
    (`title`, `info`, `date`, `content`, `cate_id`)
    VALUES(?, ?, ?, ?, ?)";
    $sth = $db->prepare($sql);
    $values = [
        $_POST['title'],
        $_POST['info'],
        $_POST['date'],
        $_POST['content'],
        $_POST['cate_id'],
    ];
    $sth->execute($values);
    
    // 取得該資料的流水號
    $id = $db->lastInsertId();
    
    //執行後轉向
    header("location: ../admin.html");
    exit;
    

    index.php

    <?php
    require_once 'header.php';
    
    // 讀取所有資料
    $sql = "SELECT * FROM `articles` ORDER BY `date` DESC";
    $sth = $db->prepare($sql);
    $sth->execute();
    while ($news = $sth->fetch(PDO::FETCH_ASSOC)) {
        echo (int) $news['id'] . "<br>";
        echo filter_var($news['title'], FILTER_SANITIZE_SPECIAL_CHARS) . "<br>";
        echo filter_var($news['info'], FILTER_SANITIZE_SPECIAL_CHARS) . "<br>";
        echo filter_var($news['date'], FILTER_SANITIZE_SPECIAL_CHARS) . "<br>";
        echo (int) $news['counter'] . "<br>";
        echo filter_var($news['content'], FILTER_SANITIZE_SPECIAL_CHARS) . "<br>";
        echo (int) $news['cate_id'] . "<br>";
    }
    

     

  5. 至於引入的方法有 requirerequire_once) 及 include include_once)兩大類,這兩著功能幾乎一樣,最大的差異在於:
    1. require 若是引不到檔案,系統會引發嚴重錯誤,並立即停止
    2. include 若是引不到檔案,系統出現警告訊息,但仍會繼續執行

:::

書籍目錄

展開 | 闔起

https%3A%2F%2Fcampus-xoops.tn.edu.tw%2Fmodules%2Ftad_book3%2Fpage.php%3Ftbsn%3D52%26tbdsn%3D1802

計數器

今天: 4079407940794079
昨天: 5069506950695069
總計: 5134527513452751345275134527513452751345275134527