2012-01-05 50 views
0

我有两个问题。PHP mcrypt和重定向错误/问题

1)我遇到了使用mcrypt解密信息的问题。

加密代码:

$username = mcrypt_ecb(MCRYPT_SAFER128, "*password*", $username, MCRYPT_ENCRYPT); 
$password = mcrypt_ecb(MCRYPT_SAFER128, "*password*", $password, MCRYPT_ENCRYPT); 
echo " 
<script type=\"text/javascript\"> 
<!-- 
document.cookie = 'username=$username; expires=0; path=/' 
document.cookie = 'password=$password; expires=0; path=/' 
//--> 
</script> 
"; 

这似乎很好地工作。我在浏览器中检查了cookies(没有mcrypt语句)有用户名和密码,他们看起来很乱。我用这个解密:

$username = $_COOKIE['username']; 
$password = $_COOKIE['password']; 
$username = mcrypt_ecb(MCRYPT_SAFER128, "*password*", $username, MCRYPT_DECRYPT); 
$password = mcrypt_ecb(MCRYPT_SAFER128, "*password*", $password, MCRYPT_DECRYPT); 

而得到这个错误:

警告:mcrypt_cbc()[function.mcrypt-CBC]:模块初始化失败*文件路径*上线14

2)我正在尝试使用php进行重定向。我使用JavaScript,但用户可以关闭它,然后重定向不起作用。所以我用了以下内容:

header('Location: *URL*'); 

,我得到这个错误:

警告:不能更改头信息 - 头已经发出(输出开始*文件路径和行号*)在*文件路径*在线31

我试过寻找这个,一群人似乎有这个问题,但我似乎无法得到它的工作。我有上面的任何HTML代码的PHP代码,但我仍然遇到问题。

回答

1

1.)mcrypt_ecb的输出不是字符串安全的。在加密之后进行base64编码并在解密之前对其进行解码

2.)标题必须在任何其他文本之前发送 - 这意味着不仅没有“echo”,“print *”等,而且也没有标签之外的文本你的文件。常见错误是在.php文件开头的空格或BOM标记

+0

谢谢,我会在明天或本周末尝试加密的东西。至于标题,我有所有的PHP东西高于所有的HTML的东西,所以没有标签,并且在重定向之前没有回显或打印语句,所以我不知道空白是从哪里来的。我正在使用Dreamweaver,可能会导致问题? – gmaster 2012-01-05 02:59:01

+0

我无法评论Dreamweaver。查找空白的好方法是在十六进制编辑器中打开文件,并查明第一个字节是0x3C – 2012-01-05 03:12:08