效果图

首先是数据库

  1. /*
  2. Navicat MySQL Data Transfer
  3.  
  4. Source Server : xm
  5. Source Server Version : 50553
  6. Source Host : localhost:3306
  7. Source Database : test
  8.  
  9. Target Server Type : MYSQL
  10. Target Server Version : 50553
  11. File Encoding : 65001
  12.  
  13. Date: 2019-01-17 15:00:23
  14. */
  15.  
  16. SET FOREIGN_KEY_CHECKS=0;
  17.  
  18. -- ----------------------------
  19. -- Table structure for test_topic
  20. -- ----------------------------
  21. DROP TABLE IF EXISTS `test_topic`;
  22. CREATE TABLE `test_topic` (
  23. `id` int(11) NOT NULL AUTO_INCREMENT,
  24. `title` varchar(255) NOT NULL,
  25. `content` text NOT NULL,
  26. `user_id` int(11) NOT NULL,
  27. `created_at` int(11) NOT NULL,
  28. `is_delete` tinyint(1) NOT NULL DEFAULT '',
  29. PRIMARY KEY (`id`)
  30. ) ENGINE=MyISAM AUTO_INCREMENT=57 DEFAULT CHARSET=utf8;
  31.  
  32. -- ----------------------------
  33. -- Records of test_topic
  34. -- ----------------------------
  35. INSERT INTO `test_topic` VALUES ('', 'php是最好的语言4', '沙发是的范德萨撒范德萨发敖德萨多第三方撒地方大SAV大V', '', '', '');
  36. INSERT INTO `test_topic` VALUES ('', 'ceshi ', '大大沙发斯蒂芬', '', '', '');
  37. INSERT INTO `test_topic` VALUES ('', '的是非得失', '第三个梵蒂冈', '', '', '');
  38. INSERT INTO `test_topic` VALUES ('', '多福多寿', '阿道夫', '', '', '');
  39. INSERT INTO `test_topic` VALUES ('', '王企鹅去吧', '无法让我', '', '', '');
  40. INSERT INTO `test_topic` VALUES ('', '我的钱多额', 'werewolf未确认翁', '', '', '');
  41. INSERT INTO `test_topic` VALUES ('', '', '', '', '', '');
  42. INSERT INTO `test_topic` VALUES ('', '', '', '', '', '');
  43. INSERT INTO `test_topic` VALUES ('', '56ttt', '232323跳跳糖', '', '', '');
  44.  
  45. -- ----------------------------
  46. -- Table structure for test_user
  47. -- ----------------------------
  48. DROP TABLE IF EXISTS `test_user`;
  49. CREATE TABLE `test_user` (
  50. `id` int(11) NOT NULL AUTO_INCREMENT,
  51. `name` varchar(100) NOT NULL COMMENT '用户名',
  52. `email` varchar(100) CHARACTER SET latin1 NOT NULL COMMENT '邮箱',
  53. `avatar` varchar(255) CHARACTER SET latin1 NOT NULL,
  54. `password` varchar(100) CHARACTER SET latin1 NOT NULL COMMENT '密码',
  55. `created_at` int(11) NOT NULL,
  56. `is_delete` tinyint(1) NOT NULL DEFAULT '',
  57. PRIMARY KEY (`id`)
  58. ) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=utf8;
  59.  
  60. -- ----------------------------
  61. -- Records of test_user
  62. -- ----------------------------
  63. INSERT INTO `test_user` VALUES ('', 'zxj', 'zzz@qq.com', 'images/avatar.jpg', '9db06bcff9248837f86d1a6bcf41c9e7', '', '');
  64. INSERT INTO `test_user` VALUES ('', '', 'haha@haha.com', 'images/avatar.jpg', '9db06bcff9248837f86d1a6bcf41c9e7', '', '');
  65. INSERT INTO `test_user` VALUES ('', '', 'zhaoxiaojuan@test.com', 'images/avatar.jpg', '9db06bcff9248837f86d1a6bcf41c9e7', '', '');
  66. INSERT INTO `test_user` VALUES ('', '', 'zhaoxiaojuan@test.com', 'images/avatar.jpg', '9db06bcff9248837f86d1a6bcf41c9e7', '', '');
  67. INSERT INTO `test_user` VALUES ('', '', 'zhaoxiaojuan@test.com', 'images/avatar.jpg', '9db06bcff9248837f86d1a6bcf41c9e7', '', '');
  68. INSERT INTO `test_user` VALUES ('', 'root', 'zhaoxiaojuan@test.com', 'images/avatar.jpg', '9db06bcff9248837f86d1a6bcf41c9e7', '', '');
  69. INSERT INTO `test_user` VALUES ('', 'root', 'zhaoxiaojuan@test.com', 'images/avatar.jpg', '9db06bcff9248837f86d1a6bcf41c9e7', '', '');

