Toggle main menu visibility
新聞
下載
教材
影音
討論
其他選單
好站連結
行事曆
電子相簿
常見問題
萬用表單
即時留言簿
友站消息
社大學員
:::
登入
登入
帳號
密碼
登入
重整畫面
:::
所有書籍
「[1062] PHP7入門」目錄
MarkDown
3-4 templtes/index.tpl
1. 建構開發環境與系統規劃
1-1 Visual Studio Code編輯器完整設定
1-2 各種訊息整理
1-3 test.php
1-4 index.php
1-5 templates/index.tpl
2. 寫入資料到資料庫
2-1 templates/index.tpl
2-2 templates/admin.tpl
2-3 css/my.css
2-4 admin.php
3. 資料庫讀取與程式的整併
3-1 admin.php
3-2 index.php
3-3 function.php
3-4 templtes/index.tpl
4. 加入登入及管理功能
4-1 header.php
4-2 footer.php
4-3 index.php
4-4 admin.php
4-5 templtes/header.tpl
4-6 templtes/footer.tpl
4-7 templtes/index.tpl
4-8 templtes/admin.tpl
4-9 templates/op_show_article.tpl
4-10 templates/op_list_article.tpl
4-11 css/my.css
4-12 signup.php
4-13 templtes/signup.tpl
5. 編輯器及上傳縮圖
5-1 includes/mailsender.php
5-2 config.php
5-3 verifyuser.php
5-4 signup.php
5-5 header.php
5-6 admin.php
5-7 main_login.php
5-8 loginheader.php
5-9 index.php
5-10 css/my.css
5-11 templates/nav.tpl
5-12 templates/admin.tpl
5-13 templates/index.tpl
5-14 templates/signup.tpl
5-15 templates/verifyuser.tpl
5-16 templates/main_login.tpl
5-17 templates/op_article_form.tpl
5-18 ckeditor/config.js
5-19 elFinder/elfinder_cke.php
6. 使用上傳物件及管理功能
6-1 admin.php
6-2 index.php
6-3 templates/nav.tpl
6-4 templates/index.tpl
6-5 templates/admin.tpl
6-6 templates/footer.tpl
6-7 templates/op_article_form.tpl
6-8 templates/op_list_article.tpl
6-9 templates/op_show_article.tpl
6-10 css/my.css
6-11 reporter.sql
7. 多人合作開發
7-1 admin.php
7-2 index.php
7-3 function.php
7-4 templates/op_modify_article.tpl
7-5 templates/op_article_form.tpl
7-6 templates/op_modify_article.tpl
7-7 .gitignore
8. 文章分頁及搜尋
8-1 index.php
8-2 function.php
8-3 PageBar.php
8-4 search.php
8-5 css/my.css
8-6 templates/op_show_article.tpl
8-7 templates/op_list_article.tpl
8-8 templates/nav.tpl
8-9 templates/search.tpl
8-10 templates/op_search_article.tpl
8-11 templates/op_search_form.tpl
9. JOIN資料表及寄信功能
9-1 search.php
9-2 function.php
9-3 admin.php
9-4 templates/op_search_article.tpl
9-5 templates/op_show_article.tpl
4-1 header.php
\[1062\] PHP7入門 =============== ### 一、 本週要做的事 1. 隨機背景(請參考第二週講義第八點) 2. 將PHP的設定檔、頁首、頁尾檔獨立出來(請參考第三週講義第十四點) 3. 將樣板的頁首、頁尾檔、選單獨立出來(請參考第三週講義第十五點) ### 二、 讀出單一文章 1. 在`switch`流程的`default:`中,加入一組有無`$sn`的判斷,若有,顯示一篇文章,若無,顯示所有文章。記得在`switch`之前針對`$sn`外部變數做過濾。 2. 內容換行可用`nl2br()`來處理,如: ``` $article['content'] = nl2br($article['content']); ``` 3. 在樣板中,可以針對不同`$op`,載入不同子樣板。 [](https://www.tad0616.net/uploads/tad_book3/image/43/fetch_assoc.png) ### 三、 加入登入機制 1. 官網:
中的releases下載PHP-Login-2.0.zip,解壓後將PHP-Login/login下的所有目錄檔案複製到reporter下即可。 2. 進入Adminer,點擊「SQL命令」貼語法建立`members`及`loginAttempts`兩個資料表 ``` CREATE TABLE `members` ( `id` char(23) NOT NULL, `username` varchar(65) NOT NULL DEFAULT '', `password` varchar(65) NOT NULL DEFAULT '', `email` varchar(65) NOT NULL, `verified` tinyint(1) NOT NULL DEFAULT '0', `mod_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `username_UNIQUE` (`username`), UNIQUE KEY `id_UNIQUE` (`id`), UNIQUE KEY `email_UNIQUE` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `loginAttempts` ( `IP` varchar(20) NOT NULL, `Attempts` int(11) NOT NULL, `LastLogin` datetime NOT NULL, `Username` varchar(65) DEFAULT NULL, `ID` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 3. 修改dbconf.php中的資料庫設定,才有辦法把登入機制和資料庫做連結。 4. 修改config.php中的網站設定,才能在網站中加入登入機制。其中`$admin_email`除非是要由管理員去審核使用者,否則留空即可。下方的信件訊息可自行中文化。$mailServerType的值請清空,以便使用主機的寄信設定。 5. 註冊頁面:signup.php,密碼至少四個字,且會驗證Email,帳號不得相同,註冊後會寄發啟動信至信箱。點擊驗證後會連至verifyuser.php,並修改資料庫的驗證狀態。 6. 登入頁面:main\_login.php,登出頁面:logout.php。 7. 登入流程:當輸入正確帳密時checklogin.php會傳回true,並將username及password紀錄到session,然後導回index.php,若輸入錯誤,則會出現錯誤訊息。 8. 在需要登入的php頁面加入以下語法在最上方,會啟動session並進行驗證導引: ``` require "loginheader.php"; ``` 9. 基本上,PHP-Login僅支援BootStrap3,所幸,用到的都是相容的語法,高興的話,可以自行將幾個用到的頁面也改成BootStrap4。 10. 利用Gmail來寄信的設定: - (1) 先Stop Apache,接著點選 General→Mail utility msmtp - (2) 按下左上角的 Edit configuration File 按鈕 - (3) 將Gmail裡面的Email修改成您的Gmail信箱,密碼請設定成該信箱密碼。 ### 四、 讓選單根據有無登入自動切換選項 1. 利用`die(var_dump($_SESSION));`可以觀察所有session內容,其內容為陣列。 2. 要啟用session功能,必須加入` session_start();`,可以將之加在頁首檔,越前面越好。 3. 在Smarty樣板中要可以利用`{$smarty.session.索引}`來取得某個session的值。 ``` {if $smarty.session.username}
管理
發布
登出
{else}
註冊
登入
{/if} ``` ### 五、 修改資料表 1. 修改article資料表,加入username 欄位`varchar(65)`,以紀錄文章是由誰發布的。 2. 修改insert語法,加入username,並用`$_SESSION['username']`取得發布者名稱。 ### 六、自動抓樣板檔 1. 若檔名為 index.php 會自動載入 index.tpl 的用法: ``` $tpl = str_replace('.php', '.tpl', basename($_SERVER['PHP_SELF'])); $smarty->display($tpl); ``` 2. `$_SERVER['PHP_SELF']`會抓出目前執行檔案的路徑名稱,如:`/reporter/index.php` 3. `basename() `會抓出路徑的最後一個檔案或目錄名稱,如:`basename('/reporter/index.php')`會得到`index.php` 4. `str_replace('搜尋', '取代', '內容')` 會在指定內容中做搜尋取代,例如: `str_replace('.php', '.tpl', 'index.php')`會得到`index.tpl` ### 七、樣板檔中根據標籤變數自動載入子樣板 1. 假如PHP有傳`$op`給樣板檔,例如:`$smarty->assign('op', $op);` 2. 當 `$op='show_article'` 時,希望引入 show\_article.tpl;當 `$op='list_article'` 時,希望引入 list\_article.tpl ``` {include file="`$op`.tpl"} ```
:::
搜尋
search
進階搜尋
QR Code 區塊
快速登入
所有討論區
「PHP全端開發」線上課程討論區
XOOPS使用討論區
一般研習學員
社大學員專用
路過哈啦區
XOOPS佈景設計
XOOPS模組開發
Tad書籍區
即時留言簿
書籍目錄
展開
|
闔起
線上使用者
87
人線上 (
11
人在瀏覽
線上書籍
)
會員: 0
訪客: 87
更多…