发送表单时,实际上正在转义用户文本字段中的撇号。我在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> </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
发送到page2
(insert.php
,将数据插入数据库中),然后返回(对用户透明的一切)到{来自page 1
的{1}}(在数据库中显示新数据),我只是在控制台中了解我在page2
但不在page1
中发送给我的内容。
提前抱歉我的英文,非常感谢!
答案 0 :(得分:0)
我自己设法解决了这个问题。如果有人对此感兴趣或遇到与我相同的问题,我会分享解决方案。
似乎问题是&#39;这导致撇号被自动转义,这是由于我的PHP版本(5.2.6);在这个版本中,php.ini文件中有一个参数(magic_quotes_gpc),当它打开时会导致撇号,引号和后退,例如(在我的情况下)从POST或GET全局变量中获取的参数;只需设置此选项即可停止问题&#39;。
问候。