2014-01-15 57 views
0

我正在創建登錄,其中註冊用戶可以使用那裏登錄Emailid和密碼(使用Lampp)。mcrypt_decrypt在其他php文件中使用時不起作用

我有一個形式,其中用戶與有信息登記即用戶名,EMAILID,密碼等

然後而在MySQL數據庫中插入數據我正在加密密碼。

代碼:

<?php 


    define("ENCRYPTION_KEY", "[email protected]#$%^&*"); 

    $finalarray=array(); 


    $finalarray['UserName']= $_POST["fname"]; 

    $finalarray['EmailID']= $_POST['email']; 
    $password = $_POST['pwd']; 

    $encrypted = encryptIt($input); 
    $finalarray['Password']= $encrypted; 



function encryptIt($q) 
{ 
    $cryptKey = 'qJB0rGtIn5UB1xG03efyCp'; 
    $qEncoded  = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), $q, MCRYPT_MODE_CBC, md5(md5($cryptKey)))); 
    return($qEncoded); 
} 


/* code for insert into database */ 


?> 

當用戶在登錄它是跨檢查數據庫中的電子郵件ID和密碼。

因此,我寫了解密函數來匹配密碼,如果emailid與密碼匹配,那麼用戶將登錄。

的代碼是:

<?php 
include 'ConnectionDatabase.php'; /database connnection 
define("ENCRYPTION_KEY", "[email protected]#$%^&*"); 


ob_start(); 
session_start(); 

$username = $_POST['email']; 
$password = $_POST['password']; 




$connection= connection(); //connected 

$username = mysql_real_escape_string($username); 
$query = "SELECT EmailID,Password 
     FROM User 
     WHERE EmailID = ".'$username'; 






$result = mysql_query($query); 

if(mysql_num_rows($result) == 0) // User not found. So, redirect to login_form again. 
{ 
    echo "Not Valid User"; 
    header('Location: login.html'); 
} 



$row=mysql_fetch_array($result); 

$encryptpassword=$row[1]; 

echo $encryptpassword."<br>"; 


$decrypted = decryptIt($encryptpassword); 




echo $decrypted; //no value is coming 




if($password != $decrypted) // Incorrect password. So, redirect to login_form again. 
{ 
    header('Location: login_fb.php'); 
}else{ // Redirect to home page after successful login. 
     echo "login"; 
    session_regenerate_id(); 
    $_SESSION['sess_user_id'] = $userData['id']; 
    $_SESSION['sess_username'] = $userData['username']; 
    session_write_close(); 
    //header('Location: creatememorial.php'); 
} 



function decryptIt($q) { 
    $cryptKey = 'qJB0rGtIn5UB1xG03efyCp'; 
    $qDecoded  = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($cryptKey), base64_decode($q), MCRYPT_MODE_CBC, md5(md5($cryptKey))), "\0"); 
    return($qDecoded); 
} 
?> 

回聲$解密;不打印任何想法。

我參考this當我在一個程序中做到這一點的工作。

當我使用這兩個PHP文件它不工作。

我不知道是什麼問題。

任何人都可以幫助我。

回答

0

你要走很長的路。

只需加密用戶密碼並在數據庫查詢中使用加密的密碼即可。

例子:

$username = $_POST['email']; 
$password = $_POST['password']; 

$connection = connection(); 

$username = mysql_real_escape_string($username); 
$password = encryptIt(mysql_real_escape_string($_POST['password'])); 

$query = "SELECT EmailID,Password 
      FROM User 
      WHERE EmailID = '".$username."' AND Password = '".$password."'; 

如果它返回一個排 - 存在與電子郵件地址的用戶,並且該密碼。

作爲一個側面說明;不再推薦使用mysql_*函數 - 您應該切換到mysqli_*庫,或者甚至更好地使用準備好的語句。

此外 - 您使用MD5生成散列,您不能解密散列 - 這是一種單向轉換。

+0

感謝您的回覆。但是當我插入密碼在數據庫中加密fcygGLqlfhk6J7w7XuMGWgpQOJWizlAUFi2Yt5/Q68xM =並在登錄時相同的密碼是zPr2eL6eOtJXa91J9W + C/XG32j4bvk0lZ5AmcFS9vR4 =我沒有得到什麼問題,請幫助我這一點。 – user3184286

+0

是的,所以如果你在登錄時加密用戶輸入的密碼 - 它將匹配數據庫中的字符串,如果它是正確的。 – Ryan

+0

密碼相同。但它賦予不同的價值。問題是什麼 – user3184286

相關問題