2016-05-30 10 views
2

あるときに、私は(暗号化されたパスワードを使用して)私のテーブルのユーザーを持っていたとsymfonyはアンドロイドでログインを確認し、パスワードが暗号化されbcryptの

のsecurity.yml

security: 
encoders: 
    FOS\UserBundle\Model\UserInterface: bcrypt 

と私を接続しようとすると罰金、それを使用していますアンドロイドアプリケーションを使用していますが、パスワードが暗号化されている可能性はありません。私は新しいLibaryをphp/lib/password.phpに追加して "password_hash($ password、PASSWORD_DEFAULT)"を使用しようとしました。

一緒の解決策、私は本当にそれについて動揺しています。

これはDB

<?php 

    define('HOST','localhost'); 
    define('USER','root'); 
    define('PASS',''); 
    define('DB','swib'); 

    $con = mysqli_connect(HOST,USER,PASS,DB); 

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

    $password2 = password_hash($password, PASSWORD_DEFAULT); 

    $sql = "select * from swib_user where username='$username' and password='$password2'"; 

    $res = mysqli_query($con,$sql); 



    $check = mysqli_fetch_array($res); 

    if (isset($check)) { 
     echo 'success'; 
    } else { 
     echo 'failure'; 
    } 

    mysqli_close($con); 

?> 

PSに私のAndroidアプリを接続するhtdocsの下に私の「login.php」である:それは仕事の罰金別のDB(私は暗号化されていない、通常のパスワードを使用して平均)

+0

あなたはマニュアルをチェックする必要があります。塩が変化するたびに新しいハッシュが毎回違うでしょう。 'password_verify'が必要です。 – jeroen

+0

@jeroenありがとう、私はあなたの解決策を試してみるが、それでも動作していない。 – zlot

答えて

0
とです
<?php 

// if this is under web folder 
// adjust it according where this script is located 
require_once '../vendor/autoload.php'; 

use Symfony\Component\Security\Core\Encoder\BCryptPasswordEncoder; 

$encoder = new BCryptPasswordEncoder(16); // initialize with some int between 4 and 31 

define('HOST', 'localhost'); 
define('USER', 'root'); 
define('PASS', ''); 
define('DB', 'database'); 

$con = mysqli_connect(HOST,USER,PASS,DB); 

$username = mysqli_real_escape_string($con, $_POST['username']); // don't forget about security 
$password = $_POST['password']; 

$sql = "select password, salt from swib_user where username='$username'"; // if you do not have salt in your table, remove it from select and leave only password 

$res = mysqli_query($con, $sql); 
$check = mysqli_fetch_array($res); 

// if you do not have salt in your table, you should use returning value of $user->getSalt() method for this user. or null if you don't use salt 
if (isset($check) && $encoder->isPasswordValid($check['password'], $password, $check['salt'])) { 
    echo 'success'; 
} else { 
    echo 'failure'; 
} 

mysqli_close($con); 
関連する問題