欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

創(chuàng)造世界上最簡(jiǎn)單的 PHP 開(kāi)發(fā)模式第5/5頁(yè)

 更新時(shí)間:2006年12月04日 00:00:00   投稿:mdxy-dxy  
這篇文章主要介紹了創(chuàng)造世界上最簡(jiǎn)單的 PHP 開(kāi)發(fā)模式
, 5); 
$data[asphotlist] = getArticleList(2, "clicks DESC, id DESC", 1, 3); 
dbDisconnect(); 

renderTpl(’list2.htm’, $data); 

?> 

--------view.htm--------------
<!-- BEGIN content -->
編號(hào):{id}<br>標(biāo)題:{title}<br>內(nèi)容:{content}
<!-- END content -->


--------view.php------------------
<?php 

require_once "config.inc.php"; 

dbConnect(); 
$data = array(); 
$data[content] = getArticle((int)$_GET[id]); 
dbDisconnect(); 

renderTpl(’view.htm’, $data); 

?>

八:文章添加實(shí)現(xiàn)和模板處理(萬(wàn)里長(zhǎng)征的再來(lái)一步)

---------------new.htm-----------
<form action="add.php" method="post">
標(biāo)題:<input type="text" size="20"><br>
內(nèi)容:<textarea cols="50" rows="4"></textarea><br>
&nbsp;&nbsp;&nbsp;&nbsp;<input type="submit" value="提交">
</form>


---------------new.php------------
<?php 

require_once "config.inc.php"; 

renderTpl(’new.htm’, array()); 

?> 



---------------CoreUtil.php--------------
<?php 

function doPostVar(&$data){ 
    $keys = array_keys($data); 
    foreach($keys as $key){ 
        $data[$key] = addslashes(htmlspecialchars(trim($data[$key]))); 
        if($data[$key]==null) $data[$key] = "$key default"; 
    } 

?> 


---------------add.htm------------
<!-- BEGIN success -->
{content}
<!-- END success -->


---------------add.php------------
<?php 

require_once "config.inc.php"; 

dbConnect(); 
$data = action(); 
doPostVar($data); 
addArticle($data); 
$result[success][content] = "文章添加成功"; 
dbDisconnect(); 

renderTpl(’add.htm’, $result); 

function action(){ 
    $data = array(); 
    $data[title] = $_POST[title]; 
    $data[content] = $_POST[content]; 
    $data[datetime] = date(’Y-m-d H:i:s’); 
    $data[pid] = 1; 
    return $data; 


?> 

這樣一個(gè)最最簡(jiǎn)單的文章的發(fā)布系統(tǒng)就完成了,不知道對(duì)您有什么收獲沒(méi)有。

九、總結(jié)


程序?qū)懲炅?,大家?lái)總結(jié)一下吧,看看實(shí)現(xiàn)過(guò)程,應(yīng)該可以說(shuō)是簡(jiǎn)單明了吧。
1、統(tǒng)一實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)接口。更改后臺(tái)數(shù)據(jù)庫(kù)結(jié)構(gòu)的時(shí)候,只要簡(jiǎn)單的修改相應(yīng)的接口函數(shù),其他部分的php代碼根本就不用理會(huì)。
2、整個(gè)系統(tǒng)php代碼和html代碼分開(kāi)管理,php代碼前臺(tái)實(shí)現(xiàn)起來(lái)也很簡(jiǎn)單,你也應(yīng)該已經(jīng)可以發(fā)現(xiàn)了,基本上是在10行代碼左右。
3、可以任意的擴(kuò)充功能。用函數(shù)對(duì)新的功能進(jìn)行包裝后,在具體的前臺(tái)的查詢顯示頁(yè)面中只有加入對(duì)相應(yīng)的函數(shù)的簡(jiǎn)單的調(diào)用就可以了,一行代碼就搞定了。
4、代碼復(fù)用。通過(guò)對(duì)功能的包裝,減少了大量的不必要的重復(fù)代碼工作,效率應(yīng)該是提高了很多吧?
5、可以移植性。如果將來(lái)做其他的網(wǎng)站,要是遇到了和這個(gè)項(xiàng)目相同的實(shí)現(xiàn)功能,你可以怎么做呢?把這里的函數(shù)和數(shù)據(jù)庫(kù)結(jié)構(gòu)copy過(guò)去,修改一下新項(xiàng)目的模板,是不是就可一完成這個(gè)新的項(xiàng)目了呢?根本就不用考慮修改php代碼。
6、結(jié)構(gòu)代碼清晰。別人可以輕易的和你共同開(kāi)發(fā)一個(gè)項(xiàng)目,代碼沖突也會(huì)減少至最低。

當(dāng)然實(shí)際工作中遇到的情況可能比這個(gè)例子復(fù)雜的多,但是再?gòu)?fù)雜的任務(wù)都是可以拆分的。


十、后言

