我现在的代码是这样的:
如果用户输入一般字符是没问题的,但如果输入单引号,提交后input里的值就变了,试过给echo的字符串加htmlentities或htmlspecialchars都不可以...无论是不是把value用引号引起来,都不能同时支持双引号、单引号和反斜杠...
实在写不出来了,求助...
<html>
<head>test</head>
<body>
<form action="#">
<input type=text name="a" value=<? echo $_GET["a"] ?>  />
<input type=submit /> 
</form>
</body>
</html>

解决方案 »

  1.   

    POST方法 得到的值就开始变了么?
      

  2.   

    帮忙看下我的问题吧http://topic.csdn.net/u/20100826/23/d77ec14a-84fc-49f5-9336-96bb6fd9e5ad.html?seed=543536912&r=67968776#r_67968776
      

  3.   

    小顶一下...我觉得这应该是个很简单的问题(因为太常用了),只是因为我刚学php所以不知道...
      

  4.   

    <form action="#">
    <input type=text name="a" value="<? echo htmlentities(stripcslashes($_GET["a"])); ?>"  />
    <input type=submit /> 
    </form>其中:
    stripcslashes 去除转义符
    htmlentities 做html转义处理另外:<input type=text name="a" value=<? echo $_GET["a"] ?>  />
    这样的写法是错误的,值应该用引号括起
      

  5.   


    可以转义函数addslashes(),然后在input的值这样写:
    <input type=text name="a" value="<? echo str_replace("\","",$_GET["a"]); ?>"  />addslashes函数将字符串的特殊字符前添加了\,所以在获取的时候要去掉这个符号,这样显示就会正常了。
      

  6.   

    用htmlspecialchars($str, ENT_QUOTES);好用吧
    是不是第二个参数传递的问题。
      

  7.   

    楼主可以使用
    base64_encode加密传送。
    然后再用
    base64_decode解密。
    如果想显示某个符号可以使用:str_replace()进行替换