我正在创建一个令牌,我将其作为页面上 url 的一部分传递。我使用rawurlencode ()对字符串进行编码并将其作为令牌发送,但是,我发现当我解码接收到的令牌(作为 URL 参数传递)时,我得到的字符串略有不同。
我的网址如下所示:/path/to/file.html?token=abcd123
这是我正在使用的代码片段。我在做任何明显错误的事情吗?如果做不到这一点,是否有更好的方法来创建(加密)令牌并将它们传递到 url?
<?php
//send
$raw = "some secret string";
$token = rawurlencode($raw);
//recieve
$data = rawurldecode($token);
?>
[编辑]
我已经删除了 enc(dec)ryption 功能 - 它们不是问题的原因 - 并且是一个红鲱鱼。我已将问题专门缩小到 rawurlencode/decode 在它们的工作方式上不是对称的。
解码时的 rawurlencoded 字符串给出不同的字符串(类似的字符串,但缺少部分)。当然,在 URLS 的基础上不可能有错误——所以我一定做错了什么。问题是我无法发现它,到目前为止似乎也没有其他人能够发现它......
[附加信息]
我正在使用 Symfony Web 框架(v1.3.8),它可能通过在幕后编码和解码东西来弄乱请求。我将尝试直接从 $_POST 变量中获取 token 参数,看看 Symfony 是否是所有这一切的罪魁祸首。