网址编码无法正常工作
我正在写我的第一个网络应用程序(仍然!),并且激活用户帐户时出现问题。网址编码无法正常工作
我设置的方式是新用户填写名称,电子邮件地址和所有的表单。他们提交它,我的应用程序发送一个链接到他们提供的电子邮件地址。他们点击该链接,通过(通过GET)传递随机代码和他们的电子邮件地址 - 激活他们的帐户。
为了做一些调试,我想我会尝试从不同的电子邮件服务。 Hotmail的作品,我自己的电子邮件工程,但Gmail不。如果你点击我的'激活'链接在Gmail中,404 Not Found错误弹出。所以我将问题缩小到了如何编码链接。
这里是在Gmail中的链接(不工作):
mywebsite.com/PHP+App+Files/App1/ln_activate.php?x=userx%40gmail.com&y=9c7b35bbdf1b0d24b0eda62f670c1456
当我改变一到这一点:
mywebsite.com/PHP%20App%20Files/App1/[email protected]&y=9c7b35bbdf1b0d24b0eda62f670c1456
...它的工作。我可以看到差异是什么,但为什么gmail会这样做,并且没有人对解决方法有任何建议?
谢谢!
我建议你不要在任何Web服务器使用的空间在文件夹的名字,我认为这将解决您的错误404问题:
重命名PHP App Files
为PHP_App_Files
而且我personnally不喜欢因为通常服务器使用高瓶盖与高瓶盖之间的区别。但这是个人习惯。
您还可以使用urlencode()和urldecode()来处理您的URL参数。
尝试base64 encoding电子邮件中链接的电子邮件地址。然后,base64在处理验证的页面上解码它。
谢谢 - 我会阅读base64编码,看看它是如何发展的。 – 2010-12-08 14:03:42
的解决方案是
$url ="some url";
$encoded = urlencode($url);
$decoded = urldecode($encoded);
这是一个完美的解决方案。
感谢JapanPro。我在那里已经有'urlencode'了,我认为问题在于我的路上有空位,我不应该这样做。 – 2010-12-08 14:05:55
我敢打赌,问题是urlencode()
将空格转换为+而不是%20。改为拨打rawurlencode()
。
PHP中的URL编码实际上很复杂。
为了在HTML中正确形成链接,您需要了解几项功能:urlencode,rawurlencode和htmlentities。这里有一个使用全部三个的相当人为的例子:
<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="http://example.com/department_list_script/',
rawurlencode('sales and marketing/Miami'),
'?',
htmlentities($query_string),
'">';
?>
'; ?>
您的问题是由不正确的编码引起的。希望通过这个例子和PHP文档你可以修复它!
你解码它回来吗? – 2010-12-08 01:24:57
你如何发送你的电子邮件? – 2010-12-08 01:27:24
我不解码它,我用phpmailer发送....是你的意思吗? – 2010-12-08 01:41:03