php防注入留言板(simple)
程序员文章站
2022-04-21 07:58:13
...
新手学php,试手案例便是留言板。以前未连接数据库时,我是直接将用户输入的留言写入到一个txt,然后再从txt读取显示(~.~别鄙视)。 最近学习了php访问MySQL数据库的一些知识,重写了一下留言板,功能比较简单,当学习记录。 1.首先是提交留言的表单guessbo
新手学php,试手案例便是留言板。以前未连接数据库时,我是直接将用户输入的留言写入到一个txt,然后再从txt读取显示(~.~别鄙视)。
最近学习了php访问MySQL数据库的一些知识,重写了一下留言板,功能比较简单,当学习记录。
1.首先是提交留言的表单guessbook.php,提交至post.php。
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
在我们把数据插入数据库时,为了让我们输入的数据在显示时仍然保持最初的形式,就必须对数据进行一些处理。比如如果不转义直接显示,比如js代码,就会直接在你的页面中运行。
这里用到了htmlspecialchars函数。不过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 ""; } else { // 对游客留言进行处理 $content = str_replace("","
",htmlspecialchars($patch)); //插入数据库语句 $sql = "insert into content (name,email,content,time) values ('$name','$email','$content',now())"; mysql_query($sql); //插入成功,返回信息 echo ""; } ?>
4.展示用户留言列表,可在guessbook.php留言表单下面展示。
include("config.php"); //连接数据库 $sql="select * from content"; //数据库查询语句,content为该用户留言的表。 $result = mysql_query($sql,$con);
User | Content | Time |
---|---|---|
echo $row[1] ?> | echo nl2br($row[3]) ?> | echo $row[4] ?> |
5.基本结果: 经CSS 修饰后的结果如下:
http://www.phptogether.com/archives/10907