首页 > php教程 > php手册 > 正文

php防注入留言板(simple)

WBOY
发布: 2016-06-06 19:47:45
原创
1074 人浏览过

新手学php,试手案例便是留言板。以前未连接数据库时,我是直接将用户输入的留言写入到一个txt,然后再从txt读取显示(~.~别鄙视)。 最近学习了php访问MySQL数据库的一些知识,重写了一下留言板,功能比较简单,当学习记录。 1.首先是提交留言的表单guessbo

      新手学php,试手案例便是留言板。以前未连接数据库时,我是直接将用户输入的留言写入到一个txt,然后再从txt读取显示(~.~别鄙视)。

      最近学习了php访问MySQL数据库的一些知识,重写了一下留言板,功能比较简单,当学习记录。

  1.首先是提交留言的表单guessbook.php,提交至post.php。

登录后复制
class="button" value="提交"> class="button" value="重置">

  2.数据库的连接config.php

<span>php
    </span><span>$con</span> = <span>mysql_connect</span>("localhost","user","passwd"<span>);
    </span><span>if</span>(!<span>$con</span><span>)
        </span><span>die</span>('Could not connect: ' . <span>mysql_error</span><span>());

    </span><span>mysql_query</span>("set names utf8"); <span>//</span><span>以utf8读取数据</span>
    <span>mysql_select_db</span>("dbname",<span>$con</span>); <span>//选择</span><span>数据库</span>
?>
登录后复制

  3.对用户留言进行验证post.php

  在我们把数据插入数据库时,为了让我们输入的数据在显示时仍然保持最初的形式,就必须对数据进行一些处理。比如如果不转义直接显示,比如js代码,就会直接在你的页面中运行。

     这里用到了htmlspecialchars函数。不过htmlspecialchars不会转义换行符\r\n号,也就是说如果你插入的数据中包含了换行,当你进行转义显示时,该函数不会显示换行。所以在显示数据时需要用到nl2br函数

<span>php
    </span><span>header</span>("content-Type: text/html; charset=utf-8"<span>);
    </span><span>include</span>("config.php");                <span>//</span><span>数据库连接</span>
    <span>$name</span>= <span>$_POST</span>['name'<span>];
    </span><span>$email</span>= <span>$_POST</span>['email'<span>];
    </span><span>$patch</span> = <span>$_POST</span>['content'];           <span>//</span><span>获取游客提交信息</span>
    <span>if</span> (<span>$name</span>=="" || <span>$email</span>=="")          <span>//</span><span>游客未填写用户名和邮箱处理</span>
<span>    {
        </span><span>echo</span> "<script>alert('请检查用户名和邮箱输入!');location.href='./guessbook.php';</script>"<span>;
    }
    </span><span>else</span><span>
    {  
        </span><span>//</span><span> 对游客留言进行处理 </span>
        <span>$content</span> = <span>str_replace</span>("","<br>",<span>htmlspecialchars</span>(<span>$patch</span><span>));
        </span><span>//</span><span>插入数据库语句</span>
        <span>$sql</span> = "insert into content (name,email,content,time) values ('<span>$name</span>','<span>$email</span>','<span>$content</span>',now())"<span>;
        </span><span>mysql_query</span>(<span>$sql</span><span>);
        </span><span>//</span><span>插入成功,返回信息</span>
        <span>echo</span> "<script>alert('提交成功!返回查看!');location.href='./guessbook.php';</script>"<span>;
    }    
</span>?>
登录后复制

  4.展示用户留言列表,可在guessbook.php留言表单下面展示。

<span>include</span>("config.php"<span>);                //连接数据库
</span><span>$sql</span>="select * from content"<span>;         //数据库查询语句,content为该用户留言的表。
</span><span>$result</span> = <span>mysql_query</span>(<span>$sql</span>,<span>$con</span><span>);

</span>
登录后复制
class="table table-responsive">

php while ($row=mysql_fetch_array($result)) { ?>

php } ?>
User Content Time
echo $row[1] ?> echo nl2br($row[3]) ?> echo $row[4] ?>

  5.基本结果: 经CSS 修饰后的结果如下:

php防注入留言板(simple)

http://www.phptogether.com/archives/10907

 

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!