[php] 我的微型論壇的簡(jiǎn)單教程[已完成]第6/8頁(yè)
現(xiàn)在數(shù)據(jù)庫(kù)中還沒(méi)有數(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程序,這樣做顯然沒(méi)啥意義。我們靠表單來(lái)插入數(shù)據(jù)。
建立一個(gè)新文件:add_forum.php。首先說(shuō)明的是,這個(gè)頁(yè)面是管理員用來(lái)添加版塊的,開(kāi)始肯定要判斷當(dāng)前用戶有沒(méi)有管理權(quán)限。現(xiàn)在我們只為了首頁(yè)顯示數(shù)據(jù)而已,所以,可以先不加驗(yàn)證程序。我用DW做的添加論壇版塊的表單如下圖:
其中排序指論壇排列順序,SQL語(yǔ)句"order by forum_list asc";完全開(kāi)放的話游客可以發(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" />
完全開(kāi)放</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)不多說(shuō)了,只研究插入數(shù)據(jù)的部分。
首先接收表單的值,要區(qū)分POST和GET方式,分別使用$_POST["**"]和$_GET["**"]來(lái)接受數(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來(lái)表示是否選中
$isguest=isset($isguest)?1:0; //選中的話就是1,不選中的話就是0;
?>
寫入數(shù)據(jù)庫(kù)數(shù)據(jù)的SQL語(yǔ)句大家都很熟悉了,用insert來(lái)實(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ì)員登陸見(jiàn)圖
先寫處理注冊(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(),看起來(lái)和ASP一樣哦……
//這里要特別注意了,注冊(cè)后會(huì)員就會(huì)自動(dòng)登陸,如下:
$_SESSION["username"]=$username;
$_SESSION["groupID"]='1';
$_SESSION["islogined"]="OK"; //我自己加的一個(gè)項(xiàng)目,可有可無(wú)
echo "<script>alert('注冊(cè)成功!');location.href='index.php';</script>";
}
這里出現(xiàn)了SESSION,用來(lái)標(biāo)識(shí)用戶是否登陸。在PHP中的SESSION是怎樣用的呢?按照書上說(shuō)的,注冊(cè)SESSION時(shí)應(yīng)該這樣:
<?php
$username="abc";
session_register("username");
?>
實(shí)際上,我們可以這樣來(lái)用(象ASP那樣直接賦值給SESSION變量),使用SESSION時(shí)直接拿來(lái)用就可以了。
<?php //下面查看SESSION是否已經(jīng)生效
$username="abc";
$_SESSION["username"]=$username;
if(session_is_registered("username")
echo "SESSION變量已經(jīng)生效";
//因?yàn)樗亲兞?,同樣也可以這樣來(lái)判斷
if(isset($_SESSION["username"]))
echo "SESSION變量已經(jīng)生效";
?>
這里要說(shuō)明的是,使用SESSION時(shí),必須首先使用session_start()函數(shù)。所以,使用SESSION時(shí)的每個(gè)頁(yè)面,頭部都要有這個(gè)函數(shù)出現(xiàn)。
這個(gè)時(shí)候,注冊(cè)用戶已經(jīng)登陸了,那么,在首頁(yè)上應(yīng)該體現(xiàn)出來(lái)吧,見(jiàn)下圖:
比較一下沒(méi)登陸前這個(gè)位置:
實(shí)現(xiàn)起來(lái)當(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"]來(lái)判斷是否管理員,如果是,則出現(xiàn)”論壇管理“的連接。
退出的頁(yè)面loginout.php,邏輯很簡(jiǎn)單,把所有SESSION釋放掉就OK了,PHP中釋放全部SESSION的方法是:
<?php
SESSION_DESTROY();//或者使用session_unregister()來(lái)注銷SESSION
?>
然后登陸其實(shí)也很簡(jiǎn)單了(你明白了注冊(cè)步驟,登陸就應(yīng)該很容易了)。部分代碼:
<?php
session_start();require_once("conn.php"); //先接收用戶登陸表單傳來(lái)的值,這里略去$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{//如果沒(méi)有這個(gè)用戶
echo"<script>alert('沒(méi)有這個(gè)用戶,請(qǐng)返回檢查!');location.href='login.php';</script>";
}
?>
今天實(shí)現(xiàn)了添加論壇版塊,用戶注冊(cè)、登陸的功能了,也知道了SESSION的基本用法。
相關(guān)文章
Yii2.0使用阿里云OSS的SDK上傳圖片、下載、刪除圖片示例
本篇文章主要介紹了Yii2.0使用阿里云OSS的SDK上傳圖片、下載、刪除圖片示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09ThinkPHP框架實(shí)現(xiàn)導(dǎo)出excel數(shù)據(jù)的方法示例【基于PHPExcel】
這篇文章主要介紹了ThinkPHP框架實(shí)現(xiàn)導(dǎo)出excel數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了thinkPHP添加org擴(kuò)展基于PHPExcel進(jìn)行Excel數(shù)據(jù)的導(dǎo)出操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-05-05ThinkPHP實(shí)現(xiàn)將SESSION存入MYSQL的方法
這篇文章主要介紹了ThinkPHP實(shí)現(xiàn)將SESSION存入MYSQL的方法,需要的朋友可以參考下2014-07-07基于PHP的登錄和注冊(cè)的功能的實(shí)現(xiàn)
這篇文章主要介紹了基于PHP的登錄和注冊(cè)的功能的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08php刪除數(shù)組指定元素實(shí)現(xiàn)代碼
這篇文章主要介紹了php刪除數(shù)組指定元素實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05smarty簡(jiǎn)單分頁(yè)的實(shí)現(xiàn)方法
這篇文章主要介紹了smarty簡(jiǎn)單分頁(yè)的實(shí)現(xiàn)方法,以一個(gè)具體的實(shí)例講述了smarty分頁(yè)的完整實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下2014-10-10淺談Laravel POST,PUT,PATCH 路由的區(qū)別
今天小編就為大家分享一篇淺談Laravel POST,PUT,PATCH 路由的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10php利用單例模式實(shí)現(xiàn)日志處理類庫(kù)
該日志類利用單例模式,節(jié)省資源。自行判斷文件大小,超出指定大小則按序自行創(chuàng)建文件。2014-02-02PHP用戶驗(yàn)證和標(biāo)簽推薦的簡(jiǎn)單使用
這篇文章主要介紹了PHP用戶驗(yàn)證和標(biāo)簽推薦的簡(jiǎn)單使用,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10