バインドされた値に引用符が含まれているため、機能していません。それらを削除します。
userLogin=':login'
なので
userLogin=:login
「このように使用したときに、ユーザー名が取得されていないかどうかの確認が機能しました」
WHERE userLogin='$usernameLC'
- 上で既に述べたように、バインド内の引用符を削除する必要があります。また、以下に示すように、接続に PDO を使用していることを確認してください。その場合。
を使用setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
すると、構文エラーが通知されます。
準備して実行するために、PDO で準備済みステートメントを使用する方法を読んでください。
洞察:
ベースではなく PDO 接続を実際に使用していることを確認してくださいmysqli
(不明です)。OPmysqli_
がPDOに接続してクエリを実行するために使用する、これらのタイプの質問をよく見かけます。
これらの異なる MySQL API は互いに混在しません。
接続に使用している場合mysqli_
:
ファイルの先頭にエラー レポートを追加します。これは、POST 配列に関するエラーやその他のエラーの可能性がある場合に、そのエラーを見つけるのに役立ちます。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
補足:エラー報告はステージングでのみ行うべきであり、本番環境では決して行うべきではありません。
編集:
「ありがとう、うまくいきました。しかし、ログインするときに、送信されたパスワードを DB のパスワードと比較すると、false が返されます。受信したパスワードを $_SESSION['test'] に保存して、何が得られるかを確認すると、print_r($_SESSION); が返されます。 me this : Array ( [test] => Array ( [userPwd] => test12 [0] => test12 ) ) (test12 はパスワード、userPwd はデータベースのパスワード フィールド)
パスワードの使用についてあなたが残したコメントに関して。
パスワードをハッシュではなくプレーンテキストで保存しているようです。これは、セッションに保存されるだけでなく、非常に推奨されません。非常に悪い考えです。
ハッシュされたパスワードのスタックに関するこの Q&A を参照してください。
PHPのpassword_hash()
関数とpassword_verify()
関数を使用します。
PHP < 5.5 の場合は、password_hash() compatibility pack
.
ハッシュされたパスワードを保存するときの列のタイプと長さに関する注意。
- パスワード列は
VARCHAR
.
- また、ハッシュを格納するのに十分な長さである必要があります。
- 使う
VARCHAR(255)
のが一番です。