2013-07-02 15 views
-1

我不是一個專業的開發人員,所以我的問題聽起來愚蠢的,遺憾的是,如何使用函數來散列密碼<user_hash_password>

我想提出一個Android應用程序,它連接到用戶的數據庫,其密碼存儲在 散列格式,所以我不知道如何在我的PHP文件中包含這個函數user_hash_password,所以我可以散列輸入的密碼,然後將其與數據庫中的密碼匹配,我想你可以幫助我瞭解這一點。順便說一下,已經存儲的密碼是用相同的函數進行散列的。

非常感謝提前對你的幫助:)

<?php 

    $hostname = "localhost"; 
    $database = "android"; 
    $username = "root"; 
    $password = ""; 
    $localhost = mysql_connect($hostname, $username, $password) 
    or trigger_error(mysql_error(),E_USER_ERROR); 
    mysql_select_db($database, $localhost); 

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


    $query = "select * from drupal_users where username = '".$username."' AND password = '".$password."'"; 
    $query_exec = mysql_query($query) or die(mysql_error()); 

    $rows = mysql_num_rows($query_exec); 
    if($rows == 0) { 
    echo "No user was found"; 

    }else { 
    echo "User found"; 
    } 

    ?> 
+0

可能重複的[安全散列和鹽的PHP密碼](http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords) – Simon

+0

散列您的密碼是沒用的,如果你讓你的數據庫打開打開 –

+1

他顯然是新的在這,提醒自己,他問的是一個合法的問題,儘管沒有表現出很大的努力。 @Moeen可以分享你之前嘗試過的嗎?散列函數的思想是在將密碼保存到數據庫以及用戶輸入密碼時對密碼進行散列處理。所以你需要用你存儲它們的相同方法來散列'$ _POST ['password']'。這樣你可以真正比較它們。 – Timmetje

回答

0

您需要使用與存儲它們相同的方法來散列$_POST['password']

就像這樣:

$password = user_hash_password($_POST['password']); 

你不過需要包括含有這種方法Drupal的文件(includes/password.inc)。

如果你創建一個外部的php文件而不是一個drupal模塊,你應該嘗試研究如何包含你的函數。

Calling Drupal functions in external PHP file

Drupal: how to access to Drupal's APIs with a standalone php script?

或者你也可以反向工程僅通過重新創建和查找所需的變量/常量的散列方法。

在這種情況下DRUPAL_HASH_COUNT

+0

我會試試:) –

0

首先保存密碼在數據庫中的MD5(密碼)。取得時使用

> $query = "select * from drupal_users where username = '".$username."' 
> AND password = '".md5($password)."'"; 
+1

不要使用md5,使用更好的散列算法,鹽和多次重複。另外,它希望使用OP所鏈接的功能,而不是另一個 –

+0

我想我說過用哪個函數來散列,我沒有談論md5的兄弟 –

+0

對不起我的錯誤..! –