我正在从客户端(特别是javascript和Jquery库)向服务器(在PHP中运行)发送数据。我发送的信息如下:
来自Chrome开发工具 - >网络
Request URL:http://host:8888/RoviImages.php?id=880&aid=334&albumTitle=The+Lion%27s+Roar&albumId=MW0002231494
Request Method:GET
Status Code:200 OK
Query String Parameters
id:880
aid:334
albumTitle:The Lion's Roar
albumId:MW0002231494
客户端代码是:
var data = {id: song_id, aid: aid, albumTitle: albumTitle, albumId: albumId};
$.get(request_url, data)
在发送之前检查信息我将albumTitle称为“ The Lion's Roar ”
当PHP收到信息时,我要做的第一件事就是打印它。
$albumTitle = $_GET['albumTitle'];
error_log('Album Title = ' . $albumTitle);
这使我返回“专辑标题=狮子的咆哮”。
处理完信息后,我使用 json_encode 回应对javascript的响应。 Javascript获得响应,当它通过 JSON.parse 对其进行解码时,结果是“狮子的咆哮”。
所以基本上它会进入服务器,但我会通过更改来恢复它。为什么呢?
答案 0 :(得分:2)
魔术引号设置可能已开启。请参阅http://nl3.php.net/security.magicquotes。
在脚本顶部添加此项以自动从输入中删除所有斜杠:
if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}
答案 1 :(得分:-1)
更好地禁用魔术引号,请参阅HERE,如果无法禁用,可以使用此功能删除:
if (get_magic_quotes_gpc()) {
function stripslashes_gpc(&$value) {
$value = stripslashes($value);
}
array_walk_recursive($_GET, 'stripslashes_gpc');
array_walk_recursive($_POST, 'stripslashes_gpc');
array_walk_recursive($_COOKIE, 'stripslashes_gpc');
array_walk_recursive($_REQUEST, 'stripslashes_gpc');
}