好的,所以我的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中完全传递它?
答案 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_uuencode和convert_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