模型层

application/common/model/Base.php

  1. <?php
  2. namespace app\common\model;
  3. use think\Model;
  4. class Base extends Model{
  5.  
  6. protected $autoWriteTimestamp = true;
  7. protected $createTime='created_at';
  8. /**
  9. * 新增逻辑
  10. * @auth cyy
  11. * @param array $data [description]
  12. * @return int
  13. */
  14. public function add($data = []) {
  15. if(empty($data) || !is_array($data)) {
  16. return false;
  17. }
  18.  
  19. $this->allowField(true)->save($data);
  20. return $this->id;
  21. }
  22. }

application/common/model/Topic.php

  1. <?php
  2. namespace app\common\model;
  3. class Topic extends Base
  4. {
  5. //查询属于哪个用户
  6. public function user()
  7. {
  8. // 连接topic表中的user_id
  9. return $this->hasOne('User','id','user_id');
  10. }
  11.  
  12. //获取所有留言
  13. public static function getTopics()
  14. {
  15. $topics = model("Topic")
  16. ->order("id", "desc")
  17. ->select();
  18. return $topics;
  19. }
  20.  
  21. //获取某条留言
  22. public static function getTopic($id)
  23. {
  24. $topic = self::find(['id' => $id]);
  25. //print_r(model("Topic")->getLastSql());die();
  26. return $topic;
  27. }
  28. }

application/common/model/User.php

  1. <?php
  2. namespace app\common\model;
  3. use think\Model;
  4.  
  5. class User extends Base{
  6. //查询账号
  7. public function isUser($condition) {
  8. return $this->where($condition)
  9. ->limit(1)
  10. ->select();
  11. }
  12. }

控制器层

application/index/controller/Base.php

  1. <?php
  2. namespace app\index\controller;
  3. use think\Controller;
  4. class Base extends Controller {
  5.  
  6. /**
  7. * 空操作
  8. * @auth singwa
  9. * @param [type] $name [description]
  10. * @return [type] [description]
  11. */
  12. public function _empty($name) {
  13. return $name;
  14. }
  15. }

application/index/controller/Index.php

  1. <?php
  2. namespace app\index\controller;
  3. use think\Db;
  4. use app\common\model\User;
  5. use app\common\model\Topic as TopicModel;
  6. class Index extends Base
  7. {
  8. public function index()
  9. {
  10. //获取session
  11. $name=session('name');
  12. //获取留言列表
  13. $topic=model('Topic');
  14. $topics=$topic->getTopics();
  15. //输出到模板
  16.  
  17. echo $this->fetch('',[
  18. 'name'=>$name,
  19. 'topics'=>$topics,
  20. ]);
  21. }
  22.  
  23. //注册
  24. public function register()
  25. {
  26. echo $this->fetch();
  27. }
  28.  
  29. //添加账号
  30. public function add(){
  31. //如果有数据提交
  32. if(!empty(input('param.'))){
  33. //接收数据
  34. $userdata=input('param.');
  35. $name=$userdata['username'];
  36. $email=$userdata['email'];
  37. $password=$userdata['password'];
  38. $password_confirmation=$userdata['password_confirmation'];
  39. //验证确认密码是否正确
  40. if($password_confirmation!=$password){
  41. $this->error('两次密码输入不一致','index/register');
  42. }
  43. $data=[
  44. 'name'=>$name,
  45. 'email'=>$email,
  46. 'password'=>$password,
  47. ];
  48. //存储数据
  49. $user=model('User');
  50. $id=$user->add($data);
  51. $this->success('注册成功','index/login');
  52. }
  53. }
  54.  
  55. //登录
  56. public function login()
  57. {
  58. //检测是否登录
  59. if(session('name')){
  60. return $this->error('您已经登录',url('index/index'));
  61. }
  62. echo $this->fetch();
  63. //获取session
  64. $name=session('name');
  65. //输出到头部模板
  66. echo $this->fetch('common/header',[
  67. 'name'=>$name,
  68. ]);
  69. }
  70.  
  71. //登录检测
  72. public function isUser(){
  73. //如果有数据提交
  74. if(!empty(input('param.'))){
  75. //接收数据
  76. $userdata=input('param.');
  77. $login=$userdata['login'];
  78. $password=$userdata['password'];
  79. //查询条件
  80. $condition1=[
  81. 'name'=>$login,
  82. 'password'=>$password,
  83. ];
  84. $condition2=[
  85. 'email'=>$login,
  86. 'password'=>$password,
  87. ];
  88. //查询
  89. $user=model('User');
  90. $login1=$user->isUser($condition1);
  91. $login2=$user->isUser($condition2);
  92. if(!empty($login1)){
  93. //姓名登录
  94. session('id',$login1[0]->id);
  95. session('name',$login1[0]->name);
  96. $this->success('登录成功','index/index');
  97. }else if(!empty($login2)){
  98. //邮箱登录
  99. session('id',$login2[0]->id);
  100. session('name',$login2[0]->name);
  101. $this->success('登录成功','index/index');
  102. }else{
  103. $this->error('登录失败','index/login');
  104. }
  105. }
  106. }
  107.  
  108. //退出
  109. public function logout(){
  110. session('name',null);
  111. $this->redirect('index/index');
  112. }
  113. }

