传递含&的字符串时$_GET取值不全的问题解决方案咨询
问题原因与解决方案
问题根源
URL中的&是GET参数的分隔符,当直接传递未编码的Baltus & Adang时,浏览器会将&后面的Adang识别为新的独立参数,导致第三页仅能获取到&之前的Baltus。
解决步骤
生成URL时对参数进行URL编码
在PHP中,使用urlencode()或rawurlencode()函数处理$NameString的值,再拼接进URL:// 对包含特殊字符的参数进行编码 $encodedName = urlencode($NameString); // 拼接成正确的URL $thirdPageUrl = "your-third-module.php?NameString=" . $encodedName;编码后
Baltus & Adang会转换为Baltus+%26+Adang,浏览器会将其识别为单个完整参数。接收端无需额外解码
PHP的$_GET全局变量会自动对URL编码的参数进行解码,直接使用$_GET["NameString"]就能获取完整的原始字符串。检查中间传递环节
确认从第二页跳转至第三页时,链接是基于编码后的参数生成的,而非直接拼接未编码的原始字符串。比如第二页中生成返回链接时,要重新对$_GET["NameString"]进行编码后再拼接。
内容的提问来源于stack exchange,提问作者Fred Baltus
相关产品推荐
相关产品推荐

