0

我正在创建登录名,注册用户可以在那里使用电子邮件 ID 和密码登录(使用 Lampp)。

我有一种表格,用户在其中注册用户名、电子邮件 ID、密码等信息。

然后在 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 */


?>

当用户登录时,它会交叉检查数据库中的电子邮件 ID 和密码。

所以为此我编写了解密函数来匹配密码,如果 emailid 与密码匹配,那么用户将登录。

代码是:

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

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

当我在一个程序中执行此操作时,我引用了此链接。

当我使用这两个 php 文件时,它不起作用。

我不知道是什么问题。

谁可以帮我这个事。

4

1 回答 1

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,您无法解密哈希-这是一种单向转换。

于 2014-01-15T08:53:04.573 回答