최근에 내 웹 사이트에서 많은 제안을 받았으며 그 중 하나는 사용자 이름을 소문자로 사용하여 로그인 할 수있게하는 것이 었습니다.사용자 이름으로 로그인하지만 소문자 사용자 이름으로 로그인하십시오.
JoHNdoE가 데이터베이스에있는 사용자 이름과 비슷하다면 로그인을 시도하고 그 대문자를 어디에 두는 지 기억해야한다면 매우 귀찮을 것입니다.
그래서 John Doe이 (가)이 사용자 이름으로 로그인 할 수 있도록 johndoe로 변경했습니다. 기억하기가 훨씬 쉽습니다.
내 쿼리는 현재
$get_user_info = mysql_query("SELECT * FROM users WHERE username = '$entered_username' AND md5_username = '$md5_entered_username' AND password = '$entered_password' LIMIT 1");
입니다 그리고 내가 이것에 대해 갈 것이라고 어떻게
if (mysql_num_rows($get_user_info)==1) {
//then log them in
} else {
//kick 'em out!
}
를 계속 할 것인가?
왜 사용자 이름의 md5 해시를 저장하고 비교합니까? 왜 암호 해시를 저장하지 않습니까? 그건 말이 안돼! – Dan
[SQL 주입] (http : // en.)을 방지하기 위해 [PHP Prepared Statements] (http://php.net/manual/en/pdo.prepared-statements.php)를 사용하지 않는 PHP 코드를 보았을 때 걱정이됩니다. wikipedia.org/wiki/SQL_injection) 취약점. 여기에 붙여 넣지 않은 코드에서 변수를 살균하기를 바랍니다. 그렇지 않다면, 변수를 살균하려고 시도하는 대신 PDO Prepared Statements를 사용하도록 코드를 다시 작성하십시오. – sarnold
와우, 당신은 SQL 주입을 위해 활발히 활동하고 있습니다. [PHP에서 SQL 주입을 중단하는 가장 좋은 방법] (http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php)에서 SO 스레드를 확인하십시오. – sczizzo