PHP+MYSQL带注册登录的留言板制作例子

 更新时间:2016年11月25日 17:24  点击:1250
留言板是学习php用来入门的一个常用的例子,下面我看一站长写了这个例子,从注册到登录都有比较的好逻辑于时拿来与大家分享了。
显示效果
如图:
wKiom1LOaN_ylQA2AABIuPmS5fQ575.jpg
wKiom1LOaN_AA_VnAAGjGc5OYew734.jpg
wKioL1LOaNPCSbOxAABUGpgitw4886.jpg
wKiom1LOaN_x9jSQAAAbiSstFWU938.jpg
1.导入MYSQL数据:
将如下SQL语句导入库,假定库名称为bbs,这里保证库与表字段的编码都为UTF-8模式
 代码如下 复制代码
-------------------------------------------
CREATE TABLE `message` (
 `id` tinyint(1) NOT NULL auto_increment,
 `user` varchar(25) NOT NULL,
 `title` varchar(50) NOT NULL,
 `content` tinytext NOT NULL,
 `lastdate` date NOT NULL,
 PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
--------------------------------------------
2.部分PHP代码
add.php
------------------------------------------------
<?
//加载conn.php文件
include("conn.php");
//加载head.php文件
include("head.php");
//提交表单到数据库
if($_POST['submit']){
  $sql = "insert into message(id,user,title,content,lastdate) " .
         "values('','$_POST[user]','$_POST[title]','$_POST[content]',now())";
  mysql_query($sql);
  echo "<script language="javascript">alert('添加成功');history.go(-1)</script>";
}  www.111Cn.neT
?>
<!--利用JS对表单输入进行字符限制-->
<SCRIPT language=javascript>
   function CheckPost() {
       if (myform.user.value==""){
           alert("请填写用户名");
           myform.user.focus();
           return false;
       }
       if (myform.title.value.length<5){
           alert("标题不能少于5个字符");
           myform.title.focus();
           return false;
       }
       if (myform.content.value==""){
           alert("必须要填写留言内容");
           myform.content.focus();
           return false;
       }
}
</SCRIPT>
<!--HTML表单结构-->
<form action="add.php" method="post" name="myform" onsubmit="return CheckPost();">
用户: <input type="text" size="10" name="user"/><br>    
标题: <input type="text" name="title" value="value" size="40" maxlength="40"/><br>
内容: <textarea name="content"></textarea><br/>
<input type='submit' name='submit' value="发布留言"/>
</form>
------------------------------------------------
head.php
-------------------------------------------------
<!--HTML头导航链接-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<link href='#'" /css.css" rel="stylesheet" type="text/css">
<b><a href='#'" /a> | <a href="list.php">浏览留言</a> | <a href="login.php">登陆</a></b>
<hr size="1">
-------------------------------------------------
list.php
-------------------------------------------------
<?
//加载conn.php文件
include("conn.php");
//加载head.php文件
include("head.php");
//设置分页值为5
$pagesize=5;
//取得除域名外后面完整的地址路径
$url=$_SERVER["REQUEST_URI"];
//取得该固定键值[path][query]的url数组
$url=parse_url($url);
//print_r($url);
//取得url的[path]路径值
$url=$url[path];
//取得test表信息
$numq =  mysql_query("select * from message");
//取得test表内容的行数
$num = mysql_num_rows($numq);
//判断是否能取到page参数值
if($_GET[page]){
   //将该值传给pageval
   $pageval=$_GET[page];
   //计算page值,供SQL语句使用
   $page=($pageval-1)*$pagesize;
   //等价于 $page = $page.',' 意思就是将page参数值与,连接起来
   $page.=",";
}
//判断数据库条目总数大于页数,显示分页
if($num > $pagesize){
   //判断上一页和下一页的值若小于0,则按照0处理
   if($pageval<=1)
       $pageval=1;
   //显示分页
   echo "共 $num 条".
   //.(...).用来连接变量名
   " <a href=$url?page=".($pageval-1).">上一页</a> <a href=$url?page=".($pageval+1).">下一页</a>";
}
?>
<!--HTML留言列表结构-->
<table width=500 border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
 <?
 $sql = "select * from message order by id desc limit $page $pagesize";
 $query = mysql_query($sql);
 while($row=mysql_fetch_array($query)){
 ?>
 <tr bgcolor="#eff3ff">
 <td>标题:<?=$row[title]?> 用户:<?=$row[user]?></td>
 </tr>
 <tr bgColor="#ffffff">
     <td>内容:<? echo htmtocode($row[content]); ?></td>
 <tr bgColor="#ffffff">
 <td>时间:<?=$row[lastdate]?></td>
 </tr>
 <?
 }
 ?>
</table>
-------------------------------------------------
conn.php
--------------------------------------------------
<?
//登录MYSQL数据库
$conn = @ mysql_connect("localhost", "root", "") or die("数据库链接错误");
//进入BBS库
mysql_select_db("bbs", $conn);
//使用UTF-8中文编码传输数据流
mysql_query("set names 'UTF8'");
//修改空格和回车编码为HTML可识别编码
function htmtocode($content){
   $content = str_replace("n","<br>", str_replace(" ", "&nbsp;", $content));
   return $content;
}
?>
--------------------------------------------------
login.php
---------------------------------------------------
<?
//加载conn.php文件
include("conn.php");
//判断是否退出,并标记cookie为out,返回登录页
if($_GET[out]){
   setcookie("cookie","out");
   echo "<script language="javascript">location.href='login.php';</script>";
}
//提交表单判断登录ID是否为admin,密码是否匹配'PHP'的MD5值,并标记cookie为ok
if($_POST[id] =='admin'){
   $pw=md5($_POST[pw]);
   if ($pw=='e1bfd762321e409cee4ac0b6e841963c'){
       setcookie("cookie","ok");
       //刷新登录页面使cookie标记值生效.
       echo "<script language="javascript">location.href='login.php';</script>";
   }
}
//加载head.php文件
include("head.php");
//提交表单判断cookie标记值不为ok,则显示登录页,否则显示退出页
if($_COOKIE['cookie']!='ok'){
?>
<!--利用JS对登录字符进行限制-->
<SCRIPT language=javascript>
   function Checklogin(){
       if (myform.id.value ==""){
           alert("请填写登录名");
           myform.id.focus();
           return false;
       }
       if (myform.id.value !=="admin"){
           alert("用户名错误");
           myform.id.focus();
           return false;
       }
       if (myform.pw.value ==""){
           alert("密码不能为空");
           myform.pw.focus();
           return false;
       }
       }
   }
</SCRIPT>
<!--HTML登录页-->
<form action="" method="post" name="myform" onsubmit="return Checklogin();">
   用户名: <INPUT type="text" name="id" /><br>
   密&nbsp;&nbsp;码: <INPUT type="password" name="pw" />
   <input type="submit" name="submit" value="登陆">
</form> www.111cn.Net
<?
}else{
?>
<!--HTML退出页-->
   <a href='?out=login'>退出</a>
<?
}

