匿名留言板

2 篇文章 0 订阅
订阅专栏
2 篇文章 0 订阅
订阅专栏
1 篇文章 0 订阅
订阅专栏

初衷

1.网上有很多类似的成品 比如 告白岛
2.提升自己 没写过前后端交互
3.有点闲

技术

前端

HTML
JavaScript

后端

Python
Flask框架

数据库

MySQL

效果截图

主页面

在这里插入图片描述

查询页面

在这里插入图片描述

添加页面

在这里插入图片描述

代码

app.py

import sql_add_find

from flask import *

app = Flask(__name__)

sql = sql_add_find.mess_sql()


@app.route('/')
def hello_world():  # put application's code here
    sql.addvisit(request.remote_addr)
    return render_template("main.html")

#添加
@app.route('/add', methods=["POST"])
def add():
    name = str(request.form.get("name"))
    word = str(request.form.get("word"))
    return {"message": sql.add(name, word)}

#查询
@app.route('/find', methods=["POST"])
def find():
    name = str(request.form.get("name"))
    l = sql.find(name)
    res = "<h1>{0}</h1>".format(name)
    res += '''<meta name="viewport"
    content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />'''

    m = 'OK'
    if l == 'e':
        m = "e"
        return {"message": m, "res": res}
    for i in l:
        res += "<br> <h3>{0}</h3> <h5>{1}</h5>".format(i[0], i[1])
    res += "<br> <p>共{0}条</p>".format(len(l))
    res += "<input type=\"button\" value=\"返回\" οnclick=\"location.reload();\">"
    return {"message": m, "res": res}

#关于
@app.route('/help',methods=['POST'])
def helpfun():
    return render_template('help.html')

#运行
app.run(host='0.0.0.0',
        port=80,
        threaded=True
        )

sql_add_find/init.py

import pymysql
import datetime


class mess_sql:
    def __init__(self):
        self.word_max = 500
        self.connect = pymysql.connect(host='',#数据库地址
                                       user='root',#用户名
                                       password='',#密码
                                       db='Message',
                                       charset='gbk') 
        self.cur = self.connect.cursor()

    '''
        对一个人名添加一句话
    input:
        name:名字
        word:话
    output:
        str结果
           'word too long':超过了长度
           or 'e':连接服务器出错
           or 'OK':成功
    '''

    def add(self, name, word):
        if len(word) > self.word_max:
            return 'word too long'
        try:
            a = eval(name)
            return 'is num'
        except:
            pass
        try:
            find_name_in_table = "select name from name_list where name='{0}'".format(name)
            print("find_name_in_table",find_name_in_table)
            self.cur.execute(find_name_in_table)
            res = self.cur.fetchall()
            if len(res) == 0:
                add_name_to_table = "CREATE TABLE Message.{0}  (\
          `                  time` datetime(0) NULL,\
          `                  word` varchar({1}) NULL\
                             );".format(name, self.word_max)
                self.cur.execute(add_name_to_table)
                self.connect.commit()

                add_name_to_list = "insert into name_list values ('{0}')".format(name)
                self.cur.execute(add_name_to_list)
                self.connect.commit()
            addtext = "insert into {0} values ('{1}','{2}');".format(name, datetime.datetime.now(), word)
            print('addtext',addtext)
            self.cur.execute(addtext)
            self.connect.commit()
            return 'OK'
        except Exception as e:
            print(e)
            return 'e'

    '''
        查找指定人名
    input:
        name:人名
    output:
        list:记录
        or e:异常
    '''

    def find(self, name):
        res = []
        try:
            find_name_in_table = "select name from name_list where name='{0}'".format(name)
            self.cur.execute(find_name_in_table)
            res = self.cur.fetchall()

            if len(res) == 0:
                return []

            find_sql_str = "select * from {0}".format(name)
            self.cur.execute(find_sql_str)
            res = self.cur.fetchall()
            #for i in res:
            #    print(i[0], i[1])
            return res
        except Exception as e:
            print(e)
            return 'e'

    def addvisit(self,ip):
        add_visit_fun = "insert into visit values ('{0}','{1}')".format(datetime.datetime.now(),ip)
        try:
            self.cur.execute(add_visit_fun)
            self.connect.commit()
            return 'OK'
        except Exception as e:
            return e

