php防注入留言板(simple)
新手学php,试手案例便是留言板。以前未连接数据库时,我是直接将用户输入的留言写入到一个txt,然后再从txt读取显示(~.~别鄙视)。
最近学习了php访问MySQL数据库的一些知识,重写了一下留言板,功能比较简单,当学习记录。
1.首先是提交留言的表单guessbook.php,提交至post.php。
<form name="form1" method="post" action="post.php">
<div >
<label for="exampleInputName">用户名</label>
<input type="text" name="name" placeholder="请输入用户名">
</div>
<div>
<label for="exampleInputEmail">邮箱</label>
<input type="email" name="email" placeholder="请输入邮箱">
</div>
<div id="textarea">
<textarea rows="5" name="content" id="content"></textarea>
</div>
<div>
<input type="submit" class="button" value="提交">
<input type="reset" class="button" value="重置">
</div>
</form>
2.数据库的连接config.php
<?php
$con = mysql_connect("localhost","user","passwd");
if(!$con)
die('Could not connect: ' . mysql_error()); mysql_query("set names utf8"); //以utf8读取数据
mysql_select_db("dbname",$con); //选择数据库
?>
3.对用户留言进行验证post.php
在我们把数据插入数据库时,为了让我们输入的数据在显示时仍然保持最初的形式,就必须对数据进行一些处理。比如转义单引号和双引号,以及转义我们输入的html标签:<script></script>,空格,<p>等,如果不转义直接显示,比如js代码,就会直接在你的页面中运行。
这里用到了htmlspecialchars函数,他会将字符串中的html标签转义成对应的html字符,比如 ’<’ 将被转义成 ’<’。不过htmlspecialchars不会转义换行符\r\n号,也就是说如果你插入的数据中包含了换行,当你进行转义显示时,该函数不会显示换行。所以在显示数据时需要用到nl2br函数。
<?php
header("content-Type: text/html; charset=utf-8");
include("config.php"); //数据库连接
$name= $_POST['name'];
$email= $_POST['email'];
$patch = $_POST['content']; //获取游客提交信息
if ($name=="" || $email=="") //游客未填写用户名和邮箱处理
{
echo "<script>alert('请检查用户名和邮箱输入!');location.href='./guessbook.php';</script>";
}
else
{
// 对游客留言进行处理
$content = str_replace("","<br />",htmlspecialchars($patch));
//插入数据库语句
$sql = "insert into content (name,email,content,time) values ('$name','$email','$content',now())";
mysql_query($sql);
//插入成功,返回信息
echo "<script>alert('提交成功!返回查看!');location.href='./guessbook.php';</script>";
}
?>
4.展示用户留言列表,可在guessbook.php留言表单下面展示。
include("config.php"); //连接数据库
$sql="select * from content"; //数据库查询语句,content为该用户留言的表。
$result = mysql_query($sql,$con);
<table class="table table-responsive">
<tr>
<th>User</th>
<th>Content</th>
<th>Time</th>
</tr>
<p>
<?php
while ($row=mysql_fetch_array($result)) {
?>
</p>
<tr >
<td><?php echo $row[1] ?></td>
<td><?php echo nl2br($row[3]) ?></td> <!--显示留言内容,使用nl2br函数处理换行-->
<td><?php echo $row[4] ?></td>
</tr>
<?php
}
?>
</table>
5.基本结果: 经CSS 修饰后的结果如下:

参考:《浅析php插入、更新数据时对html标签的转化 防注入》http://www.phptogether.com/archives/10907
php防注入留言板(simple)的更多相关文章
- asp防注入安全问题
一.古老的绕验证漏洞虽然古老,依然存在于很多小程序之中,比如一些企业网站的后台,简单谈谈.这个漏洞出现在没有对接受的变量进行过滤,带入数据库判断查询时,造成SQL语句的逻辑问题.例如以下代码存在问题: ...
- dede留言板BUG解决
dede留言板刷新后空白BUG解决 DEDE留言板验证码留空或者不正确返回空白页面的解决方法 解决方法如下进入文件/plus/guestbook.php 找到代码ShowMsg("验证码不正 ...
- Flask实战-留言板-安装虚拟环境、使用包组织代码
Flask实战 留言板 创建项目目录messageboard,从GreyLi的代码中把Pipfile和Pipfile.lock文件拷贝过来,这两个文件中定义了虚拟环境中需要安装的包的信息和位置,进入m ...
- PHP SQL防注入
过年前后在做一个抽奖的东西,需要用户填写中奖信息,为了防止非法用户对数据库进行入侵神马的,于是写下基本的防注入语句,需要用的可以自己封装成一个function. $str = str_replace( ...
- XSS留言板实现
XSS 留言板实现-笔记 预备知识 XSS漏洞 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS ...
- 写一个简单的HTML留言板
最近有点懒,没码什么字,防止遗忘,从头开始码,写一个简单的HTML留言板.包含两个文件,book.html还有style.css,放在同一目录下. book.html 1 <!DOCTYPE h ...
- AngularJs学习笔记(制作留言板)
原文地址:http://www.jmingzi.cn/?post=13 初学Anjularjs两天了,一边学一边写的留言板,只有一级回复嵌套.演示地址 这里总结一下学习的过程和笔记.另外,看看这篇文章 ...
- dd——留言板再加验证码功能
1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表 这个不要碰, ...
- asp.net留言板项目源代码下载
HoverTree是一个asp.net开源项目,实现了留言板功能. 前台体验网址:http://hovertree.com/guestbook/ 后台请下载源代码安装. 默认用户名:keleyi 默认 ...
随机推荐
- qml package 的使用
什么时候使用这个.就是多个view使用同一个deleagte的时候. The Package class is used in conjunction with VisualDataModel to ...
- bzoj 2561: 最小生成树
#include<cstdio> #include<iostream> #include<cstring> #define M 100009 #define inf ...
- SAP iDoc 概念及管理
创建IDOC: 第一步:WE31 创建IDOC所包含的字段. 第二步:WE30 创建IDOC 把Segment分配给IDOC 第三步:WE81 创建信息类型 第四步:WE82 把 ...
- (DFS)hdoj1198-Farm Irrigation
题目链接 DFS的简单应用,比较繁琐的是处理输入的英文字母.用并查集也可以做(可是笔者现在还没有掌握并查集,之前只用过一次,以后学会回来补上) #include<cstdio> #incl ...
- Sketchup+ArcGIS三维建模与管理
一.软件安装及其说明 1.需要安装的软件及其安装: 这份报告主要涉及到的有三个需要安装的软件ArcGIS9.3(或9.2) .Sketchup6.0和SketchUp6 ESRI 插件. ArcGIS ...
- Android安全之WebViewUXSS漏洞
Android安全 WebView UXSS app开发 漏洞分析 移动安全 0X01 前言 XSS是我们比较熟悉的一种攻击方式,包括存储型XSS.反射型XSS.DOM XSS等,但UXSS(通用型X ...
- JVM-运行时数据区
运行时数据区示意图 ...
- IOS打开其他应用、以及被其他应用打开
1.打开其他应用 appURLStr = "cwork://app_id?title=xxx&content=xxx" [[UIApplication sharedAppl ...
- php的查询数据
php中 连接数据库,通过表格形式输出,查询数据.全选时,下面的分选项都选中;子选项取消一个时,全选按钮也取消选中. <!DOCTYPE html PUBLIC "-//W3C//DT ...
- C语言:typedef 跟 define 的区别
typedef (int*) pINT1;以及下面这行:#define pINT2 int* pINT1 a,b; 与pINT2 a,b; 定义的a,b 有差别吗 回答: typedef作为类型定义关 ...