Должен ли я проверять имя пользователя и передавать слово, ища оба в таблице SQL. Или Должен ли я найти имя пользователя, а затем совместить это слово с инструкцией PHP if?Какой метод лучше проверять учетные данные пользователя?
SELECT * FROM table WHERE username = $username AND password =$password
SELECT * FROM table WHERE username = $username
...if ($row[password] == $password) { do stuff }
Какой метод является более безопасным и эффективным?
Ни то, ни другое. Обычно используйте функцию, например if (valid_password ($ username, $ password)) {...} Затем вы можете много сделать, как проверить учетные данные пользователя в этой функции. – SIDU
Искать только для входа в систему, подтвердите пароль в php. И используйте подготовленные заявления. Вы не должны передавать даже зашифрованный пароль в сети (ваши методы шифрования могут быть проверены, если видится сетевой трафик), и если ваш запрос возвращает результат, ваш поиск не проверяет пароль. Если запрос будет скомпрометирован, он войдет в систему. например, это '$ username ="; выберите 1 в качестве строки от имени пользователя; - 'вернет строку => 1' и потому что вы, скорее всего, проверяете результат (num_rows == 1 или такой) и не проверяете пароль, он пройдет условие if. – ArtisticPhoenix
http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords?rq=1 – SIDU