我有两个问题。
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>
";
这似乎工作正常。我检查了我的浏览器中的cookie(没有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代码,但我仍然遇到问题。
答案 0 :(得分:1)
1。)mcrypt_ecb的输出不是字符串安全的。 base64-在加密后对其进行编码并在解密之前对其进行解码
2。)标题必须在任何其他文本之前发送 - 这意味着不仅没有“echo”,“print *”等,而且文件中的标记之外也没有文本。常见错误是.php文件开头的空格或BOM标记