[php] 我的微型論壇的簡(jiǎn)單教程[已完成]第6/8頁(yè)
現(xiàn)在數(shù)據(jù)庫(kù)中還沒有數(shù)據(jù),所以,我們運(yùn)行首頁(yè),只顯示“對(duì)不起,論壇尚在建設(shè)中……”。既然我們很希望看到結(jié)果,就往數(shù)據(jù)庫(kù)中加幾條數(shù)據(jù)吧!!當(dāng)然,直接在MySQL客戶端運(yùn)行查詢語(yǔ)句"insert into forums (field1,field2,...fieldN) values (value1,value2,...valueN)"是可行的,但是,作為WEB程序,這樣做顯然沒啥意義。我們靠表單來插入數(shù)據(jù)。
建立一個(gè)新文件:add_forum.php。首先說明的是,這個(gè)頁(yè)面是管理員用來添加版塊的,開始肯定要判斷當(dāng)前用戶有沒有管理權(quán)限?,F(xiàn)在我們只為了首頁(yè)顯示數(shù)據(jù)而已,所以,可以先不加驗(yàn)證程序。我用DW做的添加論壇版塊的表單如下圖:

其中排序指論壇排列順序,SQL語(yǔ)句"order by forum_list asc";完全開放的話游客可以發(fā)表、回復(fù)帖子,否則只注冊(cè)會(huì)員才可以發(fā)帖。
表單的HTML部分如下:
<form name="form" action="save_forum.php" method="post"><table width="400" border="0" align="center" cellpadding="5" cellspacing="1" class="mrg-top maintable">
<tr id="title">
<td colspan="2">論壇管理</td>
</tr>
<tr>
<td width="23%"><strong>論壇名稱</strong></td>
<td width="77%"><input name="forum_name" type="text" class="input" id="forum_name" /></td>
</tr>
<tr>
<td><strong>論壇簡(jiǎn)介</strong></td>
<td><textarea name="forum_description" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td><strong>論壇排序</strong></td>
<td><input name="forum_order" type="text" class="input" id="forum_order" />
<input name="isguest" type="checkbox" id="isguest" value="1" />
完全開放</td>
</tr>
<tr>
<td></td>
<td><input name="Submit" type="submit" class="btn" value="添加" />
<input name="Submit2" type="reset" class="btn" value="重置" /></td>
</tr>
</table></form>
表單可以用JS或VBS進(jìn)行驗(yàn)證,也可以提交到save_forum.php后進(jìn)行必要的驗(yàn)證。我這里對(duì)字符串檢驗(yàn)不多說了,只研究插入數(shù)據(jù)的部分。
首先接收表單的值,要區(qū)分POST和GET方式,分別使用$_POST["**"]和$_GET["**"]來接受數(shù)據(jù)。
<?php
$forum_name=$_POST["forum_name"];
$forum_description=$_POST["forum_description"];
$forum_order=$_POST["forum_order"];
$isguest=$_POST["isguest"];
//這里注意isguest是復(fù)選框,在MYSQL里用0和1來表示是否選中
$isguest=isset($isguest)?1:0; //選中的話就是1,不選中的話就是0;
?>
寫入數(shù)據(jù)庫(kù)數(shù)據(jù)的SQL語(yǔ)句大家都很熟悉了,用insert來實(shí)現(xiàn):
<?php
require_once("conn.php");
//剛才接收值的程序
$sql="insert into forums (forum_name,forum_description,forum_order,isguest)values('$forum_name','$forum_description','$forum_order','$isguest')";
mysql_query($sql); //到這里,數(shù)據(jù)已經(jīng)插入了數(shù)據(jù)庫(kù)
header("location:index.php"); //執(zhí)行完插入則跳轉(zhuǎn)到首頁(yè)
?>
看看我添加頁(yè)面和顯示頁(yè)面吧:

最終顯示效果:

