在为我的加密链接制作二维码时,我注意到二维码中没有“+”符号。
示例链接:http://localhost/cp//form?ASLV2N0+YmkHz6ELPjgEoqbA7qYQ69eoTReV9jSwEviaqJi8j54kQmpbaVK58LlFZmjhKG+X3uyPpZ6fC0/H2A==
有没有什么方法可以删除我的加密中的+符号?这是我如何加密我的链接:
$cryptKey = 'qJB0rGtIn5UB1xG03efyCp';
$qEncoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey),
$q,
MCRYPT_MODE_CBC,
md5(md5($cryptKey))));发布于 2018-07-22 19:10:21
从the documentation中的7-year-old comment
对于任何对'base64url‘变体编码感兴趣的人,您可以使用这对函数:
<?php
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data) {
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
?>发布于 2018-07-22 22:29:06
你误解了这个问题。
+符号在网址中有特殊的含义。这是表达空格的一种方式。
如果你想把+作为数据包含在URL中,那么你需要把它编码成%2B。
发布于 2018-07-22 22:29:15
ASLV2N0+YmkHz6ELPjgEoqbA7qYQ69eoTReV9jSwEviaqJi8j54kQmpbaVK58LlFZmjhKG+X3uyPpZ6fC0/H2A==似乎是原始的base64代码。你不能只是将随机数据注入到一个网址中,你需要encode it properly,例如:
$url = 'http://localhost/cp/form?' . rawurlencode($qEncoded);我还建议您仔细检查URL格式。您有一个双斜杠(这应该不是问题,但感觉像是打字错误)和一个未命名的GET参数(可能是正确的,也可能是错误的)。
https://stackoverflow.com/questions/51464456
复制相似问题