?>

好了,这个是基于学习了,如果更好点的需要对数据进行安全过程操作,否则这样很容易被黑哦。

下面我们利用正则函数把字符转换在url形式了,当然后面推荐的php自带的函数我们也可以尝试一下哦,这里就不介绍了。

英文:

 代码如下 复制代码

function tourl($str) {
  $str = preg_replace('/[^a-zA-Z0-9]+/', '-', $str);
  $str = trim($str, '-');
  return strtolower($str);
}

包含特殊字符:

 代码如下 复制代码

function strtourl($str) {
  $str = htmlentities($str, ENT_QUOTES, "UTF-8");
  $str = preg_replace('/&([a-z]{1,2})(?:acute|lig|grave|ring|tilde|uml|cedil|caron);/i','1',$str);
  $str = html_entity_decode($str, ENT_QUOTES, "UTF-8");
  $str = preg_replace('/[^a-z0-9]+/i', '-', $str);
  return strtolower($str);
}

除了上面方法php提供了urlencode()、urldecode()、rawurlencode()、rawurldecode()函数了,利用它就可以直接转换了这个就不介绍了。

下面我来给各位朋友总结了几篇关于php如何判断是否为json数据的文章,这里整理了一下也能让你知道如何利用php判断json了,希望例子对你带来帮助。

首先要记住json_encode返回的是字符串, 而json_decode返回的是对象.

判断数据不是JSON格式:

 代码如下 复制代码

function is_not_json($str){
    return is_null(json_decode($str));
}


判断数据是合法的json数据: (PHP版本大于5.3)

 代码如下 复制代码

function is_json($string) {
 json_decode($string);
 return (json_last_error() == JSON_ERROR_NONE);
}

json_last_error()函数返回数据编解码过程中发生的错误.

注意: json编解码所操作字符串必须是UTF8的.

例子

 

 代码如下 复制代码
