三月 6th, 2010

DIY一個PHP留言板之資料存取(三)

39 views, 網站專案, by 蒼時弦也.

經過了兩天琢磨讀取功能,目前已經有一個稍微完善的讀取系統。
那麼,現在就要來製作「寫入」的部份。
實際上在 PHP5 之後可以使用方便的函式寫入,不過為了顧及到 PHP4 所以還是改良一下語法。

首先,我們先任意建立一個網頁( html 或者 php 皆可 )
並且製作一個表單,作為留言使用:

<form method="post" action="post.php">
主旨:<input type="text" size="20" name="subject" /><br />
暱稱:<input type="text" size="20" name="nickname" /><br />
留言:<textarea name="contents"></textarea>
<input type="submit" name="submit" value="送出" />
</form>

因為表單指向 post.php 因此,新增 post.php 接收留言資訊:

<?php

function createComment(array $data){ //建立產生檔案函式
	$eol = PHP_EOL; //指定換行字元 \n 或 \r\n
	foreach($data as $key => $value){ //讀取傳入的資料
		/*
			寫入格式:
			;(陣列鍵值) Ex. ;subject
			(資料)
		*/
		if($i > 0) //檢查是否為第1筆
			$contents .= "{$eol};{$key}{$eol}{$value}"; //如果為非,則在每筆資料前加入換行
		else
			$contents .= ";{$key}{$eol}{$value}"; //如果為真,則照一般方式儲存
		++$i; //增加1 做為判斷資料筆數
	}
	$dataPath = './data/'.time().'.txt'; //指定儲存路徑
	if(PHP_VERSION > 5){ //檢查 PHP 版本
		file_put_contents($dataPath, $contents); //使用PHP5新增函式
	}else{
		$fp = fopen($dataPath, 'w'); //開啟檔案
		fwrite($fp, $contents); //寫入資料
		fclose($fp); //關閉檔案
	}
}

$subject = $_POST['subject'] ? $_POST['subject'] : '無主題'; //檢查主題,無則自動設定
$nickname = $_POST['nickname'] ? $_POST['nickname'] : '匿名'; //檢查暱稱,無則自動設定
$contents = $_POST['contents'] ? $_POST['contents'] : false; //檢查內容,無則傳回假

if(!$contents){ //檢查是否有內容
	echo "填寫不完整";
	header("Location: post.htm"); //導回發表頁
}else{
	createComment(array('subject' => $subject, 'nickname' => $nickname, 'contents' => $contents)); //產生資料檔案( 目前需依照順序才能正常讀取資料 )
	header("Location: comments.php"); //引導至觀看留言頁
}

?>

到此,留言板的基本功能已經完成。
明天會加入簡易的刪除留言功能,希望到此各位都能理解。

相關文章

Back Top


Blog Widget by LinkWithin