application/index/controller/Topic.php

  1. <?php
  2. namespace app\index\controller;
  3. use think\Db;
  4. use app\common\model\Topic as TopicModel;
  5. class Topic extends Base
  6. {
  7. public function _initialize(){
  8. //检测是否登录
  9. if(!session('name')){
  10. $this->error('您没有登录',url('index/login'));
  11. }
  12. }
  13. //发帖页面
  14. public function new_topic(){
  15. echo $this->fetch();
  16. //获取session
  17. $name=session('name');
  18. //输出到头部模板
  19. echo $this->fetch('common/header',[
  20. 'name'=>$name,
  21. ]);
  22. }
  23.  
  24. //添加新帖
  25. public function add_topic(){
  26. //如果有数据提交
  27. if(!empty(input('param.'))){
  28. //接收数据
  29. $topicdata=input('param.');
  30. $title=$topicdata['title'];
  31. $content=$topicdata['content'];
  32. $user_id=session('id');
  33.  
  34. $data=[
  35. 'title'=>$title,
  36. 'content'=>$content,
  37. 'user_id'=>$user_id,
  38. ];
  39. //存储数据
  40. $topic=model('Topic');
  41. $id=$topic->add($data);
  42. $this->success('添加成功','index/index');
  43. }
  44. }
  45.  
  46. //编辑新帖页面
  47. public function detail_topic(){
  48. //接收id
  49. $id=input('param.id');
  50. //查询这条帖子的发布者
  51. $condition=[
  52. 'id'=>$id,
  53. ];
  54. $user=model('Topic')->where($condition)->find();
  55. $user_id=$user->user_id;
  56. //判断是否有权限编辑帖子
  57. if(session('id') != $user_id){
  58. $this->error('您没有权限修改!');
  59. }
  60. $topic=model('Topic')->getTopic($id);
  61. echo $this->fetch('',[
  62. 'topic'=>$topic,
  63. ]);
  64. //获取session
  65. $name=session('name');
  66. //输出到头部模板
  67. echo $this->fetch('common/header',[
  68. 'name'=>$name,
  69. ]);
  70. }
  71.  
  72. //更新帖子数据
  73. public function update_topic(){
  74. //如果有数据提交
  75. if(!empty(input('param.'))){
  76. //接收数据
  77. $topicdata=input('param.');
  78. $title=$topicdata['title'];
  79. $content=$topicdata['content'];
  80. $id=$topicdata['id'];
  81.  
  82. $data=[
  83. 'title'=>$title,
  84. 'content'=>$content,
  85. ];
  86. $condition=[
  87. 'id'=>$id,
  88. ];
  89. //存储数据
  90. $res=model('Topic')->where($condition)->update($data);
  91. if($res){
  92. $this->success('编辑成功','index/index');
  93. }else{
  94. $this->error('编辑失败');
  95. }
  96.  
  97. }
  98. }
  99. }