不知道大家有沒(méi)有學(xué)過(guò)jsp和servlet這樣的東西,他們有很多優(yōu)秀的設(shè)計(jì)思路,值得我們?nèi)パ芯亢蚦opy(說(shuō)句實(shí)在話,有時(shí)間的都應(yīng)該去接觸一下java,不是為了學(xué)習(xí)這門(mén)語(yǔ)言而學(xué)習(xí),是要學(xué)習(xí)他的設(shè)計(jì)模式和優(yōu)秀的功能實(shí)現(xiàn)方式)。jsp至少有兩樣?xùn)|西對(duì)我們很有用,action和filter。

action是主要是處理一些事件邏輯,就像add.php中我們定義的action()函數(shù)一樣,用來(lái)驗(yàn)證和獲取表單提交上來(lái)的數(shù)據(jù)。當(dāng)然這樣寫(xiě)的代碼量和你以前方法的代碼量是一樣的,好像沒(méi)有什么區(qū)別,但是它實(shí)現(xiàn)了代碼的分離,結(jié)構(gòu)是不是比你以前的方法清晰很多呢?

filter是一個(gè)過(guò)濾功能,用來(lái)過(guò)濾和重新定向網(wǎng)絡(luò)的訪問(wèn),對(duì)一些非法的請(qǐng)求和錯(cuò)誤的請(qǐng)求進(jìn)行重新的定向。讓我們來(lái)通過(guò)一個(gè)后臺(tái)管理的程序來(lái)看看他具體的作用。


將下面的這個(gè)函數(shù)copy到你的CoreUtil.php里面,這個(gè)函數(shù)是一個(gè)后臺(tái)管理登陸的過(guò)濾函數(shù),一個(gè)是不在本地緩存web頁(yè)面的函數(shù):

function windowNoCache($cache){ 
    if(!$cache || headers_sent()) return ; 
    header(’Expires: ’.date(’D,d M Y H:i:s’,mktime(0,0,0,1,1,2000)).’ GMT’); 
    header(’Last-Modified:’.gmdate(’D,d M Y H:i:s’).’ GMT’); 
    header(’Cache-control: private, no-cache,must-revalidate’); 
    header(’Pragma: no-cache’); 

function isAdminLogin(){ 
    if($_SESSION[relogin]=="ok") return; 
    if($_SESSION[adminuser]!=SYS_ADMIN_NAME){ 
        $_SESSION[relogin] = "ok"; 
        die("<script language=\"javascript\"> top.location=’adminlogin.php’; </script>"); 
    } 
    $_SESSION[relogin] = "no"; 


然后在 根目錄 底下加上如下的文件
------------adminconfig.inc.php------------
<?php 

define(’SYS_ADMIN_NAME’, ’hello’); //后臺(tái)管理登陸名 
define(’SYS_ADMIN_PASSWORD’, ’hello’); //后臺(tái)管理登陸密碼 
include ’config.inc.php’; 
windowNoCache(true); 
isAdminLogin(); 

?> 



------------adminindex.php----------------
<?php 

require_once "adminconfig.inc.php"; 

renderTpl(’adminindex.htm’, array()); 

?> 



------------adminlogin.php------------------
<?php 

include "adminconfig.inc.php"; 

if($_POST[name]==SYS_ADMIN_NAME && $_POST[code]==SYS_ADMIN_PASSWORD){ 
    $_SESSION[adminuser] = SYS_ADMIN_NAME; 
    header("location: adminindex.php"); 
}else{ 
    renderTpl(’adminlogin.htm’, array()); 


?> 


在 smart/template 目錄下面加上如下的文件
------------adminlogin.htm------------------
<form name="form1" method="post" action="">
<input type="text" name="name" size="20" value="">
<input type="password" name="code" size="20" value="">
<input type="submit" name="Submit" value=" 登 陸 ">
</form>


------------adminindex.htm----------------
<h2>您好歡迎登陸后臺(tái)管理</h2>

現(xiàn)在訪問(wèn)adminindex.php看看會(huì)發(fā)生什么事情,然后用adminconfig.inc.php里面設(shè)定的用戶名密碼登陸。這種功能在web的很多地方都可以派上用場(chǎng),應(yīng)該是一個(gè)好的方法吧。其他的后臺(tái)訪問(wèn)的頁(yè)面只要也都加載了adminconfig.inc.php ,就不用再考慮后臺(tái)訪問(wèn)權(quán)限的問(wèn)題了。


十一 附錄

簡(jiǎn)單的隱藏文件的擴(kuò)展名,搞暈瀏覽者,讓他不知道你是用什么語(yǔ)言編的程序。

就以list1.php為例子吧,

1、我們修改list1.php的名稱為list1.tmp
2、進(jìn)入命令行窗口(dos窗口),在web的目錄下面建立一個(gè)文件,文件名是“.htaccess”。
3、編輯“.htaccess”文件,輸入以下的內(nèi)容

AddType application/x-httpd-php .tmp

通過(guò)瀏覽器訪問(wèn)list1.tmp,看看是不是ok了。

相關(guān)文章

最新評(píng)論