PHP urldecode() 函数不适用于电子邮件验证



我试图解码电子邮件,因为它已编码在URL中,但urldecode()函数不会解码它。

我也尝试了rawurldecode(),然后尝试先自己编码,然后解码,但它仍然像 %40 而不是 @ 符号一样编码。

这是代码:

$isValid = ! User::emailExists(urldecode($_GET['email']));

我得到这样的东西:

http://localhost/account/validate-email?email=some_email%40gmail.com

我做了一个简单的测试:

<?php
$email = "some_email%40example.com";
var_dump($email);
var_dump(urldecode($email));
var_dump(rawurldecode($email));

(预期的(输出为:

字符串(24( "some_email%40示例.com">

字符串(22( "some_email@example.com">

字符串(22( "some_email@example.com">

因此,解码按预期工作。

难道您正在查看一个示例,其中您认为是%40实际上是其他东西,例如包含 unicode 字符的序列,该字符看起来只与您期望的字符相似,但实际上却有所不同?

$_GET 会自动解码,确定您首先正确编码了 url?

请记住,您还应该注意您放入的 HTML 属性的 url 编码:

可能是您正在双重编码和/或错误编码!

最新更新