templates/help.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>匿名留言馆</title>
</head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />

<body>
<ul>
<li>
  <h1>为什么写</h1>
  <ul>
    <li>
      <h3> 网上有很多类似的成品 比如 <a href="http://app.szxingzhihuo.com/island.html"
                        target="_blank" rel="noopener noreferrer">告白岛</a> </h3>
    </li>
    <li>
      <h3>提升自己 没写过前后端交互</h3>
    </li>
    <li>
      <h3>有点闲(跑)</h3>
    </li>
  </ul>
</li>
<li>
  <h1>用了什么</h1>
  <ul>
    <li>
      <h3>前端:html js</h3>
      <a href="https://www.runoob.com/html/html-tutorial.html">html 学习链接</a>
      <br>
    <a href="https://www.runoob.com/js/js-tutorial.html"> js 学习链接 </a> </li>
    <li>
      <h3>后端:python flask框架</h3>
      <a href="https://www.runoob.com/python3/python3-tutorial.html">Python 学习链接</a> </li>
    <li>
      <h3>数据库:MySQL</h3>
      <a href="https://www.runoob.com/mysql/mysql-tutorial.html">MySQL 学习链接</a> </li>
  </ul>
</li>
<li>
  <h1>了解更多</h1>
  <ul>
    <li>
      <h3> <a href="https://blog.csdn.net/m0_72416569/article/details/125827629">我在 CSDN 的一篇文章</a> </h3>
    </li>
    <li>
      <h3> 微信号 zjxyyds0307<img src="img\vx.jpg" alt="二维码加载失败" width="500" height="500"/></h3>
    </li>
  </ul>
</li>
</ul>
<input type="button" value="返回" onclick="location.reload();">
</body>
</html>

templates/main.html

<html>
<meta name="viewport"
    content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />
<title>
    匿名留言岛
</title>
<!--引入jQuery包用于使用ajax-->
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

姓名<input type="text" id="name" name="name" placeholder="姓名">
<br>要说的话<br>
<textarea style="width:300px;height:100px;" name="word" id="word" placeholder="要说的话"></textarea>
<br>
<!--创建button按钮,点击则激发submit()事件-->
<button onclick="add();">提交一份留言</button>
<button onclick="find();">查询留言</button>
<button onclick="help()">关于</button>

<script>
    function help() {  
        $.ajax({
            url : "help",
            type : "POST",
            success: function (result) {
                document.write(result)
            }
        });
    }
    function cansend(com){
        if($("#name").val().length==0){
            alert("名字不能留空");
            return false;
        }
        if($("#name").val().length >10){
            alert("名字太长");
            return false;
        }
        if(com==0){
            if($("#word").val().length >500){
                alert("要说的话太长");
                return false;
            }
            if($("#word").val().length==0){
                alert("要说的话不能留空");
                return false;
            }
        }
        return true;
    }
    function add(){
        if(!cansend(0)){
            return;
        }
        $.ajax({
            url: "add",
            type: "POST",
            data: { "name": $("#name").val() , "word": $("#word").val()},
            success: function (result) {
                if(result.message == 'is num'){
                    alert("名称只能为数字加字母或者字母 插入失败");
                }else if (result.message != "OK") {
                    alert("添加失败 请检查用户名或者网络");
                } else {
                    alert("添加成功");
                    
                    document.getElementById("word").value = "";
                }
            }
        });
    }
    function find() {
        if(!cansend(1)){
            return;
        }
        $.ajax({
            url: "find",
            type: "POST",
            data: { "name": $("#name").val() },
            success: function (result) {
                if (result.message != "OK") {
                    alert("查询失败");
                } else {
                    document.write(result.res);
                }
            }
        });
    }

</script>

</html>

项目结构

E:.
│  app.py
│
├─.idea
│  │  .gitignore
│  │  Message Board.iml
│  │  misc.xml
│  │  modules.xml
│  │  sqldialects.xml
│  │  workspace.xml
│  │
│  └─inspectionProfiles
│          profiles_settings.xml
│
├─img
│      vx.jpg
│
├─sql_add_find
│  │  __init__.py
│  │
│  └─__pycache__
│          __init__.cpython-38.pyc
│
├─static
├─templates
│  │  help.html
│  │  main.html
│  │  vx.jpg
│  │
│  └─img
│          vx.jpg
│
└─__pycache__
        app.cpython-38.pyc

