如何使<textarea>仅将撇号识别为文本?

时间:2015-07-05 05:24:48

标签: php html sql forms

&lt; p&gt;很简单,我网站上的'texarea'就像发短信一样,它允许用户输入文字并将其发布到页面上。我刚刚发现它将文本视为某种代码,可能是SQL。&lt; / p&gt; &lt; p&gt;当我输入&lt; strong&gt;“你好我们都很好”&lt; / strong&gt;时,“我们”这个词中的撇号引起了一些混乱。&lt; / p&gt; &lt; p&gt;浏览器中显示的错误消息:&lt; / p&gt; &lt; pre&gt;&lt; code&gt;错误:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行使用“re all set”附近的正确语法 &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;万一你想知道,这里是html:&lt; / p&gt; &lt; pre&gt;&lt; code&gt;&lt; form action =“comi.php”method =“post”&gt;         &lt; textarea maxlength =“227”type =“text”name =“input”cols =“45”rows =“4”&gt;&lt; / textarea&gt;         &lt; input type =“submit”value =“POST”id =“button”/&gt; &LT; /形式&GT; &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;我认为它可能与数据库有关,任何人都可以帮忙吗?&lt; / p&gt; &lt; p&gt;提前致谢:)&lt; / p&gt;

3 个答案:

答案 0 :(得分:1)

要防止SQL注入,您应该使用Stored Procedures

CREATE PROCEDURE saveText
    @textArea nvarchar(50)
AS 
SET NOCOUNT ON;

INSERT INTO myTable 
    (textArea)
VALUES
    (@textArea)

GO

这样,当你输入'时,你就没有问题了。

答案 1 :(得分:0)

您需要转义已键入的字符串,以便sql引擎不会混淆。

$input = $_POST["textarea"];
$safe_input = mysql_real_escape_string($input);

您需要在sql语句中使用它。

警告

正如其他人试图告诉你的那样,你会让自己接受 sql injection 攻击。完成上述工作后,您应该阅读它。上面的评论中有一个链接。

答案 2 :(得分:0)

$ input = $ _POST [“textarea”]; $ safe_input = addslashes($ input);