はい、strtolower機能を使用してください。ただ、このような何かをする必要があります。
if(strtolower($username) == strtolower($usernameEntered))
isset()とempty()用として、彼らは確かに異なっているが、多くの場合、彼らはあなたに同じ結果を与えるでしょう。 isset()は、変数がすべて設定されているかどうかを示します(しかし、値はまだ設定できます)。 empty()は、変数が何かと等しいかどうかを一般的に示します。それぞれのリンク先のPHPドキュメントを参照してください。私は空の文字列と0が空であると考えられるため、empty()をCookieとGET/POSTの値のチェックに使用することをお勧めします。私は変数が設定されているかどうかを確認するためにisset()を使い、探しているデータがあればそれをさらにチェックします。多くの場合、空の文字列を値なしとは異なる方法で扱いたいと思うことがあります。
また、Pekkaは、ユーザー名に基づいてデータベースのアカウントを検索している場合は、本当にそこで小文字に変換する必要があるというコメントを出しました。その場合:
SELECT * FROM users WHERE LOWER(username) = LOWER(:username)
これは、PDOで準備済みのクエリを使用していると仮定しています。それ以外の場合は、:username
の文字列を置き換えてください(文字列の連結などはもちろんです)。
EDIT:このようなクエリでLOWER()を使用すると、比較のためにテーブル内のすべてのユーザー名を小文字に変換する必要があり、フィールド上の任意のインデックスを役に立たなくするため、実際には悪い考えです。より良い方法は、データベースにユーザ名の小文字バージョンを格納し、フィールドにインデックスを格納することです。ユーザーがログインしようとすると、入力した内容を小文字に変換してから比較します。照合はあなたを聞かせます(大文字と小文字を区別しない)_ci
を使用して
SELECT * FROM `users` WHERE `username` COLLATE utf8_general_ci = 'FoObAr'
:
あなたはデータベースクエリを行うために使用しているコードを表示していません –
あなたはどのデータベースシステムを使用していますか?関連するコードを表示できますか? MySQLを使用している場合、ユーザ名が調整なしで保存されている場合(ハッシュなど)、大文字と小文字の区別について心配する必要はありません。 –
あなたのコードは非常に単純化されているので、これはオフかもしれませんが、実際にパスワードを平文で保存していて、ハッシュされていないようです。 – kba