1

コード:

$stmt->bind_param("s", md5($input['user'] . $config['salt']));

PHP エラー メッセージ:

変数のみを参照渡しする必要があります

私はこのプロジェクトに取り組んできましたが、今行き詰まっています。私はPHPが初めてです。何をすべきか?

4

2 に答える 2

10

MySQLiのプリペアドステートメントをご利用いただきありがとうございます。それらは苦痛ですが、それだけの価値があります。

bind_param参照により値を取ります。これは、渡す変数を確認し、内部を直接指すことによって行われます。

呼び出しでは、関数呼び出しの文字列の結果を返します-md5この場合。関係する変数がないため、指す内部はありません。PHPは、結果として参照によってデータを渡すことができないことについて泣き言を言っています。

関数呼び出しの結果を変数に貼り付けてから、代わりにその変数をバインドに渡す必要があります。

大きな脂肪の警告! md5はもはや安全なハッシュではないため、パスワードの保存には使用しないでください。機会があれば、bcrypt、PBKDF2、scryptなどのより良いハッシュ形式に更新する必要があります。

于 2012-12-10T04:27:27.387 に答える
4

bind_paramメソッドのすべてのパラメーター (最初のパラメーターを除く) は変数である必要があり、あなたの場合のように関数の戻り値ではありません。参照渡しできるのは変数のみです。

これを念頭に置いて、コードを簡単に変更してエラー メッセージを取り除くことができます。

$input['hash'] = md5($input['pass'] . $config['salt']);
$stmt->bind_param("ss", $input['user'], $input['hash']);
于 2012-12-10T06:24:32.957 に答える