PHP urldecode()函数无法用于电子邮件验证

时间:2019-05-30 11:48:48

标签: php urldecode

由于电子邮件已在url中进行编码,因此我试图对其进行解码,但是urldecode()函数不会对其进行解码。

我也尝试过rawurldecode(),然后尝试先对自己进行编码,然后再对其进行解码,但其编码方式仍然类似于%40,而不是@符号。

代码如下:

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

我得到这样的东西:

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

2 个答案:

答案 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的编码:

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