background image

//表单提交如果你不进行 html 标签处理那么就会直接显示样式或者 js 代码直接运行 
/* 
<form> 
<input type='text' name='title'> 
<input type='submit' name='submit' value='提交'> 
</form> 

 

当你输入

 

<H1>www.jb51.net<H1> 
一提交就出现是一号大字体

 

但是你原来是想要

 

<H1>www.jb51.net<H1>结果的 
所以要处理下

 

当输入

<script>alert('www.jb51.net')</script> 

一提交就会运行

javascript 

这样不好

 必须处理下来防止黑客找到你攻击的入口 

表单默认提交方式是

get 

*/

 

//当你输入<div><h1>www.jb51.net</h1></div> 

echo

 htmlspecialchars(

$_GET

['title']);

//过滤了 

结果

:<div><h1>php.yl1001.com</h1></div> 

其他查看源码就知道

< 和 >已经被替换了成< >就会在页面原型显示 

还有一点要主要

 如果不处理<div >有的复制的文章自身有标签样式就会打乱你的页面布局

 

可能

css 冲突 

htmllentities()函数用户和 htmlspecialchars()相反用法就不说了 
 
当你需要那个标签留着可以用到

strip_tags

()函数 

echo

 

strip_tags

(

$_GET

['title'],'<b><p><strong><h1>'); 

提交结果是你查看源码

 就会发现<div>没有了 

 

/* 
加入输入

i love 'jb51'; 

提交结果为

 i love \'jb51\'反斜杠转义了 

那么我要想原文输出怎么办呢

 

可以用这个

php 函数 stripslashes() 

取消转义

 

echo stripslashes($_GET['title']); 
结果是

i love 'jb51'; 

如果含有

html 标签呢如这种 

<a href="">i love 'jb51'</a> 
我要原型输出怎么办

 可以用 2 个函数结合起来用 我已经说过的 

echo htmlspecialchars(stripslashes($_GET['title'])); 
结果:

<a href="">i love 'jb51'</a> 

*/