mcrypt_decrypt не работает при использовании в другом файле php

Я создаю логин, где зарегистрированный пользователь может войти в систему с помощью Emailid и пароля (используйте Lampp).

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

затем при вставке данных в базу данных mysql я шифрую пароль.

код:

<?php


    define("ENCRYPTION_KEY", "!@#$%^&*");

    $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", "!@#$%^&*");


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 );
}
?>

echo $decrypted не печатает никаких мыслей.

я ссылался на эту ссылку, когда делал это в одной программе, которая работает.

когда я использую эти два php-файла, они не работают.

не знаю в чем проблема.

может ли кто-нибудь помочь мне в этом.


person user3184286    schedule 15.01.2014    source источник


Ответы (1)


Вы идете очень далеко вокруг этого.

Просто зашифруйте пароль пользователя и используйте зашифрованный пароль в запросе к базе данных.

Пример:

$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, который генерирует хэш, вы не можете расшифровать хеш - это одностороннее преобразование.

person Ryan    schedule 15.01.2014
comment
Спасибо за ответ. но когда я ввожу пароль в базу данных при шифровании fcygGLqlfhk6J7w7XuMGWgpQOJWizlAUFi2Yt5/Q68xM= и при входе в систему тот же пароль zPr2eL6eOtJXa91J9W+C/XG32j4bvk0lZ5AmcFS9vR4= я не понимаю, в чем проблема, пожалуйста, помогите мне в этом. - person user3184286; 15.01.2014
comment
Да, поэтому, если вы зашифруете пароль, введенный пользователем при входе в систему, он будет соответствовать строке в базе данных, если он правильный. - person Ryan; 15.01.2014
comment
пароль такой же. но это дает другую ценность. в чем проблема - person user3184286; 15.01.2014