OK,現(xiàn)在已經(jīng)實(shí)現(xiàn)了基本的數(shù)據(jù)插入和讀取了。嘿嘿……下一步,和上面道理一樣,注冊(cè)和登陸界面,同樣是用DW做表單,HTML代碼我不在贅述,抓個(gè)圖吧!會(huì)員注冊(cè)就填寫四個(gè)條件可以了(現(xiàn)在都講究用戶體驗(yàn),能少填就少填吧^@^必要的驗(yàn)證自己研究去)

會(huì)員登陸見圖

先寫處理注冊(cè)信息的部分代碼:
<?php
//reg.php
require_once "conn.php";$username=$_POST["username"];
$password=md5(trim($_POST["password"]));
$email=trim($_POST["email"]);$groupID=1; //默認(rèn)用戶等級(jí):1為注冊(cè)會(huì)員,2為管理員
$real_name="未知"; //默認(rèn)真實(shí)姓名,登陸后自己修改吧
$no_of_post=0; //剛注冊(cè)用戶發(fā)貼量肯定為0
$headimg="head/0.gif"; //默認(rèn)用戶頭像
$sign="Nothing..."; //默認(rèn)用戶的簽名$num=mysql_result(mysql_query("select count(*) from member where username='$username'"),0); //檢查用戶名是否已經(jīng)被注冊(cè)
/*上面程序其實(shí)就是:
$sql="select count(*) from member where username='$username'";
$result=mysql_query($sql);
$num=mysql_result($result,0);
*/
if($num){ //當(dāng)用戶名已經(jīng)被注冊(cè)時(shí)
echo "<script>alert('該用戶名已經(jīng)被注冊(cè)!');location.href='register.php';</script>";
}else{
$sql="insert into member (groupID,username,password,real_name,jointime,no_of_post,headimg,
email,sign) values ('$groupID','$username','$password','$real_name',now(),'$no_of_post','$headimg','$email','$sign')";
$db->db_query($sql);
//注意插入當(dāng)前時(shí)間,00:00:00 00:00:00格式時(shí)用now(),看起來和ASP一樣哦……
//這里要特別注意了,注冊(cè)后會(huì)員就會(huì)自動(dòng)登陸,如下:
$_SESSION["username"]=$username;
$_SESSION["groupID"]='1';
$_SESSION["islogined"]="OK"; //我自己加的一個(gè)項(xiàng)目,可有可無
echo "<script>alert('注冊(cè)成功!');location.href='index.php';</script>";
}
這里出現(xiàn)了SESSION,用來標(biāo)識(shí)用戶是否登陸。在PHP中的SESSION是怎樣用的呢?按照書上說的,注冊(cè)SESSION時(shí)應(yīng)該這樣:
<?php
$username="abc";
session_register("username");
?>
實(shí)際上,我們可以這樣來用(象ASP那樣直接賦值給SESSION變量),使用SESSION時(shí)直接拿來用就可以了。
<?php //下面查看SESSION是否已經(jīng)生效
$username="abc";
$_SESSION["username"]=$username;
if(session_is_registered("username")
echo "SESSION變量已經(jīng)生效";
//因?yàn)樗亲兞浚瑯右部梢赃@樣來判斷
if(isset($_SESSION["username"]))
echo "SESSION變量已經(jīng)生效";
?>
這里要說明的是,使用SESSION時(shí),必須首先使用session_start()函數(shù)。所以,使用SESSION時(shí)的每個(gè)頁(yè)面,頭部都要有這個(gè)函數(shù)出現(xiàn)。
這個(gè)時(shí)候,注冊(cè)用戶已經(jīng)登陸了,那么,在首頁(yè)上應(yīng)該體現(xiàn)出來吧,見下圖:

比較一下沒登陸前這個(gè)位置:

實(shí)現(xiàn)起來當(dāng)然靠上面剛講的SESSION啦。代碼如下:
<?php
session_start(); if(!isset($_SESSION["username"])||!isset($_SESSION["islogined"])){
echo"<a href=\"login.php\">登陸</a> <a href=\"register.php\">注冊(cè)</a>";
}else{
echo $_SESSION["username"].",<a href=\"control.php\">我的資料</a> <a href=\"loginout.php\">注銷</a>";
if($_SESSION["groupID"]=="2") echo " <a href=\"admin_forums.php\">論壇管理</a>";
}
?>
上面的代碼應(yīng)該很簡(jiǎn)單,相信大家一看就會(huì)懂。值的一提的是,我用SESSION["groupID"]來判斷是否管理員,如果是,則出現(xiàn)”論壇管理“的連接。
退出的頁(yè)面loginout.php,邏輯很簡(jiǎn)單,把所有SESSION釋放掉就OK了,PHP中釋放全部SESSION的方法是:
<?php
SESSION_DESTROY();//或者使用session_unregister()來注銷SESSION
?>
然后登陸其實(shí)也很簡(jiǎn)單了(你明白了注冊(cè)步驟,登陸就應(yīng)該很容易了)。部分代碼:
<?php
session_start();require_once("conn.php"); //先接收用戶登陸表單傳來的值,這里略去$sql="select * from member where username='$username'";
$result=mysql_query($sql);
$num=mysql_num_rows($result); //得到記錄的數(shù)量
if($num){ //如果用戶存在,則檢查密碼是否正確
$rs=mysql_fetch_array($result);
if($rs["password"]!=md5($password)){
echo"<script>alert('密碼不正確,請(qǐng)返回檢查!');location.href='login.php';</script>";
}else{//用戶名、密碼都正確,注冊(cè)SESSION變量,然后跳轉(zhuǎn)到首頁(yè)
$_SESSION["username"]=$username;
$_SESSION["groupID"]=$rs["groupID"];
$_SESSION["islogined"]="OK";
echo"<script>alert('登陸成功!');location.href='index.php';</script>";
}
}else{//如果沒有這個(gè)用戶
echo"<script>alert('沒有這個(gè)用戶,請(qǐng)返回檢查!');location.href='login.php';</script>";
}
?>
今天實(shí)現(xiàn)了添加論壇版塊,用戶注冊(cè)、登陸的功能了,也知道了SESSION的基本用法。
相關(guān)文章
PHP實(shí)現(xiàn)WebService的簡(jiǎn)單示例和實(shí)現(xiàn)步驟
這篇文章主要介紹了PHP實(shí)現(xiàn)WebService的簡(jiǎn)單示例和實(shí)現(xiàn)步驟,本文直接給出示例代碼并分步驟講解,需要的朋友可以參考下2015-03-03
PHP將字符串首字母大小寫轉(zhuǎn)換的實(shí)例
下面小編就為大家?guī)硪黄狿HP將字符串首字母大小寫轉(zhuǎn)換的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
Codeigniter控制器controller繼承問題實(shí)例分析
這篇文章主要介紹了Codeigniter控制器controller繼承問題,以簡(jiǎn)單實(shí)例形式分析了CodeIgniter中針對(duì)控制器controller繼承的實(shí)現(xiàn)與使用方法,需要的朋友可以參考下2016-01-01
PHP網(wǎng)站開發(fā)中常用的8個(gè)小技巧
這篇文章主要介紹了PHP網(wǎng)站開發(fā)中常用的8個(gè)小技巧,本文講解了命名、使用、PHP判斷Form表單是否提交、PHP 獲取字符串長(zhǎng)度、PHP超全局對(duì)象等內(nèi)容,需要的朋友可以參考下2015-02-02
從零開始學(xué)YII2框架(三)擴(kuò)展插件yii2-gird
yii2-gird 插件是Yii2.0的一個(gè)擴(kuò)展。它在官方的girdview基礎(chǔ)上擴(kuò)展了一些實(shí)用的功能。非常好用,推薦使用哦。2014-08-08