视图层

application/index/view/common/header.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  6. <title>test论坛</title>
  7. <link rel="stylesheet" href="<?=STATIC_URL?>css/all-df86af5803.css">
  8. <script src="<?=STATIC_URL?>js/all-17476e6cc3.js"></script>
  9. </head>
  10. <body class="forum" data-page="forum">
  11. <div class="header">
  12. <nav class="navbar navbar-inverse navbar-fixed-top navbar-default">
  13. <div class="container">
  14. <div class="navbar-header" id="navbar-header">
  15. <a href="<?=url('index/index');?>" class="navbar-brand"><img src="<?=STATIC_URL;?>images/logo.png"></a>
  16. </div>
  17. <div id="main-nav-menu">
  18. <ul class="nav navbar-nav">
  19. <li class="active">
  20. <a href="<?=url('index/index');?>">
  21. <i class="fa fa-home"></i>
  22. <span class="hidden-xs hidden-sm">首页</span>
  23. </a>
  24. </li>
  25. </ul>
  26. </div>
  27. <ul class="nav navbar-nav navbar-right">
  28. <?php if(!isset($name)): ?>
  29. <li><a href="<?=url('index/register');?>" id="signup-btn">注册</a></li>
  30. <li><a href="<?=url('index/login');?>" id="login-btn">登录</a></li>
  31. <?php else: ?>
  32. <li><a href="<?=url('topic/new_topic');?>">发帖</a></li>
  33. <li>
  34. <ul class="nav user-bar navbar-nav navbar-right">
  35. <li class="dropdown">
  36. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><?php echo $name; ?>
  37. <span class="caret"></span></a>
  38. <button class="navbar-toggle" type="button" data-toggle="dropdown" role="button" aria-expanded="false">
  39. <span class="sr-only">Toggle</span>
  40. <i class="fa fa-reorder"></i>
  41. </button>
  42. <ul class="dropdown-menu" role="menu">
  43.  
  44. <li class='divider'></li>
  45. <li>
  46. <a href="<?=url('index/logout');?>" onclick="return confirm('你确定要退出吗?')"><i class="fa fa-sign-out"></i>退出</a>
  47. </li>
  48. </ul>
  49. </li>
  50. </ul>
  51. </li>
  52. <?php endif; ?>
  53. </ul>
  54. </div>
  55. </nav>
  56. </div>

application/index/view/common/footer.html

  1. <footer class="footer">
  2. <div class="container">
  3. <div class="copyright">
  4. <blockquote class="pull-left">
  5. <p>test论坛</p>
  6. <p>Copyright &copy; 2015-2016 <a href="#">test</a> 1.0.0-rc2 <span class="pipe">|</span><span class="pipe">|</span></p>
  7. </blockquote>
  8. </div>
  9. <div class="pull-right hidden-sm hidden-xs">
  10. <p>
  11. <a href="#"target="_blank">
  12. <img src="<?=STATIC_URL;?>images/test-logo.png" border="0" height="40" data-toggle="tooltip" data-placement="top" title="Powered by test"/>
  13. </a>
  14. </p>
  15. </div>
  16. </div>
  17. </footer>
  18. </body>
  19. </html>

