今天修改手机端接口 ,有问题困扰了很久,最后终于修改好,记录一下用到的知识
这是问题数据
parameter = "{\n \\\"typeid\\\" : 1,\n \\\"keyword\\\" : \\\"ffffgg,\U6cb9\U8102\U7c7b\U4ea7\U54c1,\U5927\U8c46\U6cb9,\U975e\U8f6c\U57fa\U56e0\U5927\U8c46\U6cb9\\\",\n \\\"typename\\\" : \\\"\\\",\n \\\"catid\\\" : \\\"82\\\",\n \\\"is_recommend\\\" : \\\"\\\",\n \\\"amount\\\" : \\\"\\\",\n \\\"unit\\\" : \\\"\\\",\n \\\"brand\\\" : \\\"\\\",\n \\\"piclist\\\" : [\n \\\"http:\\\\/\\\\/172.16.2.81:8094\\\\/file\\\\/upload\\\\/201702\\\\/18\\\\/112552420.png.thumb.png\\\"\n ],\n \\\"title\\\" : \\\"ffffgg\\\",\n \\\"price\\\" : \\\"\\\",\n \\\"totime\\\" : \\\"\\\",\n \\\"minamount\\\" : \\\"\\\",\n \\\"days\\\" : \\\"3\\\",\n \\\"elite\\\" : \\\"\\\",\n \\\"n\\\" : \\\"\\\",\n \\\"v\\\" : \\\"\\\",\n \\\"content\\\" : \\\"\\\"\n}";
这是正常数据
parameter = "{\n \"typeid\" : 1,\n \"keyword\" : \"ffffgg,\U6cb9\U8102\U7c7b\U4ea7\U54c1,\U5927\U8c46\U6cb9,\U975e\U8f6c\U57fa\U56e0\U5927\U8c46\U6cb9\",\n \"typename\" : \"\",\n \"catid\" : \"82\",\n \"is_recommend\" : \"\",\n \"amount\" : \"\",\n \"unit\" : \"\",\n \"brand\" : \"\",\n \"piclist\" : [\n \"http:\\/\\/172.16.2.81:8094\\/file\\/upload\\/201702\\/18\\/112552420.png.thumb.png\"\n ],\n \"title\" : \"ffffgg\",\n \"price\" : \"\",\n \"totime\" : \"\",\n \"minamount\" : \"\",\n \"days\" : \"3\",\n \"elite\" : \"\",\n \"n\" : \"\",\n \"v\" : \"\",\n \"content\" : \"\"\n}";
知识点:
1.$_POST,$_GET,$_COOKIE默认就被转义了,正常数据中的‘ "’就是转义后的结果,但是网站中又对转义后的数组用addslashes()再进行转义出现‘ "’,这就不对了
2.当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()
3.当magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes(),显示数据时则不需要使用stripslashes()。
代码
//提交数据,或者变量准备:
$Content=addslashes(”这里面是数据,不管有没单引号或者还是变量”);
//插入数据到数据库,代码省略
//开始显示数据
$Content=”从数据库读取的数据”;
if(get_magic_quotes_gpc()){
$Content=stripslashes($Content);
}
echo $Content;
辅助:
1、PHPinfo();
2、
if(DT_DEBUG) {
error_reporting( E_ALL ^ E_NOTICE );
$mtime = explode(' ', microtime());
$debug_starttime = $mtime[1] + $mtime[0];
} else {
error_reporting(0);
}
3、file_put_contents( '1.txt' , var_export( $data, true ).PHP_EOL, FILE_APPEND);
4、$str = base64_decode(str_replace(" ","+",$_GET['str']));