[php] 我的微型論壇的簡單教程[已完成]第6/8頁
現(xiàn)在數(shù)據(jù)庫中還沒有數(shù)據(jù),所以,我們運行首頁,只顯示“對不起,論壇尚在建設中……”。既然我們很希望看到結果,就往數(shù)據(jù)庫中加幾條數(shù)據(jù)吧??!當然,直接在MySQL客戶端運行查詢語句"insert into forums (field1,field2,...fieldN) values (value1,value2,...valueN)"是可行的,但是,作為WEB程序,這樣做顯然沒啥意義。我們靠表單來插入數(shù)據(jù)。
建立一個新文件:add_forum.php。首先說明的是,這個頁面是管理員用來添加版塊的,開始肯定要判斷當前用戶有沒有管理權限?,F(xiàn)在我們只為了首頁顯示數(shù)據(jù)而已,所以,可以先不加驗證程序。我用DW做的添加論壇版塊的表單如下圖:
其中排序指論壇排列順序,SQL語句"order by forum_list asc";完全開放的話游客可以發(fā)表、回復帖子,否則只注冊會員才可以發(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>論壇簡介</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進行驗證,也可以提交到save_forum.php后進行必要的驗證。我這里對字符串檢驗不多說了,只研究插入數(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是復選框,在MYSQL里用0和1來表示是否選中
$isguest=isset($isguest)?1:0; //選中的話就是1,不選中的話就是0;
?>
寫入數(shù)據(jù)庫數(shù)據(jù)的SQL語句大家都很熟悉了,用insert來實現(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ù)庫
header("location:index.php"); //執(zhí)行完插入則跳轉到首頁
?>
看看我添加頁面和顯示頁面吧:
最終顯示效果:
OK,現(xiàn)在已經(jīng)實現(xiàn)了基本的數(shù)據(jù)插入和讀取了。嘿嘿……下一步,和上面道理一樣,注冊和登陸界面,同樣是用DW做表單,HTML代碼我不在贅述,抓個圖吧!會員注冊就填寫四個條件可以了(現(xiàn)在都講究用戶體驗,能少填就少填吧^@^必要的驗證自己研究去)
會員登陸見圖
先寫處理注冊信息的部分代碼:
<?php
//reg.php
require_once "conn.php";$username=$_POST["username"];
$password=md5(trim($_POST["password"]));
$email=trim($_POST["email"]);$groupID=1; //默認用戶等級:1為注冊會員,2為管理員
$real_name="未知"; //默認真實姓名,登陸后自己修改吧
$no_of_post=0; //剛注冊用戶發(fā)貼量肯定為0
$headimg="head/0.gif"; //默認用戶頭像
$sign="Nothing..."; //默認用戶的簽名$num=mysql_result(mysql_query("select count(*) from member where username='$username'"),0); //檢查用戶名是否已經(jīng)被注冊
/*上面程序其實就是:
$sql="select count(*) from member where username='$username'";
$result=mysql_query($sql);
$num=mysql_result($result,0);
*/
if($num){ //當用戶名已經(jīng)被注冊時
echo "<script>alert('該用戶名已經(jīng)被注冊!');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);
//注意插入當前時間,00:00:00 00:00:00格式時用now(),看起來和ASP一樣哦……
//這里要特別注意了,注冊后會員就會自動登陸,如下:
$_SESSION["username"]=$username;
$_SESSION["groupID"]='1';
$_SESSION["islogined"]="OK"; //我自己加的一個項目,可有可無
echo "<script>alert('注冊成功!');location.href='index.php';</script>";
}
這里出現(xiàn)了SESSION,用來標識用戶是否登陸。在PHP中的SESSION是怎樣用的呢?按照書上說的,注冊SESSION時應該這樣:
<?php
$username="abc";
session_register("username");
?>
實際上,我們可以這樣來用(象ASP那樣直接賦值給SESSION變量),使用SESSION時直接拿來用就可以了。
<?php //下面查看SESSION是否已經(jīng)生效
$username="abc";
$_SESSION["username"]=$username;
if(session_is_registered("username")
echo "SESSION變量已經(jīng)生效";
//因為它是變量,同樣也可以這樣來判斷
if(isset($_SESSION["username"]))
echo "SESSION變量已經(jīng)生效";
?>
這里要說明的是,使用SESSION時,必須首先使用session_start()函數(shù)。所以,使用SESSION時的每個頁面,頭部都要有這個函數(shù)出現(xiàn)。
這個時候,注冊用戶已經(jīng)登陸了,那么,在首頁上應該體現(xiàn)出來吧,見下圖:
比較一下沒登陸前這個位置:
實現(xiàn)起來當然靠上面剛講的SESSION啦。代碼如下:
<?php
session_start(); if(!isset($_SESSION["username"])||!isset($_SESSION["islogined"])){
echo"<a href=\"login.php\">登陸</a> <a href=\"register.php\">注冊</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>";
}
?>
上面的代碼應該很簡單,相信大家一看就會懂。值的一提的是,我用SESSION["groupID"]來判斷是否管理員,如果是,則出現(xiàn)”論壇管理“的連接。
退出的頁面loginout.php,邏輯很簡單,把所有SESSION釋放掉就OK了,PHP中釋放全部SESSION的方法是:
<?php
SESSION_DESTROY();//或者使用session_unregister()來注銷SESSION
?>
然后登陸其實也很簡單了(你明白了注冊步驟,登陸就應該很容易了)。部分代碼:
<?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('密碼不正確,請返回檢查!');location.href='login.php';</script>";
}else{//用戶名、密碼都正確,注冊SESSION變量,然后跳轉到首頁
$_SESSION["username"]=$username;
$_SESSION["groupID"]=$rs["groupID"];
$_SESSION["islogined"]="OK";
echo"<script>alert('登陸成功!');location.href='index.php';</script>";
}
}else{//如果沒有這個用戶
echo"<script>alert('沒有這個用戶,請返回檢查!');location.href='login.php';</script>";
}
?>
今天實現(xiàn)了添加論壇版塊,用戶注冊、登陸的功能了,也知道了SESSION的基本用法。
相關文章
Yii2.0使用阿里云OSS的SDK上傳圖片、下載、刪除圖片示例
本篇文章主要介紹了Yii2.0使用阿里云OSS的SDK上傳圖片、下載、刪除圖片示例,具有一定的參考價值,有興趣的可以了解一下2017-09-09ThinkPHP框架實現(xiàn)導出excel數(shù)據(jù)的方法示例【基于PHPExcel】
這篇文章主要介紹了ThinkPHP框架實現(xiàn)導出excel數(shù)據(jù)的方法,結合實例形式分析了thinkPHP添加org擴展基于PHPExcel進行Excel數(shù)據(jù)的導出操作相關實現(xiàn)技巧,需要的朋友可以參考下2018-05-05ThinkPHP實現(xiàn)將SESSION存入MYSQL的方法
這篇文章主要介紹了ThinkPHP實現(xiàn)將SESSION存入MYSQL的方法,需要的朋友可以參考下2014-07-07淺談Laravel POST,PUT,PATCH 路由的區(qū)別
今天小編就為大家分享一篇淺談Laravel POST,PUT,PATCH 路由的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10