如何避免在HTML5输入文本中转义撇号?

时间:2016-02-29 20:19:36

标签: html5 forms apostrophe

发送表单时,实际上正在转义用户文本字段中的撇号。我在PHP页面中获取了文本字段的值,它向我显示撇号被转义:

例如原始用户文本输入:用户17的秘密数据;通过PHP接收页面中的$_POST收到的数据:用户17\的秘密数据。

我认为在验证表单时,撇号被'\'替换以逃避字符。我该如何避免这种行为? (我知道,正如一个人在这里指出的那样)是出于安全原因,但我稍后会自己处理。

我的表格就是这个:

<form id="form_data" action="insert.php" method="post">
    <table border="1" cellpadding="5" cellspacing="0">
        <tr style="text-align: left;">
            <th style="width: 150px;">Name</th>
            <th style="width: 150px;">Password</th>
            <th style="width: 200px;">Secrets</th>
            <th>&nbsp;</th>
        </tr>    
        <tr>
           <td style="width: 150px;"><input type="text" name="username"></td>
           <td style="width: 150px;"><input type="text" name="password"></td>
           <td style="width: 200px;"><input type="text" name="secrets"></td>
           <td><input id="boton" type="submit" value="Submit"></td>
        </tr>
     </table>
</form>

我在insert.php中得到了以下参数:

if (isset($_POST['secrets'])) {
   $secrets = $_POST['secrets'];
   $firephp->info($secrets,'secrets: ');
}

顺便提一下,正如您所看到的,我尝试使用firephp在控制台中显示数据,但不会显示它。可能是因为控制台只显示您在当前页面中发送给它的数据?

我的意思是,我将表单的数据从page1发送到page2insert.php,将数据插入数据库中),然后返回(对用户透明的一切)到{来自page 1的{​​1}}(在数据库中显示新数据),我只是在控制台中了解我在page2但不在page1中发送给我的内容。

提前抱歉我的英文,非常感谢!

1 个答案:

答案 0 :(得分:0)

我自己设法解决了这个问题。如果有人对此感兴趣或遇到与我相同的问题,我会分享解决方案。

似乎问题是&#39;这导致撇号被自动转义,这是由于我的PHP版本(5.2.6);在这个版本中,php.ini文件中有一个参数(magic_quotes_gpc),当它打开时会导致撇号,引号和后退,例如(在我的情况下)从POST或GET全局变量中获取的参数;只需设置此选项即可停止问题&#39;。

问候。