2014-01-15 2 views
0

Я создаю логин, где зарегистрированный пользователь может Войти с помощью электронной почты и пароля (используйте 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 */ 


?> 

когда пользователь войти в это перепроверить идентификатор электронной почты и пароль в базе данных.

поэтому для этого я написал функцию расшифровки, чтобы соответствовать паролю, и если адрес электронной почты совпадает с паролем, тогда пользователь будет входить в систему.

код:

<?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

Смежные вопросы