php
  • variables
  • customization
  • 2011-09-28 54 views -2 likes 
    -2

    好一个字符串,所以我有一个PHP脚本像下面这样:加密在PHP

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

    现在,我偶然发现它有点儿尴尬有这个风俗“嗨的URL,史蒂夫乔布斯“页面的网址为http://www.apple.com/custom.php&name=Steve%20Jobs,因此希望对其进行编码。

    有没有简单的方法让这个名字更隐晦?有没有办法避免在URL中传递它?

    +5

    乌姆是头什么也不做.... – Neal

    +0

    废话...那么,它工作在我的脚本,所以只要想象它的效果^。^ – DLA

    +0

    是的。要使用'header'重定向,您需要执行'header('Location:http://someaddress.com');'。 – Alex

    回答

    4

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

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

    +0

    虽然不想太过分先进...... – DLA

    +0

    这不是高级PHP。你目前的解决方案可以说是最简单的,其他任何东西都会更复杂。即使如此,并不复杂得多。 – Alex

    1

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

    +0

    这正是我所期待的。谢谢! – DLA

    +0

    我想说,很多人仍然会认识到base64编码,它有一个特点,它很容易解码。如果您的目标是隐藏最终用户的数据,这是一个不好的方法。如果你的目标只是让一个URL看起来更“技术性”......那太糟糕了! – Alex

    +0

    亚历克斯,我同意,这是不理想的。但是,如果他唯一的原因是在URL中有文字看起来很俗气,那么这是对其余代码进行最少更改并实现目标的最简单方法。有人可能会解码它可能不会关心在URL中具有未编码变量的“粘性”,所以它并不重要。 –

    0

    首先,您可以将名称存储在cookie或会话中,在下一页上阅读并从session/cookie中删除它。这样,它将不会被包含在URL中。

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

    使用mcrypt()来加密消息,使用base64_encode()使加密版本的ASCII码包含在URL中,然后在下一页上解码并解密。要小心,很多榨汁机使用种子值,这些值也必须保存并发送到下一页,以便能够解密。

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

    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 
    
    相关问题