background image

$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   的 字 串 格 式 " , 我 想 是 经 过