PHP urlencode()固定在?SID=xxx上。。。为什么?

PHP urlencode()固定在?SID=xxx上。。。为什么?,php,session,urlencode,Php,Session,Urlencode,我试图输出一个简单的链接 这非常有效: $url = 'http://www.google.com'; echo $url; 这不太管用: $url = 'http://www.google.com'; echo urlencode($url); 出于某种原因,第二个示例将“?SID=xxx”附加到URL的末尾。如何防止这种情况发生 注意:生成URL的代码已更改以保护无辜者。这不是urlencode()的错误,是PHP的自动链接重写在没有会话cookie的情况下通过GET变量添加会话ID 如

我试图输出一个简单的链接

这非常有效:

$url = 'http://www.google.com';
echo $url;
这不太管用:

$url = 'http://www.google.com';
echo urlencode($url);
出于某种原因,第二个示例将“?SID=xxx”附加到URL的末尾。如何防止这种情况发生


注意:生成URL的代码已更改以保护无辜者。

这不是
urlencode()
的错误,是PHP的自动链接重写在没有会话cookie的情况下通过GET变量添加会话ID

如果客户端禁用了Cookie,恐怕这是在客户端持久化会话所必需的

自动执行此操作的设置为
会话。请使用\u trans\u sid
。更多信息。

不要使用urlencode()对URL进行编码,您将得到这样一个URL

http%3A%2F%2Fwww.google.com

对于PHP来说,这看起来像一个相对URL,所以当缺少cookie时,它会附加SID


urlencode()应该用于编码查询字符串参数,而不是URL本身。

这就是诀窍。这是一个类似facebook的按钮的查询参数。