コード:
$stmt->bind_param("s", md5($input['user'] . $config['salt']));
PHP エラー メッセージ:
変数のみを参照渡しする必要があります
私はこのプロジェクトに取り組んできましたが、今行き詰まっています。私はPHPが初めてです。何をすべきか?
MySQLiのプリペアドステートメントをご利用いただきありがとうございます。それらは苦痛ですが、それだけの価値があります。
bind_param
参照により値を取ります。これは、渡す変数を確認し、内部を直接指すことによって行われます。
呼び出しでは、関数呼び出しの文字列の結果を返します-md5
この場合。関係する変数がないため、指す内部はありません。PHPは、結果として参照によってデータを渡すことができないことについて泣き言を言っています。
関数呼び出しの結果を変数に貼り付けてから、代わりにその変数をバインドに渡す必要があります。
大きな脂肪の警告! md5
はもはや安全なハッシュではないため、パスワードの保存には使用しないでください。機会があれば、bcrypt、PBKDF2、scryptなどのより良いハッシュ形式に更新する必要があります。
bind_param
メソッドのすべてのパラメーター (最初のパラメーターを除く) は変数である必要があり、あなたの場合のように関数の戻り値ではありません。参照渡しできるのは変数のみです。
これを念頭に置いて、コードを簡単に変更してエラー メッセージを取り除くことができます。
$input['hash'] = md5($input['pass'] . $config['salt']);
$stmt->bind_param("ss", $input['user'], $input['hash']);