1

我正在使用一个 PHP 程序,该程序在多台服务器上运行并从其中两台服务器生成略有不同的字符串。

**Server 1 Request Data:**

a:10:{s:9:"locale";s:5:"en_US","url";s:18:"https://testingurl.com/index.php";}

**Server 2 Request Data:**

{"locale":"en_US","url":"https:\/\/testingurl.com\/index.php";}

两台服务器都发送相同的变量,但格式略有不同。服务器 1 在请求之前添加了附加信息,例如 a:3:,而服务器 2 省略了这些细节,但转义了正斜杠。

问题: a:3: , s:9: 是一种通用编码,还是服务器配置可能添加到请求中的东西?我不熟悉格式,想知道它是否常见。我的目标是确定是 PHP 程序添加了附加信息还是服务器配置。

4

3 回答 3

2

很容易

当前的问题

此序列化格式无效

a:10:{s:9:"locale";s:5:"en_US","url";s:18:"https://testingurl.com/index.php";}
   ^    ^                               ^
   2    6                              32

这就是我认为它应该看起来的样子

$server1 = 'a:2:{s:6:"locale";s:5:"en_US";s:3:"url";s:32:"https://testingurl.com/index.php";}';
var_dump(unserialize($server1));

$server2 = '{"locale":"en_US","url":"https:\/\/testingurl.com\/index.php"}';
var_dump(json_decode($server2, true));

输出

array
  'locale' => string 'en_US' (length=5)
  'url' => string 'https://testingurl.com/index.php' (length=32)
于 2012-10-26T19:07:35.523 回答
1

第一种格式是用 编码的 php 序列化变量serialize,第二种是JSON

于 2012-10-26T19:07:01.950 回答
1

a:10 和 s:9 以及类似的字符是 PHP 序列化的,而整个字符串看起来像是 JSON 编码的。也就是说,格式看起来不正确(我假设您只是省略了一些输出),但这里有一个如何生成它的示例:

 $a=json_encode(array('locale'=>'en_US','url'=>'https://testingurl.com/index.php'));
 echo $a;
 echo "<br />";
 echo serialize($a);
于 2012-10-26T19:09:27.983 回答