##回帖功能
模板所在位置: `/theme/default/detail.html`
PHP頁面 `detail.php`
##頁面功能說明
detail.php頁面可以展示、也可以回復,還能夠實現刪貼、高亮、精華、屏蔽等操作。
####操作流程
1. 加載基礎
2. 判斷是否
3. 判斷get或者post傳入的類型是什么
4. 若是回復則走回復流程,若是刪除、精華、屏蔽則走對應的流程
5. 將回復內容和SQL語句準備完成,并寫入數據庫
6. 失敗報錯
7. 成功則提示成功,送金幣跳轉回原貼地址
##回貼、刪除、置頂功能流程圖

##整體代碼演示
~~~
<?php
/**
* 帖子詳情
*/
include './common/common.php';
//判斷帖子ID是否存在
if(empty($_REQUEST['id']) || !is_numeric($_REQUEST['id']))
{
$msg = '<font color=red><b>禁止非法操作</b></font>';
$url = $_SERVER['HTTP_REFERER'];
$style = 'alert_error';
$toTime = 3000;
include 'notice.php';
}
$Id=$_REQUEST['id'];
//保存帖子回復
if($_POST['replysubmit'])
{
//判斷用戶是否登錄
if(!$_COOKIE['uid']){
$notice='抱歉,您尚未登錄';
include 'close.php';
exit;
}
$tid = $Id; //跟帖時記錄貼子ID
$authorid = $_COOKIE['uid']; //發布人ID
$content = strMagic($_POST['message']); //內容
$addtime = time(); //發表時間
$addip = ip2long($_SERVER['REMOTE_ADDR']); //發布人IP
$classId = $_POST['classid']; //類別ID
$n='first, tid, authorid, content, addtime, addip, classid';
$v='0, '.$tid.', '.$authorid.', "'.$content.'", '.$addtime.', '.$addip.', '.$classId.'';
$result = dbInsert('details', $n, $v);
if(!$result)
{
$msg = '<font color=red><b>回復失敗,請聯系管理員</b></font>';
$url = $_SERVER['HTTP_REFERER'];
$style = 'alert_error';
$toTime = 3000;
include 'notice.php';
exit;
}else{
$money = REWARD_H; //回帖贈送積分
$result = dbUpdate('user', "grade=grade+{$money}", 'uid='.$_COOKIE['uid'].'');
//更新帖子的回復數量[replycount]
$result = dbUpdate('details', 'replycount=replycount+1', 'id='.$tid.'');
//更新版塊表的回復數量[replycount]
$result = dbUpdate('category', 'replycount=replycount+1', 'cid='.$classId.'');
//header('location:detail.php?id='.$Id);
$msg = '<font color=red><b>帖子回復成功</b></font>';
$url = 'detail.php?id='.$Id;
$style = 'alert_right';
$toTime = 3000;
include 'notice.php';
$msg = '回帖贈送';
include 'layer.php';
exit;
}
}
//點擊帖子時訪問次數加1
$result = dbUpdate('details', 'hits=hits+1', 'id='.$Id.' and isdel=0 and first=1');
if(!$result)
{
$msg = '<font color=red><b>您瀏覽的帖子不存在或已被刪除</b></font>';
$url = $_SERVER['HTTP_REFERER'];
$style = 'alert_error';
$toTime = 3000;
include 'notice.php';
}
//讀取帖子信息
$TiZi = dbSelect('details','*','id='.$Id.' and isdel=0 and first=1','',1);
$authorid = $TiZi[0]['authorid']; //作者ID
$Title = $TiZi[0]['title']; //標題
$Content = $TiZi[0]['content']; //內容
$Addtime = getFormatTime($TiZi[0]['addtime']); //發布時間
$classId = $TiZi[0]['classid']; //版塊ID
$Replycount = $TiZi[0]['replycount']; //回復數量
$Hits = $TiZi[0]['hits']; //點擊數量
$Elite = $TiZi[0]['elite']; //精華
$Rate = $TiZi[0]['rate']; //所需積分數量
//讀取上一條
$top = dbSelect('details','id','id>'.$Id.' and isdel=0 and first=1','id desc',1);
if($top)
{
$topid=$top[0]['id'];
}else{
$topid=false;
}
//讀取下一條
$down = dbSelect('details','id','id<'.$Id.' and isdel=0 and first=1','id desc',1);
if($down){
$downid = $down[0]['id'];
}else{
$downid = false;
}
//讀取導航索引
$category = dbSelect('category','cid,classname,parentid,compere','parentid<>0 and cid='.$classId.'','',1);
if($category)
{
$smallName = $category[0]['classname'];
$smallId = $category[0]['cid'];
$BanZhu = $category[0]['compere'];
$parentCategory = dbSelect('category','cid,classname','cid='.$category[0]['parentid'].'','',1);
if($parentCategory)
{
$bigName=$parentCategory[0]['classname'];
$bigId=$parentCategory[0]['cid'];
}else{
$msg = '<font color=red><b>非法操作</b></font>';
$url = $_SERVER['HTTP_REFERER'];
$style = 'alert_error';
$toTime = 3000;
include 'notice.php';
exit;
}
}else{
$msg = '<font color=red><b>非法操作</b></font>';
$url = $_SERVER['HTTP_REFERER'];
$style = 'alert_error';
$toTime = 3000;
include 'notice.php';
exit;
}
//讀取會員信息
$User = dbSelect('user','username,email,udertype,regtime,lasttime,picture,autograph,grade','uid='.$authorid.'','',1);
if($User)
{
$U_sername = $User[0]['username'];
$E_mail = $User[0]['email'];
$U_dertype = $User[0]['udertype'];
$R_egtime = formatTime($User[0]['regtime'],false);
$L_asttime = formatTime($User[0]['lasttime'],false);
$P_icture = $User[0]['picture'];
$A_utograph = $User[0]['autograph'];
$G_rade = $User[0]['grade'];
}
//該主題下的所有回復數量
$TZCount = dbFuncSelect('details','count(id)','tid='.$Id.' and isdel=0 and first=0');
$zCount = $TZCount['count(id)'];
$linum = 10;
$Lpage = empty($_GET['page'])?1:$_GET['page'];
//循環帖子回復信息
$select = 't.id as id,t.isdisplay as isdisplay,t.authorid as authorid,t.content as content,t.addtime as addtime,t.addip as addip,t.isdel as isdel,t.elite as elite,u.username as username,u.email as email,u.udertype as udertype,u.regtime as regtime,u.lasttime as lasttime,u.picture as picture,u.autograph as autograph,u.grade as grade';
$HTiZi = dbDuoSelect('details as t','user as u',' on t.authorid=u.uid',null,null,$select,'t.tid='.$Id.' and t.isdel=0 and t.first=0','t.id asc', setLimit($linum));
$title = $Title.' - '.WEB_NAME;
$ggg = 'iPhone 游戲軟件分享區';
//查找版主或管理員
$NBanZhu = explode(',',$BanZhu);
if(in_array($_COOKIE['uid'], $NBanZhu))
{
$GuanLi=true;
}else{
if($_COOKIE['udertype'])
{
$GuanLi=true;
}
}
//給帖子付款
if(!empty($_POST['paysubmit']))
{
//判斷用戶是否登錄
if(!$_COOKIE['uid'])
{
$notice='抱歉,您尚未登錄';
include 'close.php';
exit;
}
foreach($_POST['oidarr'] as $key=>$val)
{
$nval=explode(',',$val);
//將order表中的ispay更新為1
$res = dbUpdate('order', 'ispay=1', 'oid='.$key.'');
//扣錢
$res = dbUpdate('user', 'grade=grade-'.$nval[1].'', 'uid='.$_COOKIE['uid'].'');
//給作者加錢
$res = dbUpdate('user', 'grade=grade+'.$nval[1].'', 'uid='.$nval[0].'');
}
header('location:detail.php?id='.$Id);
exit;
}
//刪除未購買的帖子
if(!empty($_POST['delsubmit']))
{
//判斷用戶是否登錄
if(!$_COOKIE['uid'])
{
$notice='抱歉,您尚未登錄';
include 'close.php';
exit;
}
$arrOid = array_keys($_POST['oidarr']);
$NarrOid = join(',',$arrOid);
$result = dbDel('order', 'oid in('.$NarrOid.')');
header('location:detail.php?id='.$Id);
exit;
}
//購買帖子,點擊及加入訂單表
if(!empty($_GET['pay']))
{
//判斷用戶是否登錄
if(!$_COOKIE['uid'])
{
$notice='抱歉,您尚未登錄';
include 'close.php';
exit;
}
//查詢訂單表中是否有這個購買記錄
$select = 't.title as title,t.authorid as authorid,o.oid as oid,o.tid as tid,o.uid as uid,o.rate as rate';
$IsOrder = dbDuoSelect('order as o','details as t',' on o.tid=t.id',null,null,$select,'o.uid='.$_COOKIE['uid'].' and t.id='.$Id.'','o.oid asc',1);
if(!$IsOrder)
{
//如果沒有購買記錄,加入訂單表
$Oresult = dbInsert('order', 'uid,tid,rate,addtime,ispay', $_COOKIE['uid'].','.$Id.','.$Rate.','.time().',0');
}
//讀取這個用戶還沒有付款的記錄
$OrderList = dbDuoSelect('order as o','details as t',' on o.tid=t.id',null,null,$select,'o.uid='.$_COOKIE['uid'].' and o.ispay=0','o.oid asc');
$allpay = dbFuncSelect('order','sum(rate ) as zpay','uid='.$_COOKIE['uid'].' and ispay=0');
}
//檢查當前瀏覽用戶是否已付費
$MyOrder = dbSelect('order','*','uid='.$_COOKIE['uid'].' and ispay=1 and tid='.$Id.'','oid asc',1);
if($GuanLi){
//刪除,放入回收站
if(!empty($_GET['del'])){
$result = dbUpdate('details', "isdel=1", 'id='.$Id.'');
header('location:index.php');
}
//置頂
if(!empty($_GET['istop'])){
$result = dbUpdate('details', "istop=1", 'id='.$Id.'');
header('location:detail.php?id='.$Id);
}
//高亮
if(!empty($_GET['style'])){
$result = dbUpdate('details', "style='red'", 'id='.$Id.'');
header('location:detail.php?id='.$Id);
}
//精華
if(!empty($_GET['elite'])){
$result = dbUpdate('details', "elite=1", 'id='.$Id.'');
header('location:detail.php?id='.$Id);
}
//刪除回帖,放入回收站
if(!empty($_GET['delht'])){
$result = dbUpdate('details', "isdel=1", 'id='.$_GET['hid'].'');
header('location:detail.php?id='.$Id);
}
//回帖置頂
if(!empty($_GET['istopht'])){
$result = dbUpdate('details', "istop=1", 'id='.$_GET['hid'].'');
header('location:detail.php?id='.$Id);
}
//回帖屏蔽
if(!empty($_GET['isdislpay'])){
$result = dbUpdate('details', "isdisplay=1", 'id='.$_GET['hid'].'');
header('location:detail.php?id='.$Id);
}
}
include template("detail.html");
~~~
- 01. 為什么選擇本書學習PHP
- 1.1 為什么學習PHP?
- 1.2 PHP是什么
- 1.3 零基礎也能學習
- 1.4 為什么有些人學不會
- 02.PHP的環境安裝
- 2.1開發環境是什么?
- 2.2 windows環境安裝
- 2.3 Linux環境安裝
- 2.4 其他開發環境
- 2.5 寫代碼的工具選擇
- 03. PHP基本語法
- 3.1 PHP基本語法
- 3.1.1 寫出你的第一段PHP代碼
- 3.1.2 讀過初中你就會變量
- 3.1.3 echo 顯示命令
- 3.1.4 注釋的功能很強大
- 3.2 數據類型并不神秘
- 3.2.1 整型就是整數
- 3.2.2 布爾就是易經的知識
- 3.2.3 字符串
- 3.2.4 浮點型
- 3.2.5 重要:if和else語法
- 3.2.6 NULL類型
- 3.2.7對象以后會學
- 3.2.8 數組會有單純的一個章節
- 3.2.9 資源類型
- 3.2.10 眼前了解回調類型即可
- 3.2.11 查看和判斷數據類型
- 3.2.12 數據類型的自動轉換和強制轉換
- 3.3 常量和變量
- 3.3.1 用常量限制用戶跳過某些文件
- 3.3.2 可變變量
- 3.3.3 外部變量
- 3.3.4 環境變量
- 3.3.5 變量引用
- 3.4 PHP表達式與運算符
- 3.4.1 算術運算
- 3.4.2 賦值運算
- 3.4.3 自加、自減運算
- 3.4.4 比較運算
- 3.4.5 邏輯運算
- 3.4.6 位運算
- 3.4.7 運算符優先級
- 3.4.8 三元運算符和其它運算符
- 04. PHP中的流程控制
- 4.1 if條件結構流程
- 4.1.1 if語句
- 4.1.2 嵌套if...else...elseif結構
- 4.1.3 if語句多種嵌套
- 4.2 分支結構switch語句的使用
- 4.3 循環語句的使用
- 4.3.1 while循環
- 4.3.2 do...while循環的區別
- 4.3.3 for循環控制語句
- 4.3.4 goto語法
- 4.3.5 declare 語法
- 05.PHP的函數基本語法
- 5.1 自定義函數
- 5.2 自定義函數高級調用
- 5.2.1 回調函數
- 5.2.2 變量函數
- 5.2.3 匿名函數
- 5.2.4 內部函數
- 5.2.5 變量作用域
- 5.2.6 參數的引用
- 5.2.7 遞歸函數
- 5.2.8 靜態變量
- 5.3 使用系統內置函數
- 5.4 文件包含函數
- 5.5 數學常用函數
- 5.6 日期常用函數
- 5.6.1 獲取時期時間信息函數
- 5.6.2 日期驗證函數
- 5.6.3 獲取本地化時間戳函數
- 5.6.4 程序執行時間檢測
- 5.7 字符串常用函數
- 06.PHP數組與數據結構
- 6.1 數組的定義
- 6.2 數組的操作
- 6.2.1 數組的計算
- 6.2.2 for循環遍歷索引數組
- 6.2.3 foreach遍歷關聯數組
- 6.2.4 list、each函數遍歷數組
- 6.2.5 常用操作數組函數
- 6.3 數組的常用函數
- 07. PHP中的正則達達式
- 7.1 正則表達示的定界符
- 7.2 正則表達示中的原子
- 7.3 正則表示中的元字符
- 7.4 正則達達示中的模式修正符
- 7.5 寫正則的訣竅和常用正則
- 7.6 用正則寫一個UBB文本編輯器
- 08.文件系統
- 8.1 讀取文件
- 8.2 創建和修改文件內容
- 8.3 創建臨時文件
- 8.4 移動、拷貝和刪除文件
- 8.5 檢測文件屬性函數
- 8.6 文件常用函數和常量
- 8.7 文件鎖處機制
- 8.8 目錄處理函數
- 8.9 文件權限設置
- 8.10文件路徑函數
- 8.11 小小文件留言本
- 8.12 修改配置文件的實例
- 09.PHP文件上傳
- 9.1 文件上傳需要注意php.ini文件
- 9.2 文件上傳的步驟
- 9.3 文件上傳表單注意事項
- 9.4 按照數組和步驟完成文件上傳
- 9.5 多文件上傳
- 9.6 文件上傳進度處理
- 10.PHP圖像處理
- 10.1 學習前的準備工作
- 10.2 用圖片處理函數畫一張圖
- 10.3 生成驗證碼
- 10.4 圖像縮放和裁剪技術
- 10.5 圖片水印處理
- 11.錯誤處理
- 11.1 禁止顯示錯誤
- 11.2 錯誤報告級別
- 11.3 錯誤記錄日志
- 11.4 自定義錯誤處理函數
- 12.MySQL 入門
- 12.1 請進入《MySQL入門》
- 13. PHP操作mysql數據庫
- 13.1 數據庫連接步驟
- 13.2 通過步驟做一個用戶注冊
- 13.3 通過步驟做一個列表顯示
- 13.4 把用戶做個分頁
- 13.5 批量和指定刪除用戶
- 13.6 修改用戶信息
- 13.7 數據顯示亂碼終極解決辦法
- 14.會話管理和控制
- 14.1 Cookie概述
- 14.2PHP中的Cookie
- 14.3 session概述
- 14.4 PHP中使用session
- 14.5 SESSION應用實例
- 15.通過cURL來做小偷程序
- 15.1 curl的使用步驟
- 15.2 自定義get方法抓取網頁
- 15.3 使用post發送數據
- 16. 用PHP寫一個論壇
- 16.1 web2.0始于論壇
- 16.2 需求:開發前你要知道他的樣子
- 16.3 核心業務流程
- 16.3.1 用戶注冊流程
- 16.3.2 普通用戶和管理員登陸流程
- 16.3.3 發貼流程
- 16.3.4 回復流程
- 16.3.5 版塊管理流程
- 16.3.6 版主業務流程
- 16.3.7 金幣獎勵和消耗流程
- 16.4 數據庫表設計
- 16.5 文件和代碼規范
- 16.6 核心功能說明
- 16.6.1 項目目錄結構說明
- 16.6.2 公共文件的使用
- 16.6.3 模板引擎講解
- 16.6.4 用戶注冊、登陸功能講解
- 16.6.5 發帖功能講解
- 16.6.6 回帖功能講解
- 16.6.7 項目安裝模塊講解
- 附錄1. 版權聲明
- 附錄2 . 學習PHP常用的英文單詞