application/index/view/common/topic_list.html

  1. <div class="col-md-9 threads-index main-col">
  2. <div class="panel panel-default">
  3. <div class="panel-heading">
  4. <div class="pull-left hidden-sm hidden-xs">
  5. <i class="fa fa-list"></i> 首页
  6. </div>
  7. <div class="clearfix"></div>
  8. </div>
  9. <div class="panel-body remove-padding-horizontal">
  10. <?php foreach($topics as $vo): ?>
  11. <ul class="list-group row thread-list">
  12. <li class="list-group-item media " style="margin-top: 0px;">
  13. <div class="avatar pull-left">
  14. <a href="<?=url('topic/detail_topic');?>?id=<?php echo $vo['id']; ?>">
  15. <img class="media-object img-thumbnail avatar-48" alt="imooc"
  16. src="<?=STATIC_URL;?><?php echo $vo['user']['avatar']; ?>"/>
  17. </a>
  18. </div>
  19. <div class="infos">
  20. <div class="media-heading">
  21. <i class=""><?php echo $vo['title']; ?></i>
  22. <a href="<?=url('topic/detail_topic');?>?id=<?php echo $vo['id']; ?>">
  23. </div>
  24. <div class="media-body meta">
  25. <a href="<?=url('topic/detail_topic');?>?id=<?php echo $vo['id']; ?>">
  26. <span><?php echo $vo['content']; ?></span>
  27. </a>
  28.  
  29. <span class="timeago" data-toggle="tooltip" data-placement="top"
  30. title="">
  31. </span>
  32. </div>
  33. </div>
  34. </li>
  35. </ul>
  36. <?php endforeach; ?>
  37. </div>
  38. </div>
  39. </div>
  40. ALTER TABLE test_user ALTER avatar SET DEFAULT "images/avatar.jpg" ;

application/index/view/index/index.html

  1. <?php require(APP_PATH.'/index/view/common/header.html');?>
  2. <div id="main" class="main-container container">
  3. <!-- 首页通栏(4个推荐位) -->
  4. <?php require(APP_PATH.'/index/view/common/topic_list.html');?>
  5. </div>
  6. <div class="clearfix"></div>
  7. <?php require(APP_PATH.'/index/view/common/footer.html');?>

application/index/view/index/login.html

  1. <?php require(APP_PATH.'/index/view/common/header.html');?>
  2. <div id="main" class="main-container container">
  3. <div class="container-fluid">
  4. <div class="row">
  5. <div class="col-md-5 col-md-offset-2">
  6. <div class="panel panel-default">
  7. <div class="panel-heading">登录</div>
  8. <div class="panel-body">
  9. <form role="form" method="POST" action="<?=url('index/isUser');?>">
  10. <input type="hidden" name="_token" value="BAnCy9yzQxp30BiIkeU58OMjR5uWeDM9dCSMNwKH">
  11. <div class="form-group">
  12. <input type="login" class="form-control" name="login" value="" placeholder="用户名或邮箱地址">
  13. </div>
  14. <div class="form-group">
  15. <input type="password" class="form-control" name="password" placeholder="密码">
  16. </div>
  17. <div class="form-group">
  18. <input type="submit" name="commit" value="登录" class="btn btn-primary btn-lg btn-block">
  19. </div>
  20. </form>
  21. </div>
  22. <div class="panel-footer">
  23. <a href="<?=url('index/register');?>">注册</a>
  24. <!--<a href="/password/email">忘记密码?</a>-->
  25. </div>
  26. </div>
  27. </div>
  28. <div class="col-md-3">
  29. <div class="panel panel-default">
  30. <div class="panel-heading">登陆提示</div>
  31. <ul class="list-group">
  32. <li class="list-group-item">
  33. 如果您忘记了密码,请联系管理员。
  34. </li>
  35. </ul>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40.  
  41. </div>
  42. <?php require(APP_PATH.'/index/view/common/footer.html');?>

application/index/view/index/register.html

  1. <?php require(APP_PATH.'/index/view/common/header.html');?>
  2. <div id="main" class="main-container container">
  3. <div class="container-fluid">
  4. <div class="row">
  5. <div class="col-md-6 col-md-offset-3">
  6. <div class="panel panel-default">
  7. <div class="panel-heading">注册</div>
  8. <div class="panel-body">
  9. <form role="form" method="POST" action="<?=url('index/add');?>">
  10. <div class="form-group">
  11. <input type="text" class="form-control" name="username" value="" placeholder="用户名">
  12. </div>
  13. <div class="form-group">
  14. <input type="text" class="form-control" name="email" value="" placeholder="邮箱地址">
  15. </div>
  16. <div class="form-group">
  17. <input type="password" class="form-control" name="password" placeholder="密码">
  18. </div>
  19. <div class="form-group">
  20. <input type="password" class="form-control" name="password_confirmation" placeholder="确认密码">
  21. </div>
  22. <div class="form-group"></div>
  23. <div class="form-group">
  24. <button type="submit" class="btn btn-primary">
  25. 注册
  26. </button>
  27. <a href="/" class="btn btn-default">取消</a>
  28. </div>
  29. </form>
  30. </div>
  31. <div class="panel-footer">
  32. 已注册或使用社交账号登录,请点击 <a href="<?=url('index/login');?>">这里</a> 进行登录。
  33. </div>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. </div>
  39. <?php require(APP_PATH.'/index/view/common/footer.html');?>

