由于电子邮件已在url中进行编码,因此我试图对其进行解码,但是urldecode()
函数不会对其进行解码。
我也尝试过rawurldecode()
,然后尝试先对自己进行编码,然后再对其进行解码,但其编码方式仍然类似于%40,而不是@符号。
代码如下:
$isValid = ! User::emailExists(urldecode($_GET['email']));
我得到这样的东西:
http://localhost/account/validate-email?email=some_email%40gmail.com
答案 0 :(得分:0)
我做了一个简单的测试:
<?php
$email = "some_email%40example.com";
var_dump($email);
var_dump(urldecode($email));
var_dump(rawurldecode($email));
(预期)输出为:
字符串(24)“ some_email%40example.com”
字符串(22)“ some_email@example.com”
字符串(22)“ some_email@example.com”
因此解码按预期进行。
是否正在查看一个示例,其中您认为的%40
实际上是其他内容,例如包含Unicode字符的序列,而这些字符只有看起来像您期望但实际上有所不同?
答案 1 :(得分:0)
$ _ GET自动解码,确定您首先正确地编码了网址吗?
还请记住,您还应该注意放入HTML属性的url的编码:
可能是您在双重编码和/或编码错误!