精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● PHP>>功能代码>>论坛>>一个文本论坛的源码(四)

主题:一个文本论坛的源码(四)
发信人: showtop()
整理人: sltongyong(2000-08-10 10:47:18), 站内信件
这节要谈的是如何显示文章与评论。
这部分只用了一个文件来实现show.php3,内含了一个发表评论的表单。

可以接受外部调用时传来的一个参数:
$id 文件名,不含扩展名

同时本程序也可接受自身传递来的四个参数:

$id 隐含类型,就是外部传来的$id再传一遍 :)
$name 文本,评论者大名
$email 文本,评论者的email,可为空
$content 多行文本,评论内容

源程序如下:

<?php

//打开.info文件和.body文件
$r1=file("../page/".$id.".info"); //还记得我的目录和文件结构吧。
$r2=file("../page/".$id.".body");

//取info文件建立时间,格式化成字串
$dd=date("Y-m-j",filemtime("../page/".$id.".info"));

//取点击数,加1,注意这里要加一个回车!!!
//因为PHP是弱类型的语言,你给它+1,它就变成数值了,所以再给个回车变
//回字串好写入文件。
$r1[4]=($r1[4]+1)."\n";

//如果是自身调用,则说明有评论,那就写入吧…
if(!empty($name) and !empty($content)) {

//我说过用r0、r1…作评论的扩展名
$fn="../reply/".$id.".r".chop($r1[5]);

$r1[5]=($r1[5]+1); //回复数加1

$c=nl2br($content);
$d=date("Y-m-j H:i:s");
$fp=fopen($fn,"w");

fputs($fp,$name."\n"); fputs($fp,$emailadd."\n");
fputs($fp,$d."\n"); fputs($fp,$c."\n");
fclose($fp);

}

//先看一下有没有相应的info文件
if(!file_exists("../page/".$id.".info"))
{ echo "没有找到文件!";exit;}

//先把改动了的点击数与回复数写回到文件中
$fp=fopen("../page/".$id.".info","w");
for($i=0;$i<6;$i++){
fputs($fp,$r1[$i]);
}
fclose($fp);

//打开每个评论文件,读入一个二维数组
for($i=0;$i<$r1[5];$i++){
$f="../reply/".$id.".r".$i;
if(!file_exists($f))continue;
$r3[]=file($f);
}

?>

现在我们得到三个数组:
$r1:文章标题、作者、email、点击数、回复数
$r2:文章内容
$r3[]:这是一个二维数组:
       评论数 X 每个评论的信息(作者、email、时间、内容)
$dd:这是文章发表的时间,我们取出来的,记得吧。

显示这三个数组了,应该很容易做到了,就看你想要的格式了。

显示作者及时间代码如下:

<?php
echo "[<a href=mailto:".$r1[2].">".$r1[1]." ".$dd."]<br> 本文被阅
 ".$r1[4]." 次";
?>

显示评论的代码如下:

<?php
$k=count($r3);
if($k>0){
  for($i=0;$i<$k;$i++) {
echo "<p><img src=\"../images/dot.gif\" width=\"12\" height=\"12\"
><a href=mailto:".$r3[$i][1].">".$r3[$i][0]." 于 ".$r3[$i][2]."
 评论说:
<br>";
   for($j=3;$j<count($r3[$i]);$j++){
echo $r3[$i][$j];
}
echo "</p>";
 }
}

?>

<未完待续>

--
让我的所欲渐化虚无
让我的付出渐近无倦
 E-mail : [email protected]
    url : http://sbiotech.onchina.net《生物技术快报》
          http://www.sharetop.onchina.net 《自由岛论坛》

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.75.57.220]

[关闭][返回]