/**
* 解析json串
* @param type $json_str
* @return type
*/
function analyJson($json_str) {
$json_str = str_replace('\\', '', $json_str);
$out_arr = array();
preg_match('/{.*}/', $json_str, $out_arr);
if (!empty($out_arr)) {
$result = json_decode($out_arr[0], TRUE);
} else {
return FALSE;
}
return $result;
}


如果不是json则返回false

如果客户端没有禁用 Cookie,则 Cookie 在启动 Session 会话的时候扮演的是存储 Session ID 和 Session 生存期的角色。我们来手动设置 Session 的生存期:

例子,利用cooikes

 代码如下 复制代码
<?php 
    session_start(); 
    // 保存一天 
    $lifeTime = 24 * 3600; 
    setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
?>

PHP5 Session还提供了一个函数 session_set_cookie_params(); 来设置PHP5 Session的生存期的,该函数必须在 session_start() 函数调用之前调用:

 代码如下 复制代码

<?php 
    // 保存一天  www.111cn.net
    $lifeTime = 24 * 3600; 
    session_set_cookie_params($lifeTime); 
    session_start(); 
?>

php中还有一个ini_set可以设置session.gc_maxlifetime来设定Session的生存周期。例如:

 代码如下 复制代码

<?php
ini_set('session.gc_maxlifetime', 3600); //设置时间
ini_get('session.gc_maxlifetime');//得到ini中设定值

?>

下面提供一个别人封装好的函数,但是我没有测试过,仅供参考:

 代码如下 复制代码

    <?php
    function start_session($expire = 0)
    {
    if ($expire == 0) {
    $expire = ini_get('session.gc_maxlifetime');
    } else {
    ini_set('session.gc_maxlifetime', $expire);
    }
    
    if (empty($_COOKIE['PHPSESSID'])) {
    session_set_cookie_params($expire);
    session_start();
    } else {
    session_start();
    setcookie('PHPSESSID', session_id(), time() + $expire);
    }
    }
    ?>

使用方法:

加入start_session(600);//600秒以后过期。

 

tipask这款系统中虽然功能比较强大但是对于我来讲少了一个热门问题模块了,下面我就整理了一个站长的开发例子与各位分享。

有个网站是用tipask来搭建的问答系统,今天客户要求添加热门问题模块,之前都是用tipask的原生模块,比如说推荐问答、未解决问答等,看来只能自己二次开发了,上网找了下关于tipask的二次开发还真是少……于是简单翻了下tipask的代码,用我的方式增加了热门问题模块。

tipask的主要函数都在model文件夹下,找到系统核心文件base.class.php,里面有这样一个函数fromcache,用于生成函数下各种模块,例如悬赏问题、精彩推荐等,我们要做的就是在这里按照前后代码加上一条我们需要的热门问题模块。

例如在代码

 代码如下 复制代码

case 'notelist'://首页右侧公告列表

前加上我们的模块代码:

 代码如下 复制代码

case 'hotlist'://热门问题

$this->load('hot');//www.111cn.net

$cachedata = $_ENV['hot']->get_list();

break;

这里我是仿照recommend推荐模块,又新建的一个hot.class.php用于上面代码的调用,其实完全可以仿照上面的调用question.class.php文件里的list_by_condition函数,但是通过到question.class.php文件下查看list_by_condition函数只能够加入sql的where判断,而我需要的热门模块只需要改动一下order by,所以我只能新建一个hot.class.php文件自己写数据库调用了。

hot.class.php文件如下:

 代码如下 复制代码

base = $base;

$this->db = $base->db;

}

function get_list($start = 0, $limit = 7) {

$hotlist = array();

$query = $this->db->query("SELECT * FROM " . DB_TABLEPRE . "question ORDER BY views DESC LIMIT $start,$limit");//WWw.111Cn.net

while ($hot = $this->db->fetch_array($query)) {

$hot['category_name'] = $this->base->category[$hot['cid']]['name'];

$hot['format_time'] = tdate($hot['time']);

$hot['category_name'] = $this->base->category[$hot['cid']]['name'];

$hot['url'] = url('question/view/' . $hot['qid'], $hot['url']);

$hot['image'] =$hot['image']?$hot['image']:'css/default/recomend.jpg' ;

$hotlist[] = $hot;

}

return $hotlist;

}

}

?>

好了,tipask关于新建模块的二次开发就结束了,只要仿照这来就行了

 

[!--infotagslink--]

