1. 程式人生 > >php實現簡單的留言板

php實現簡單的留言板

最近學些php的課程還是一本滿足的,畢竟是指令碼語言還是很容易上手的,不吹不黑,哈哈!好了,進入正題,本文在實現留言板的過程講解一些知識點。

如何連線資料庫?

說來尷尬,我的wampserver的mysql用不了,很奇怪的原因~,所以我就把wampserver原裝的mysql的埠改成了8806,以保證我自己裝的mysql的埠3306可以正常使用,好吧,作為新人小白這樣看起來很傻吧。本文講解php操作資料庫的函式只講我們用到了,也就是不展開講解。上程式碼看註解(conn.php):

<?
// 獲取資料庫連線,@符號代表的是不顯示錯誤,因為php的報錯一大堆影響心情,可以使用or die來顯示連線狀況
$conn = @mysql_connect("localhost:3306","root","123456") or die("連線資料庫錯誤");
// 和mysql連上了,那麼多資料庫我得選一個用對不對,所以要使用到mysql_select_db("資料庫名稱",連線物件)
mysql_select_db("php",$conn);
?>
下面完成第一個功能,新增留言的功能,add.php。先上程式碼:
<?
include("head.php");
// 連線資料庫
include("conn.php");
if(@$_POST['submit']){
$sql="INSERT INTO message (user,title,content,lastdate) VALUES ('$_POST[user]','$_POST[title]','$_POST[content]',now())";
mysql_query($sql);
echo("<br>"."發表成功");
}
mysql_close($conn);
?>
<style type="text/css">
	form *{
		font-family: "微軟雅黑";
		margin: 2px 0 5px 5px;
	} 
	span{
		font-size: 13pt;
		color: green;
	}
</style>
<script type="text/javascript">
// 使用如下函式來做客戶端驗證
function checkPost() {
	if(myform.user.value == ""){
		document.getElementById("span1").innerHTML = "使用者名稱不能為空";
		myform.user.focus();
		return false;
	}
	if(myform.title.value.length < 5){
		document.getElementById("span2").innerHTML ="標題不能少於五個字";
		myform.title.focus();
		return false;
	}
}
</script>
<form action="add.php" method="post" name="myform" onsubmit="return checkPost()">
	使用者:<input type="text" name="user"><span id="span1"></span><br>
	標題:<input type="text" name="title"><span id="span2"></span><br>
	內容:<textarea name="content"></textarea><br>
	<input type="submit" name="submit" value="發表留言">
</form>

這個地方沒什麼好講的,講下include函式和接收表單引數的兩個超全域性變數$_POST和$_GET。include函式可以將其他的php頁面包含進本頁面,當然本頁面可以操作被包含頁面的引數,比如程式碼中的mysql_close($conn)操作的就是conn.php的引數。超全域性變數是什麼?PHP 中的許多預定義變數都是“超全域性的”,這意味著它們在一個指令碼的全部作用域中都可用。在函式或方法中無需執行 global $variable; 就可以訪問它們。$_POST和$_GET則是接收不同提交方式的表單引數的兩個超全域性變數。程式碼中的mysql_query函式指定sql語句。

對了,還存在一個head.php忘了上了:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<b><a href="add.php">新增留言</a> | <a href="list.php">瀏覽留言</a>  | <a href="login.php">登陸</a> </b>
<hr size=1>

接下來展示留言,這個就很簡單了,但是還是宣告一個問題,使用者提交的留言內容是有回車鍵的。我們如何將回車鍵在頁面表現出來呢?php提供了一個str_replace('換下去的','換上來的','內容')方法,可以將指定內容中的指定字元換成另外的字元。下面是list.php

<?
include("head.php");
include("conn.php");
?>
<table>
<?
// 將查詢到的結果按照id的倒著排列 
$sql = "SELECT * FROM message order by id desc";
$query = mysql_query($sql);
while($array = mysql_fetch_assoc($query)){
?>

	<tr bgcolor="pink">
		<td>標題:<?=$array['title']?></td>
		<td>使用者:<?=$array['user']?></td>
	</tr>
	<tr bgcolor="#ABABAF">
		<td>內容:<?=//將內容中的換行變味兒可以在瀏覽器執行的<br>換行
		str_replace("\n", "<br>", $array['content'])?>
		</td>
		<td>釋出日期:<?=$array['lastdate']?></td>
	</tr>
<?
}
?>
</table>
下面介紹一個php的cookie函式。

setcookie() 函式用於設定 cookie。

註釋:setcookie() 函式必須位於 <html> 標籤之前。

例如:setcookie("user", "Alex Porter", time()+3600);將建立名為 "user" 的 cookie,把為它賦值 "Alex Porter",也規定了此 cookie 在一小時後過期。

下面是login.php

<?
include("head.php");
if(@$_GET['out'] == 'login'){
	setcookie("cookie", "out");
	echo("<script language=\"javascript\">location.href='login.php';</script>");
}
if(@$_POST[user]=='admin'){
	$passcode = md5(@$_POST[pass]);
	if ($passcode == "e10adc3949ba59abbe56e057f20f883e") {
		setcookie("cookie","ok");
		echo("<script language=\"javascript\">location.href='login.php';</script>");
	}
}
if(@$_COOKIE[cookie] != "ok"){
?>
<style type="text/css">
	form *{
		font-family: "微軟雅黑";
		margin: 2px 0 5px 5px;
	} 
	span{
		font-size: 13pt;
		color: green;
	}
</style>
<script type="text/javascript">
function checkPost(){
	if(myform.user.value == ""){
		document.getElementById("span1").innerHTML = "使用者名稱不能為空";
		myform.user.focus();
		return false;
	}
	if(myform.pass.value == ""){
		document.getElementById("span2").innerHTML = "密碼不能為空";
		myform.pass.focus();
		return false;
	}
}
</script>
<form action="login.php" method="post" name="myform" onsubmit="return checkPost()"> 
	user:<input type="text" name="user"><span id="span1"></span><br>
	pass:<input type="password" name="pass"><span id="span2"></span><br>
	<input type="submit" value="登入">
</form>
<?
}else{
?>
<a href="?out=login">退出</a>
<?	
}
?>