php查询字符串参数

时间:2012-02-26 23:06:09

标签: php

我一直在摸不着这个,即使它不应该那么难......我正试图通过GET查询字符串传递电子邮件NOT POST我想掩盖这封电子邮件我不知道只要电子邮件没有显示在网址中,真正关心有一个好的加密或任何东西...无论如何我试图加密它并使用mcrypt_generic解密它。我遇到的问题是加密后它会将电子邮件转换为各种字符,例如:“ñ¯üŸPsúœœá`agœ”我想返回正常的字母数字字符,所以我尝试在那上面做一个hex2bin而且效果很好问题是在php5中没有bin2hex!并且我已经尝试了我在网上发现的功能以恢复此更改并且它可以正常工作,但是如果你比较if语句中的字符串它们不匹配,那么当我解密它时,它不会返回我最初通过的价值相同。无论如何,我想知道是否有人可以给我一些关于我如何通过GET传递电子邮件而没有电子邮件可读的建议,然后在我的代码读取参数时将其恢复正常。

这些是我的加密方法和hex2bin函数的转换器:

function encrypt($data)
{
$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
if (mcrypt_generic_init($cipher, _QRYKEY, _IVKEY) != -1)
{
    $encrypted_data = mcrypt_generic($cipher,$data );
    mcrypt_generic_deinit($cipher);
}

return bin2hex($encrypted_data);
}

function decrypt($data)
{
$cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
if (mcrypt_generic_init($cipher, _QRYKEY, _IVKEY) != -1)
{
    $decrypted_data = mdecrypt_generic($cipher,hex2bin($data));
    mcrypt_generic_deinit($cipher);
}

return $decrypted_data;
}

function hex2bin($h)
{
if (!is_string($h)) return null;

$r='';
for($a=0; $a<strlen($h); $a+=2)
{
    $r.=chr(hexdec($h{$a}.$h{($a+1)})); 
}

return $r;
}

2 个答案:

答案 0 :(得分:4)

使用base64_encode()以文本安全格式编码任何,并使用base64_decode()获取原始数据

答案 1 :(得分:2)

只需使用urlencode()转换另一方的所有"ñ¯üŸPsúœœ áagœcharacters before sending them into the URL and and urldecode()`。

http://php.net/manual/en/function.urlencode.php