一个模仿oso的php论坛程序(之一)_php实例
我经常使用oso的论坛,个人感觉挺好的,因此模仿oso的界面编了一个程序,与大家共享。
程序由三部分组成,即显示主题信息,显示论坛信息,增加论坛信息,主题与论坛内容采用主从表关系。
表结构如下:
drop table fr_t_forumtitle;
create table fr_t_forumtitle( id integer, state varchar(1), readcount integer, replycount integer, title varchar(100), createman varchar(20), replyman varchar(20), replytime datetime);
drop table fr_t_forumcontent;
create table fr_t_forumcontent( id integer, replyman varchar(20), replytime datetime, replyemail varchar(100), replyhttp varchar(100), replyface smallint, content text);
drop table fr_t_parameter;
create table fr_t_parameter( code varchar(10), name varchar(40), content varchar(10)); insert into fr_t_parameter(code,name,content) values('pageline','分页数','20'); /* 调整该参数可以修改每页行数 */
程序1:mainforum.php
<html> <head> <link rel="STYLESHEET" type="text/css" href="fp_zhangcg.css"> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta name="Microsoft Theme" content="none"> <meta name="Microsoft Border" content="none"> <title>论坛</title> </head> <body bgcolor="#C0C0C0" background="backcolor.GIF"> <? include ("c:mydbheader.inc"); ?> <table width="100%" border="0"> <tr class="text"> <td width="50%"> <p align="left">当前位置:主页——论坛</p> </td> <td width="20%"> <p align="center"> </p> </td> <td width="10%"> <p align="center"> <A href="addmember.php" target=_blank>会员注册</A></p> </td> <td width="10%"> <p align="center">论坛搜索</p> </td> <td width="10%"> <p align="center"> </p> </td> </table> <? $dbh = mysql_connect('localhost:3306','root',''); mysql_select_db('test'); $res=mysql_query("SELECT content FROM fr_t_parameter where code = 'pageline'",$dbh); $row=mysql_fetch_array($res); global $pageline; $pageline = $row["content"]; if (empty($pageline)) { $res=mysql_query("insert into fr_t_parameter(code,name,content) values('pageline','分页数','20')",$dbh); $row=mysql_fetch_array($res); $pageline = 20; } $res=mysql_query("SELECT COUNT(*) AS rcnt FROM fr_t_forumtitle",$dbh); $row=mysql_fetch_array($res); $rcount = $row["rcnt"]; $res=mysql_query("SELECT COUNT(*) AS rcnt_con FROM fr_t_forumcontent",$dbh); $row=mysql_fetch_array($res); $rcon_count = $row["rcnt_con"]; print '<table width="100%" border="0">'; print '<tr class="text">'; print '<td width="15%"> </td>'; print '<td width="35%"> <p align="left"> '; print "主题数:".$rcount." 帖子数:".$rcon_count; print '<td width="35%"> <p align="right"> '; print '<a href="addforum.php?theme_id=0" target="_top"><img src="post.gif" alt="加新帖子" border="0"></a>'; print '<td width="15%"> </td>'; print '</td></table>'; $pages=ceil($rcount / $pageline); //$pages变量现在包含所需的页数 if (empty($offset)) { $offset=1; $curline = 0; } else $curline = ($offset - 1) * $pageline; //打印表头 print '<table width="100%" border="0">'; print '<tr class="text"> <td width="50%"> <p align="center">'; if ($offset <> 1) { //如果偏移量是0,不显示前一页的链接 $newoffset=$offset - 1; print "<a href='$PHP_SELF?offset=$newoffset'>前一页</a>"; } else { print "前一页"; print " "; } //计算总共需要的页数 $pages=ceil($rcount/$pageline); //$pages变量现在包含所需的页数 for ($i=1; $i <= $pages; $i++) { $temps = "<a href='".$PHP_SELF.'?offset='.$i."'>".$i."</a>"; print $temps; print " "; } //检查是否是最后一页 if ($pages!=0 && $offset!=$pages) { $newoffset=$offset+1; print "<a href='$PHP_SELF?offset=$newoffset'>下一页</a>"; } else print "下一页"; print '</p> </td>'; print '<td width="50%"> <p align="center">'; print "当前页:".$offset." 共".$pages."页"; print '</p> </td>'; print "</table>"; //处理详细信息 print '<table width="100%" border="1">'; print '<tr class="text"> '; print '<td width="6%"> <p align="center">New</p> </td>'; print '<td width="5%"> <p align="center">点击</p> </td>'; print '<td width="53%"> <p align="center">主题</p> </td>'; print '<td width="10%"> <p align="center">创建人</p> </td>'; print '<td width="5%"> <p align="center">回复</p> </td>'; print '<td width="11%"> <p align="center">最后修改时间 </p> </td>'; print '<td width="10%"> <p align="center">回复人</p> </td>'; print '</tr>'; $query = 'select id,state,readcount,title,createman,replycount,replytime,replyman from fr_t_forumtitle order by replytime desc LIMIT '.$curline.',20'; $res = mysql_query($query, $dbh); // $li_rownum = mysql_num_rows($res); // for ($i=1; $i<=$li_rownum; $i++) { // $row = mysql_fetch_row($res); while ($row = mysql_fetch_array($res)) { print '<tr class="text"> '; print '<td width="6%"> '.$row["state"].'</td>'; print '<td width="5%"><p align="center">'.$row["readcount"].'</td>'; $tempstr = "<a href='readforum.php?readflag=".$row["id"]."'>".$row['title']."</a>"; print '<td width="53%"> '.$tempstr.'</td>'; // print '<td width="48%">'.$row["title"].'</td>'; print '<td width="9%"> '.$row["createman"].'</td>'; print '<td width="5%"><p align="center">'.$row["replycount"].'</td>'; $temptime = substr($row["replytime"],5,11); print '<td width="11%"> '.$temptime.'</td>'; print '<td width="10%"> '.$row["replyman"].'</td>'; print '</tr>'; } print "</table>"; //打印表尾 print '<table width="100%" border="0">'; print '<tr class="text"> <td width="50%"> <p align="center">'; if ($offset <> 1) { //如果偏移量是0,不显示前一页的链接 $newoffset=$offset - 1; print "<a href='$PHP_SELF?offset=$newoffset'>前一页</a>"; } else { print "前一页"; print " "; } //计算总共需要的页数 for ($i=1; $i <= $pages; $i++) { $temps = "<a href='".$PHP_SELF.'?offset='.$i."'>".$i."</a>"; print $temps; print " "; } //检查是否是最后一页 if ($pages!=0 && $offset!=$pages) { $newoffset=$offset+1; print "<a href='$PHP_SELF?offset=$newoffset'>下一页</a>"; } else print "下一页"; print '</p> </td>'; print '<td width="50%"> <p align="center">'; print "当前页:".$offset." 共".$pages."页"; print '</p> </td>'; print "</table>"; //end of 打印表尾 ?> <? include ("c:mydbfooter.inc"); ?> </body> </html>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Alipay PHP ...

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.