相关文章

  • Linux下PHP安装curl扩展支持https例子

    安装curl扩展支持https是非常的重要现在许多的网站都使用了https了,下面我们来看一篇关于PHP安装curl扩展支持https例子吧。 问题: 线上运行的lamp服务器,默认yu...2016-11-25
  • node.js+express留言板功能实现示例

    本文介绍基于nodejs+express+art-template的留言板功能。包含列表界面、添加界面和发送留言功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-21
  • php实现网站留言板功能

    我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的畅言留言板样式:网易跟帖样式:原理 需要在评论表添加两个主要字段 id 和 pid ,其他字段随意添加,比如文章id、回复时间、回复内容、...2015-11-08
  • php使用floor去掉小数点的例子

    floor会产生小数了如果我们不希望有小数我们是可以去除小数点的了,下面一聚教程小编来为各位介绍php使用floor去掉小数点的例子,希望对各位有帮助。 float floor (...2016-11-25
  • php+ajax制作无刷新留言板

    本文就是和大家分享一款由php结合ajax实现的无刷新留言板,先给大家看一下最后的效果图:数据库连接代码如下: <&#63;php$conn = @mysql_connect("localhost","root","root") or die ("MySql连接错误");mysql_select_db("d...2015-10-30
  • 纯Css实现下拉菜单的简单例子

    下面我们来看一篇关于纯Css实现下拉菜单的简单例子,希望这篇文章能够给各位同学带来帮助,具体步骤如下. 大家可能会经常用到hover这属性,用hover实现鼠标经过的颜...2017-01-22
  • Vue实现简单的留言板

    这篇文章主要为大家详细介绍了Vue实现简单的留言板,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-10-22
  • Go语言实现简单留言板的方法

    这篇文章主要介绍了Go语言实现简单留言板的方法,涉及数据库、模板页面元素等留言板相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-05-03
  • 快速解决PHP+MYSQL 出现乱码的解决方法

    如果你mysql查询出来乱码的话,多半是中文乱码了了,这种问题解决办法只需要统一页面与数据连接时的编码设置就可以解决,下面总结了些方法。 在mysql_connect后面加一...2016-11-25
  • php时间日期对比与日期加减例子

    在php中日期对比用得比较多了,还有一个日期加减也用到不少,下面我拿两个例子来给大家介绍在php中日期操作方法吧,希望文章能给你带来帮助 功能需求 文章发布时段操...2016-11-25
  • php更新修改excel中的内容例子

    本例子不是读取Excel或生成新的Excel,而是读取现有的Excel文件,然后修改Excel中的数据,就像修改mysql中数据一样的哦。 代码如下 ...2016-11-25
  • php正则获取文章内容中图片地址例子

    正则提取图片中的地址我们介绍过很多的相关文章了,下面再来给各位介绍一个可以提取内容中第一张图片的例子,希望对各位有帮助。 代码如下 复制代码 ...2016-11-25
  • php获取QQ头像并显示的例子

    最近看到博客留言的头像有点别扭,因为游客的头像都是同一个头像,看着不是很舒服。虽然现在绝大多数的主题集成了Gavatar头像功能,先不说gavatar被墙的问题,我自己现在都没...2016-11-25
  • javascript实现简单留言板案例

    这篇文章主要为大家详细介绍了javascript实现简单留言板案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
  • php简易留言板程序代码

    这是一个最基础的留言板程序了,但是己经有了留言板程序基本功能,很适合于php初学者用用,学习用啊,当然也可以用于企业网站也是很不错的哦。 代码如下 复...2016-11-25
  • php判断字符串是否包含另一个字符串例子

    php判断字符串是否包含另一个字符串的实现方法有许多的办法,像我们在网上一搜索可看到大量关于字符是否包含指定字符的方法,下面我把这些实用的例子整理一起与大家分享...2016-11-25
  • Windows中关于php+mysql5.7的配置

    这篇文章主要为大家详细介绍了Windows下php+mysql5.7配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WINDOWS 下 PHP+MYSQL配置下载mysql地址:https://d...2017-07-06
  • PHP date函数获取时间几个例子

    date函数是php中一个非常好用的日期获取函数了,我们可以使用它来获取指定日期或者当前日期了,下面我来简单的介绍一下date函数用法与常用用法吧。 PHP星期几获取代...2016-11-25
  • php留言板制作教程

    本文章给各位php入门者提供一篇从数据库的创建到最后的读写留言板过程全部分享给各位朋友,有需要了解的可参考参考。 创建一个数据表 代码如下 复制代码...2016-11-25
  • PHP结合Mysql数据库实现留言板功能

    这篇文章主要介绍了PHP结合Mysql数据库实现留言板功能的相关资料,需要的朋友可以参考下...2016-03-07