application/index/view/topic/detail_topic.html

  1. <?php require(APP_PATH.'/index/view/common/header.html');?>
  2. <div id="main" class="main-container container">
  3. <div class="row max-width">
  4. <div class="col-xs-12">
  5. <ul class="breadcrumb">
  6. <li>
  7. <a href="index.html">首页</a>
  8. </li>
  9. <li>
  10. <strong>发表新帖</strong>
  11. </li>
  12. </ul>
  13. </div>
  14. </div>
  15. <div class="thread_create">
  16. <div class="col-md-9 main-col">
  17. <div class="panel panel-default corner-radius">
  18. <div class="panel-heading">发表新帖</div>
  19. <div class="panel-body">
  20. <div class="reply-box form box-block">
  21. <form method="POST" action="<?=url('topic/update_topic');?>" accept-charset="UTF-8" id="thread_create_form" class="create_form">
  22. <div class="form-group">
  23. <input class="form-control" id="thread_title" placeholder="标题" name="title" type="text" value="<?= $topic->title?>">
  24. <input class="form-control" id="id" placeholder="标题" name="id" type="hidden" value="<?= $topic->id?>">
  25. </div>
  26.  
  27. <!-- editor start -->
  28. <div class="editor-toolbar">
  29. <ul class="nav nav-pills" style="clear:none;">
  30. <li class="edit active"><a href="#">帖子内容:</a></li>
  31. </ul>
  32. </div>
  33. <!-- end -->
  34. <div class="form-group">
  35. <textarea class="post-editor form-control" rows="15"
  36. style="overflow:hidden" id="body_field" placeholder="请撰写内容" name="content" cols="50" ><?= $topic->content ?></textarea>
  37. </div>
  38.  
  39. <div class="form-group status-post-submit">
  40. <input class="btn btn-primary col-xs-2" id="" type="submit" value="发布">
  41. </div>
  42.  
  43. </form>
  44. </div>
  45. </div>
  46. </div>
  47.  
  48. </div>
  49.  
  50. <div class="col-md-3 side-bar">
  51.  
  52. <div class="panel panel-default corner-radius help-box">
  53. <div class="panel-heading text-center">
  54. <h3 class="panel-title">发帖提示</h3>
  55. </div>
  56. <div class="panel-body">
  57. <ul class="list">
  58. <li>主题标题
  59. <p>请在标题中描述内容要点。</p>
  60. </li>
  61. <li>选择节点
  62. <p>请为你的主题选择一个节点。恰当的归类会让你发布的信息更有用。</p>
  63. </li>
  64. <li>正文
  65. <p>imooc 支持 <span style="font-family: Consolas, 'Panic Sans', mono"><a href="https://help.github.com/articles/github-flavored-markdown" target="_blank">GitHub Flavored Markdown</a></span> 文本标记语法。你可以在页面下方实时预览正文的实际渲染效果。</p>
  66. </li>
  67. </ul>
  68. </div>
  69. </div>
  70.  
  71. <div class="panel panel-default corner-radius help-box">
  72. <div class="panel-heading text-center">
  73. <h3 class="panel-title">社区指导原则</h3>
  74. </div>
  75. <div class="panel-body">
  76. <ul class="list">
  77. <li>尊重原创
  78. <p>请不要在 imooc 发布任何盗版链接,包括软件、音乐、电影等。</p>
  79. </li>
  80. <li>友好互助
  81. <p>保持对陌生人的友善。用知识去帮助别人。</p>
  82. </li>
  83. </ul>
  84. </div>
  85. </div>
  86.  
  87. </div>
  88. </div>
  89.  
  90. </div>
  91. <?php require(APP_PATH.'/index/view/common/footer.html');?>

