1

データベースからパスワードを 1 つだけ受け取ることがわかっている場合、クエリの結果を配列に入れる必要がありますか? 私は使用しています:

$sql = 'SELECT password FROM users WHERE userName="'.$username.'" LIMIT 1';
$result = $con->query($sql);
$row = $result->fetch_array(MYSQLI_NUM);
$hash = crypt($password,$row[0]);
if($row[0] == $hash){}
4

3 に答える 3

0

データベースにハッシュを保存している場合(そうすべきです)、再度ハッシュする必要はありません。また、ユーザー入力で準備済みステートメントを使用します。

$sql = $con->prepare("SELECT password FROM users WHERE userName=? LIMIT 1 ");
$sql->bind_param("s", $username);
$sql->execute();
$sql->bind_result($password_db);
while ($sql->fetch()) {

$hash = crypt($password,$password_db);
if($password_db == $hash){}

    }

http://www.php.net/manual/en/mysqli-stmt.prepare.php

于 2013-06-23T01:36:54.810 に答える
0

代わりに使用できますlist

list($passwd) = $result->fetch_array(MYSQLI_NUM);

if($passwd == $hash) {

};

PHPリファレンスはこちら

于 2013-06-23T00:55:59.450 に答える
0

$result->fetch_array(MYSQLI_NUM) は配列型を返すため、直接参照できます。

if($result->fetch_array(MYSQLI_NUM)[0] == $hash) ...

于 2013-06-23T00:56:32.183 に答える