在PHP中加密字符串

时间:2011-09-28 18:51:06

标签: php variables customization

好的,所以我的php脚本如下:

<?php
$name = "Steve Jobs";
header('Location: http://www.apple.com/custom.php&name=' . $name);
?>

现在,我碰巧发现这种自定义“你好,史蒂夫·乔布斯”页面的网址为http://www.apple.com/custom.php&name=Steve%20Jobs的网址,并因此希望对其进行编码,这有点令人尴尬。

是否有一种简单的方法可以使这个名字更加模糊?有没有办法避免在URL中完全传递它?

4 个答案:

答案 0 :(得分:4)

为避免在网址中传递变量,您可以使用$_SESSION数组使用session variables

您可以查看某些basic usage的PHP文档以及其他示例。

答案 1 :(得分:1)

最简单的方法是base64_encode($ name),然后是另一端的base64_decode。

答案 2 :(得分:0)

首先,您可以将名称存储在cookie或会话中,在下一页上阅读,然后将其从session / cookie中删除。这样,它无论如何都不会包含在URL中

如果您只是不想将其作为纯文本传递,则可以使用base64_encode()和base64_decode()。但这不会阻止任何有经验的用户阅读实际值。

使用mcrypt()来加密消息,使用base64_encode()将加密版本设为ASCII,将其包含在URL中,然后在下一页上解码然后解密。小心,许多削片机使用种子值,也必须保存并发送到下一页,以便能够解密。

所有方案都假定下一页是同一个应用程序的一部分(或者两个应用程序都属于您的应用程序)。如果要加密任何URL的字符串,则不能,因为您重定向到的页面将无法读取它。

答案 3 :(得分:0)

尝试使用这些PHP函数convert_uuencodeconvert_uudecode

比仅使用base64

更安全
function encrypt_decrypt ($data, $encrypt) {
    if ($encrypt == true) {
        $output = base64_encode (convert_uuencode ($data));
    } else {
        $output = convert_uudecode (base64_decode ($data));
    }
    return $output;
}

$enc_txt = encrypt_decrypt ("TEXT PLAIN", true);
echo $enc_txt."\n";
// KjUkNTg1IiEwMyQlKTNAYGAKYAo=
echo encrypt_decrypt ($enc_txt, false);
// TEXT PLAIN