application/index/view/topic/new_topic.html

  1. <?php require(APP_PATH.'/index/view/common/header.html');?>
  2. <div id="main" class="main-container container">
  3. <div class="row max-width">
  4. <div class="col-xs-12">
  5. <ul class="breadcrumb">
  6. <li>
  7. <a href="index.html">首页</a>
  8. </li>
  9. <li>
  10. <strong>发表新帖</strong>
  11. </li>
  12. </ul>
  13. </div>
  14. </div>
  15. <div class="thread_create">
  16. <div class="col-md-9 main-col">
  17. <div class="panel panel-default corner-radius">
  18. <div class="panel-heading">发表新帖</div>
  19. <div class="panel-body">
  20. <div class="reply-box form box-block">
  21. <form method="POST" action="<?=url('topic/add_topic');?>" accept-charset="UTF-8" id="thread_create_form" class="create_form">
  22. <div class="form-group">
  23. <input class="form-control" id="thread_title" placeholder="标题" name="title" type="text">
  24. </div>
  25. <!-- editor start -->
  26. <div class="editor-toolbar">
  27. <ul class="nav nav-pills" style="clear:none;">
  28. <li class="edit active"><a href="#">帖子内容</a></li>
  29. </ul>
  30. </div>
  31. <!-- end -->
  32. <div class="form-group">
  33. <textarea class="post-editor form-control" rows="15"
  34. style="overflow:hidden" id="body_field" placeholder="请撰写内容" name="content" cols="50"></textarea>
  35. </div>
  36. <div class="form-group status-post-submit">
  37. <input class="btn btn-primary col-xs-2" id="" type="submit" value="发布">
  38. </div>
  39.  
  40. </form>
  41. </div>
  42. </div>
  43. </div>
  44.  
  45. </div>
  46.  
  47. <div class="col-md-3 side-bar">
  48.  
  49. <div class="panel panel-default corner-radius help-box">
  50. <div class="panel-heading text-center">
  51. <h3 class="panel-title">发帖提示</h3>
  52. </div>
  53. <div class="panel-body">
  54. <ul class="list">
  55. <li>主题标题
  56. <p>请在标题中描述内容要点。</p>
  57. </li>
  58. <li>选择节点
  59. <p>请为你的主题选择一个节点。恰当的归类会让你发布的信息更有用。</p>
  60. </li>
  61. <li>正文
  62. <p>imooc 支持 <span style="font-family: Consolas, 'Panic Sans', mono"><a href="https://help.github.com/articles/github-flavored-markdown" target="_blank">GitHub Flavored Markdown</a></span> 文本标记语法。你可以在页面下方实时预览正文的实际渲染效果。</p>
  63. </li>
  64. </ul>
  65. </div>
  66. </div>
  67.  
  68. <div class="panel panel-default corner-radius help-box">
  69. <div class="panel-heading text-center">
  70. <h3 class="panel-title">社区指导原则</h3>
  71. </div>
  72. <div class="panel-body">
  73. <ul class="list">
  74. <li>尊重原创
  75. <p>请不要在 imooc 发布任何盗版链接,包括软件、音乐、电影等。</p>
  76. </li>
  77. <li>友好互助
  78. <p>保持对陌生人的友善。用知识去帮助别人。</p>
  79. </li>
  80. </ul>
  81. </div>
  82. </div>
  83.  
  84. </div>
  85. </div>
  86.  
  87. </div>
  88. <?php require(APP_PATH.'/index/view/common/footer.html');?>

