2012-01-05 98 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