$aa='my name is yyy!';
$conn=mysql_connect('localhost','root','');
$sele='select sour from envtest where id=1';
$res=mysql_db_query('evaltest',$sele);
$arra=mysql_fetch_array($res);
$str=htmlspecialchars($arra['sour']);
eval( "echo \"$str\";" );
?>
可是在页面上显示是这样的:
以下为引用的内容:
<input type="text" name="textfield" value="my name is yyy!">
变量带入成功,可显示不符合要求.察看文件源码,内容如下:
以下为引用的内容:
<input type="text" name="textfield" value="my &bsp name &bsp is
yyy!">
再看看手册的 htmlspecialchars()的用法,发现此函数对字串作了如下操作:
& (和)
转成 &
" (双引号)
转成 "
< (小于)
转成 <
> (大于)
转成 >
再查找,没发现与此函数作用相反的函数,于是,自己加了几行代码,再作如下调试,
终于成功。
以下为引用的内容:
<?php
function dehtml($str){
$str=str_replace('"','"',$str);
$str=str_replace('<','<',$str);
$str=str_replace('>','>',$str);
$str=str_replace('&','&',$str);
return $str;
}
$aa='my name is yyy!';
$conn=mysql_connect('localhost','root','');
$sele='select sour from envtest where id=1';
$res=mysql_db_query('evaltest',$sele);
$arra=mysql_fetch_array($res);
$str=HTMLSpecialChars($arra['sour']);
eval( "echo dehtml(\"$str\");" );
?>
在这个代码调试成功后,我又把一个内容复杂的 html 页面的源码加入一变量后插入到
evaltest
表
中
,
再
次
测
试
,
也
成
功
了
。
有 关 eval 函 数 用 法 里 的 "
待 处 理 的 字 串 要 符 合 PHP 的 字 串 格 式 " , 我 想 是 经 过