參考資源
--
如果你以後不想寫像下面這種 HTML, PHP 混在一起的爛程式,請繼續往下看,否則可以關掉網頁了
以下是一個判斷是否有登入會員之後顯示不同內容的網頁
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<html> <body> <?php if ( $_SESSION['Login'] !='Y' ) { ?> <div><a href="Login.php">登入會員</a></div> <?php } else { ?> <div><?php echo $Username;?></div> <hr/> <div>會員資訊.1</div> <div>會員資訊.2</div> <div>會員資訊.3</div> <?php } ?> </body> </html> |
--
將所有內容設計在前端 HTML 內
為了讓 PHP 滾出 HTML,這裡不使用其他 PHP 模板,因為那只是另一種混用的方式,而且模板不同語法還不同又產生了新的問題
直接讓前端設計一個可以切換顯示結果的機制,然後將切換的方式交給 PHP 即可,例如以下的切換 class 顯示控制方式
使用 class="Login" 判斷是登入才可以顯示內容;class="Logout" 是未登入顯示內容,未登入時將所有已登入內容移除,登入後反之
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<html> <head> <script src="/3rdParty/jquery-1.11.3.min.js"></script> </head> <body> <div class="Logout"><a href="Login.php">登入會員</a></div> <div class="Login">{{UserName}}</div> <hr class="Login"/> <div class="Login">會員資訊.1</div> <div class="Login">會員資訊.2</div> <div class="Login">會員資訊.3</div> <script> $('.Login').remove(); </script> </body> </html> |
只要控制 remove() 對象即可切換是否登入會員內容,接下來就是將 jQuery 的動作交給 phpQuery 來做
--
讓 PHP 控制 DOM
以上面的例子為例,可以移除底下的 JavaScript 控制,準備讓 PHP 來做相同的事情
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<html> <body> <div class="Logout"><a href="Login.php">登入會員</a></div> <div class="Login">{{UserName}}</div> <hr class="Login"/> <div class="Login">會員資訊.1</div> <div class="Login">會員資訊.2</div> <div class="Login">會員資訊.3</div> </body> </html> |
PHP 代碼
將 HTML 讀入之後,根據 session 結果套用和 jQuery 對應功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php require_once '/www/phpQuery-onefile.php'; $html = file_get_contents('/www/index.html'); $html = str_replace('{{webRoot}}', webRoot, $html); $dom = phpQuery::newDocumentHTML($html); // 已登入 if ( $_SESSION['Login'] =='Y' ){ $dom->find('.Logout')->remove(); $dom = str_replace('{{UserName}}', 'Hoyo', $dom); } // 未登入 else{ $dom->find('.Login')->remove(); } echo $dom; |
使用 phpQuery 即可讓前端 HTML 擁有完全控制網頁輸出內容的能力
--
checkbox
1 2 3 4 5 6 |
if ($gmail_alarm_enable =='Y'){ $dom->find('#id_gmail_alarm_enable')->attr('checked', ''); } else{ else $dom->find('#id_gmail_alarm_enable')->removeAttr('checked'); } |
--
select
1 |
$dom->find('#id_tou')->val($tou); |
--
--
1,522 total views, 1 views today