|
|
|
| Переменные username и passwd передаются из формы на предыдущей странице.
По идеи сервер должен найти поле в БД с таким же логином и паролем и в случае удачного результата выдать "Вы зарегистрированы как (и тут имя пользователя)".
Но скрипт при любом значении логина и пароля показывает что я зарегистрирован когда таких логинов и паролей в БД нет вообще.
<?
function login() {
if(!empty($_POST['username']) AND !empty($_POST['passwd'])) {
$username = $_POST['username'];
$passwd = $_POST['passwd'];
$connect = new db;
$query = "SELECT * FROM users WHERE username = '".$username."' and passwd = '".$passwd."'";
$result = mysql_query($query);
if($result) {
$log = $username;
}
if(isset($log)) {
echo 'Вы зарегистрированы как '.$log;
}
}
?>
|
Кстати заодно вопрос. Чем лучше будет шифровать пароль md5 или crypt с сальтом? | |
|
|
|
|
|
|
|
для: ChieFSS
(07.06.2007 в 20:58)
| | надо проверять
if (mysql_num_rows($result)) | |
|
|
|
|
|
|
|
для: ChieFSS
(07.06.2007 в 20:58)
| | $result = mysql_query($query);
какой результат мы получаем? - ресурс. Затем вы проверяете
if($result) {
$log = $username;
}
присвоение будет выполняться в случае если условие истинно.
Вы можете например проверять по mysql_num_rows($result) > 0 хотя это тоже не самое верное решение)))
Пароль в БД лучше хранить хэшированным. И запрос строить таким образом
$password = md5($_POST['password']);
$sql = "SELECT `login` FROM `users` WHERE MD5(`password`)=$password";
ну и логин затем сверять)
это просто рекомендация - один из множества вариантов реализации) | |
|
|
|
|
|
|
|
для: hammet
(07.06.2007 в 21:37)
| | Я решил вначале проверить логин т.к. он не может быть одинаковым в отличие от пароля.
<?
$query = mysql_query("SELECT * FROM users WHERE username = '".$username."'");
if($query) {
if (mysql_num_rows($query) > 0) {
echo 'Есть такой логин. Авторизация возможна';
}
else {
echo 'Такого логина не существует';
}
}
?>
|
На месте строчки "echo 'Есть такой логин. Авторизация возможна';" должен быть код проверки колонки пароля этого поля.
Как можно реализовать? Что-то в голову не лезет. | |
|
|
|
|
|
|
|
для: ChieFSS
(07.06.2007 в 22:09)
| | Это еще хуже чем предыдущее.
Но если уж Вам так хочется....
SELECT * FROM users........
тут Вы извлекли данные. Преобразуйте их в массив и сравните пароль из БД с паролем переданным из формы.
ЗЫ и советую почитать что нибудь про SQL-инъекции | |
|
|
|
|
|
|
|
для: hammet
(07.06.2007 в 22:22)
| | А все.. просто не увидел что по логину выводится. Теперь все работает.
Спасибо.
>ЗЫ и советую почитать что нибудь про SQL-инъекции
А что-нибудь это что? Я читал, но как защищаться еще не думал | |
|
|
|