三 首頁新聞發布,讓你更新更輕鬆(下)
-----上一講裡,我們已經實現了首頁新聞發布的準系統。在這一講裡,我們再給它添磚加瓦,使它的功能更為強大。(一個好用的軟體,其實也就是準系統加上一批附屬功能,這些附屬功能主要也是圖個方便而已,呵呵)
-----首先,我們再明確一下我們想獲得什麼方便。我們不希望幾十天以前的東西我們忘了刪除,結果還作為新聞發布在首頁(很丟臉的哦^&^)。如果我們在基本實現中嵌入一段代碼,比如說用filectime($filename),那麼在UNIX下,我們就可以得到從1970年1月1日起以秒計到最後一次檔案被改動的時間(在WINDOWS下返回的是檔案產生的日期時間),而從 1970年1月1日起以秒計到現在的秒數可以用$mynow=mktime()來獲得,減法,判斷,IF >我們期望的時間,嘿嘿,Sorry,unlink($newspath.$filename)……什嗎?!您問這段代碼應該放在哪兒?您說呢,呵呵。
或許,你並不是常在一台機器上上網,當你獲得了一條新的新聞後卻不在你的愛機旁,怎麼辦?最理想的莫過於在首頁上上傳檔案咯。你或許有一個頁面(Admin?)需要用密碼才能進入(假如你還愛惜自己的網站的話,這是有必要的,最好連檔案名稱都不要讓別人知道,呵呵)。下面是一段到處可見的檔案上傳的代碼:
<?
if(isset($upfile))
{
?>
已上傳的檔案資訊如下:
檔案存放路徑 : <?echo $upfile;?>
原始檔案名 : <?echo $upfile_name;?>
檔案大小(位元組): <?echo $upfile_size;?>
檔案類型 : <?echo $upfile_type;?>
<?
}
else
{
?>
<html>
<head><title>新聞上傳</title></head><body>
<form enctype="multipart/form-data" method="post" action="<?echo $PHP_SELF;?>">
<input type="hidden" name="MAX_FILE_SIZE" value="50000">
請選擇或輸入上傳檔案名稱: <input name="upfile" type="file">
<input type="submit" value="上傳" name="submit">
</form>
</body></html>
<?
}
?>
-----這裡我們又見到了PHP和HTML結合的一種形式,可以借鑒。檔案上傳雖然方便,但總給人一種不安全感。一旦泄密,你的伺服器的系統安全就受到了威脅,因為上傳的檔案可能是一些破壞性的執行檔案(也就是病毒或駭客程式啦)穩妥的做法是寫一個線上編輯的檔案,下面是一個樣本:
〈?php
function mywritefile($filename,$contents){
if($fp=fopen($filename,"w")){
fwrite($fp,strpslashes($contents));
fclose($fp);
return 1;
}
else {return 0;};
};
//判斷表單返回的變數
if($submitButton=="完成"){
$rs=mywritefile("$page","$test");
echo "<a href ="$page">$page</a><br>";
}
elseif($action=="page") //變數action值為"page"的情況
{$contents="$page";
$fp=@fopen($content,"w+")or die('Could not open file!');
$contents=htmlspecialchars($contents);
fclose($fp);
echo "<form action="admin.php?page=$page" method="POST" wrap=soft>";
echo "$contents";
echo "</textarea>";
echo "<input type="submit" name="submitButton" value="完成">";
echo "</form>";
}
else
{echo "<form action="basename($PHP_SELF).?action=page" method="POST">";//注意引用程式內變數的方式。
echo "<input type=text size=20 name=page>";
echo "<input type="submit" name="send" value="選定">";
echo "</form>";
}
?>
-----至此,首頁新聞發布的實現已經可以告一段落了。 我們可以發現,任何一個功能(比較)強大的陳程式都是由一些簡單的功能組合而成的。第三部分功能的整個完善過程使用疊加增強方法,和軟體工程的自頂向下,逐層分析的開發方法是不一樣的。這是一個適用於學習的方法,自己寫寫習作還是挺管用的,呵呵。