数据库结构

namelist 用于记录添加过的名字

在这里插入图片描述

visit 存储访问记录

在这里插入图片描述

zjx表 存储了给zjx的留言和时间

在这里插入图片描述

不足

微信二维码加载不出

我在静态网页里可以打开它 但是服务器不可以

不够美观

没有用到什么css 界面有点丑

前端返回值

我不到为什么有时候前端返回空值 是值(0,‘’)

数据量

如果数据量增多 可能服务器内存容易不够 因为返回的值是直接存到了res并且没有做其他判断 直接写进去的 这个行为很不好

屎山见笑了xdm

前端小白 轻喷

Kareha:流行的匿名留言板的修改版
02-05
卡累哈 Kareha是一个在日本流行的匿名留言板。 无需注册即可发布。 它可以在两种模式下操作,即图像板或文本板。 Kareha是一个令人难以置信的令人印象深刻的成就,许多功能都在推动Perl的发展,主要是依赖于核心而不是单个C扩展。 关于这个版本 这是DagÅgren/ WAHa.06x36在Perl中编写的原始的修改版本。 后来,它由进行了进一步修改,修复了WebKit /相关问题,并添加了一些小的更改。 该派生基于上述修改后的版本,在此处和此处添加了一些更改,并且可能是其中的最新版本。 我绝不是Perl专家,所以欢迎提出要求和问题! 这是在我们的上运行的版本 这里存在一个基于3
anonymous-message-board:匿名留言板
04-22
FreeCodeCamp-信息安全和质量保证项目 项目:匿名留言板 创建人:tradecoder
fcc-anonymous-message-board:freeCodeCamp匿名留言板项目-完成
02-21
FreeCodeCamp-信息安全和质量保证 Project Anon留言板 SET NODE_ENV到test不带引号当准备写测试和DB到你的数据库连接字符串(在.ENV) 建议创建控制器/处理程序并在route / api.js中处理路由 您将向server.js添加任何安全功能 您将在tests/2_functional-tests.js和tests/1_unit-tests.js创建所有功能/单元测试,但仅对功能进行测试
经典的留言板代码,可以用于简单的网站
05-09
经典的留言板代码,可以用于简单网站。经典的留言板代码,可以用于简单网站。
加强版万能头文件(持续更新ing)
m0_72416569的博客
11-01 614
头文件 辅助开发 提高效率
最近很火的给他人留言的程序源码
qq_45878219的博客
12-02 2319
系统描述:这是一个近期很火的留言网站,可以匿名给他人留言的网站,也可以查询谁给你留言,来自博主花了两个小时编写并上线,需要源码请评论,看到了我都会回复。访问地址匿名留言系统 效果展示 ......
匿名留言板表白墙 小程序校园树洞带后台
向上力
10-08 2241
匿名留言板表白墙小程序校园树洞带后台,源码内有搭建视频和配置微信小程序公众号的办法搭建环境:Apache2.4php5.6(必须!)MySQL5.61.操作(用手[滑稽])1.将源码上传至网站根目录解压2.修改数据库文件:4.config/config_ucenter.php (第11行的数据库、第16行的域名也要修改)6.将数据库导入,即可访问网站注:如需要配合小程序请开扩展。
MOSS如何创建一个可以匿名发帖的留言板
baobaolaogong的专栏
02-26 1391
网上这方面的资料太少了,折腾了我好久,最终明白了如何处理 点击【留言板】-->【此讨论组的权限】-->【设置】-->【编辑权限】-->【设置】-->【匿名访问】 如下图 勾选【添加项目】、【查看项目】就可以了。   备注: 1.该设置的前提是网站时允许匿名访问 的。 2.如果此处没有显示【匿名访问】,可能是当前访问的网址权限不高。 在我本地中匿名访问的网址是http:/
PHP制作的私密留言板源码
05-17
php制作的私密留言板 包含功能:密码留言,输入密码查看,密码访问全站 也支持通过密码获取所有留言。 留言保存在mysql数据库中,没有后台,但是可以直接在数据库编辑或者删除,增加了全站密码访问功能,私密留言...
[Vue]做一个留言板界面
qq_42241722的博客
02-10 2349
界面展示 亮点: 卡片的颜色与长度可以随机变化,自适应页面长度布局,用户可以点击like。 准备 MySQL 一张message的表: message:留言内容; username:由后端进行处理,如果提交的为空,那么设置名字为“匿名”; upTime:提交时间; likeNum:点赞数量,默认0。 后端 只需做一些简单的增删改查即可 MessageMapper: <?xm...
46 - 个人博客项目-17 - 留言板
m0_58250910的博客
09-01 89
【代码】46 - 个人博客项目-17 - 留言板
php怎么实现匿名评论,PHP-匿名对象与匿名类的实现过程-0905
weixin_39599372的博客
03-12 169
* 匿名类:* 1. php 7.0+ 才支持* 2. 类似于匿名函数,就是没有名称的类* 3. 匿名类适合于一次性的创建与引用* 4. 匿名类总是与: new 配套使用类的三种访问方式实例/***匿名类:*1.php7.0+才支持*2.类似于匿名函数,就是没有名称的类*3.匿名类适合于一次性的创建与引用*4.匿名类总是与:new配套使用*/classLei//定义一...
html留言页面设计,html的留言板制作(js)
weixin_42528780的博客
06-04 5972
记事本*{margin:0; padding:0;}body,input{font-size:14px; line-height:24px; color:#333; font-family:Microsoft yahei, Song, Arial, Helvetica, Tahoma, Geneva;}h1{margin-bottom:15px; height:100px; line-height...
秘密胶囊开源版-最新匿名留言程序源码
m0_57941469的博客
12-15 820
秘密胶囊开源版-最新匿名留言程序源码秘密胶囊程序由Pings原创,所有代码均为手动编写。本项目是秘密胶囊项目的最初版本,所有源码均未加密,各位有基础的自寻二开。本次开源的1.0版本只实现了写留言,查留言。
Python使用Flask构建简单的web应用
最新发布
weixin_55100524的博客
06-07 747
我们构建了一个简单但功能全面的 Flask Web 应用。这个应用包括了基本的路由、模板渲染、表单处理以及简单的用户认证功能。Flask 的灵活性使其非常适合快速开发和原型设计,同时也能够扩展以应对更复杂的需求。通过这个示例,你可以继续学习和探索 Flask 的更多高级功能,如数据库集成、蓝图、API 开发等。
基于jsp的留言板的功能需求分析
06-03
好的,基于JSP的留言板的功能需求分析如下: 1. 用户登录 用户可以使用用户名和密码登录到留言板系统。如果用户没有账号,可以进行注册并创建一个新的账号。 2. 留言列表展示 用户可以查看所有留言,并按照发布...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 匿名留言板 1192
  • 基于python,mysql的学生打卡系统(班级在用) 841
  • 控制台的五子连珠游戏 827
  • 加强版万能头文件(持续更新ing) 613
  • 对c++输入输出的一些封装(bushi) 338

分类专栏

  • 打卡 1篇
  • 前后端 2篇
  • 数据库 2篇
  • 加密 1篇
  • 窗体 1篇
  • 百行代码 1篇
  • 控制台 3篇
  • 手写 3篇
  • flask 1篇
  • 游戏 1篇

最新评论

  • 匿名留言板

    阿J~: 每个知识点讲解清晰 ,学到了学到了

  • 控制台的五子连珠游戏

    周景鑫yyds: 哪里捏

  • 控制台的五子连珠游戏

    Novices-: 没有与这些操作数匹配的“==”运算符 操作数类型为: void == enum cunnamed>

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 基于python,mysql的学生打卡系统(班级在用)
  • 加解密小软件python
  • 加强版万能头文件(持续更新ing)
2022年7篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源八字缺金起啥名字澄海5.49古币价格表空间爱情留言代码化工公司起名字中国人电影网无头东宫粤语版精品店起名要大气的赌神出场音乐麻将梦幻俱乐部属鼠五月出生起名字心机美人宥起名起店名字测试打分女生姓方起名饭馆店起名大全你别问这是为什么tvb云播放粤语蜀汉之庄稼汉大盘鸡起名字大全论语起名字女孩名字周易起名软件哪个下载用佳字怎么起名巴威台风实时路径你的名字百度云资源天降之物游戏商号起名武姓起名字简单好听纳粹军妓魔道争锋淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化