thinkphp论坛项目开发的更多相关文章

  1. 《实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)》

    <实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)> 基本信息 作者: 徐康明    辛洪郁 出版社:电子工业出版社 ISBN:9787121221378 上架时间:2014 ...

  2. 简历生成平台项目开发-STEP2问卷调查结果统计分析

    根据之前设计的调查问卷,截止目前为止,一共收到64份问卷结果.一共16题,分别从基本信息.是否对简历制作有需要.对产品期望的特点和建议采纳四个方面设计问题.下面逐题分析问卷结果: 1.您的性别 可以看 ...

  3. 使用Yeoman快速启动AngularJS项目开发

    本博客停止更新,请访问新个人博客:owenchen.net 前言 博客迁移到了BAE上,http://owenchen.net/,以后的文章会首发在自己的博客上,随后在博客园发布. 很久没有写文章了, ...

  4. 用thinkphp进行微信开发的整体设计思考

    用thinkphp进行微信开发的整体设计思考 http://www.2cto.com/weixin/201504/388423.html 2015-04-09      0个评论       作者:明 ...

  5. ASP.NET Core 开源论坛项目 NETCoreBBS

    ASP.NET Core 轻量化开源论坛项目,ASP.NET Core Light forum NETCoreBBS 采用 ASP.NET Core + EF Core Sqlite + Bootst ...

  6. Android项目开发填坑记-so文件引发的攻坚战

    故事的最初 我负责的项目A要求有播放在线视频的功能,当时从别人的聊天记录的一瞥中发现百度有相关的SDK,当时找到的是Baidu-T5Player-SDK-Android-1.4s,项目中Demo的so ...

  7. php(二)使用thinkphp搭建项目

    1.创建项目根目录,配置虚拟主机 1.1.创建项目根目录phpDemo01,将thinkphp_3.2.3_full.zip压缩包中ThinkPHP文件夹复制到项目根目录phpDemo01中. 1.2 ...

  8. 四:DRF项目开发的准备

    一: 虚拟环境virtualenv 如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就 ...

  9. 001_ASP.NET MVC 实用教程 论坛项目 北盟网校 原创视频教程

    下载地址 http://pan.baidu.com/s/1kUJalbp 在线观看地址 http://www.bamn.cn/course/lesson/1 ASP.NET MVC 使用课程,是201 ...

随机推荐

  1. BZOJ 4556(后缀数组+主席树求前驱后继+二分||后缀数组+二分+可持久化线段树)

    换markdown写了.. 题意: 给你一个1e5的字符串,1e5组询问,求\([l_1,r_1]\)的所有子串与\([l_2,r_2]\)的lcp 思路: 首先可以发现答案是具有单调性的,我们考虑二 ...

  2. Codeforces 1062B Math(质因数分解)

    题意: 给一个数n,可以将它乘任意数,或者开方,问你能得到的最小数是多少,并给出最小操作次数 思路: 能将这个数变小的操作只能是开方,所以构成的最小数一定是 $n = p_1*p_2*p_3*\dot ...

  3. 威联通(NAS)搭建个人图床

    名词解释: 图床:一般是指储存图片的服务器,有国内和国外之分.国外的图床由于有空间距离等因素决定访问速度很慢影响图片显示速度.国内也分为单线空间.多线空间和cdn加速三种. 更详细的内容,请左转查看百 ...

  4. 【TensorFlow】TensorFlow基础 —— 模型的保存读取与可视化方法总结

    TensorFlow提供了一个用于保存模型的工具以及一个可视化方案 这里使用的TensorFlow为1.3.0版本 一.保存模型数据 模型数据以文件的形式保存到本地: 使用神经网络模型进行大数据量和复 ...

  5. [Effective Java 读书笔记] 第三章类和接口 第十八--十九条

    十八条 接口优于抽象类 接口的特点: 1.一个类可以实现多个接口,不能继承多个类(抽象类) 2.接口不能有具体的方法实现,只定义标准类型 骨架类: 即实现一个abstract类来实现接口,提供给其他类 ...

  6. k8s pod时区更改

    一.问题所在 在K8S里启动一个容器,该容器的设置的时区是UTC0,但是对于很多客户而言,其主机环境并不在UTC0.例如中国客户在UTC8.如果不把容器的时区和主机主机设置为一致,则在查找日志等时候将 ...

  7. Python 调用 Shell命令

    python程序中调用shell命令,是件很酷且常用的事情今天来总结一下   1.使用os模块 的  system         此函数会启动子进程,在子进程中执行command,并返回comman ...

  8. 【2020】DBus,一个更能满足企业需求的大数据采集平台

    功能远超Sqoop.DataX.Flume.Logatash.Filebeat等采集工具 注:由于文章篇幅有限,完整文档可扫免费获取 深知其他组件的局限性,才能彰显DBus的优越感 当前有很多数据采集 ...

  9. MySQL常用关键词

    MySQL常用关键词 1.  显示表departments的结构:DESC DESC departments; 2. 显示出表employees中的全部job_id(不能重复):DISTINCT SE ...

  10. laravel web server设置远程访问及原理

    laravel中可以用命令行php artisan serve 启动web server,并通过localhost:8000访问项目. 但是因为开发环境为虚拟机部署项目,然后通过端口访问,所以开启服务 ...