<?php
$log=$_POST['login'];
$password=$_POST['password'];
$link = @mysql_connect("localhost","somename", "")
or die("невозможно открыть библиотеку" .mysql_error());
mysql_select_db("reg", $link)or die ('Не могу выбрать БД');
$query = "SELECT * FROM msregister";
$result=mysql_query($query);
while($myrow = mysql_fetch_array($result))
{
echo $myrow['login']."<br>";
if (strcmp($myrow['login'],$log))
{
if (strcmp($myrow['password'],$password))
{
echo "Вы вошли на сайт, как ".$myrow['login'];
setcookie ('logi',$myrow['login']);
echo $myrow['login'];
breake;
}
else
{
echo 'no pasword'."<br>";
}
}//if (empty
echo "Вы вошли на сайт, как гость <br>";
//else
}//while($myrow
?>
Этот код должен проверять существование записи в базе данных. Короче ригистрация из формы. Все идет по плану до проверки переменных из бд и тех что ввел из формы. он их проверяет и даже проходит вторую проверку на код но выдает результат который стоит следующим в бд. Тоесть в бд записано login: admin pasword:8888 потом значит идет login: natasha pasword: kisla. Я в форме заношу логин и пасворд админа он выдает что я зашол под именем наташи. Я вобщето начинающий в php до этого работал на С++ думаю что это чото с циклом while. Помогите пожалуста разобратся. Зарание спасибо
Спустя 5 часов, 56 минут, 7 секунд (1.05.2012 - 17:14) Игорь_Vasinsky написал(а):
1. в БД храни хеш пароля
2. Достаточно посмотреть - вернёт ли запрос больше 0 (mysql_num_rows($query)) при условии совпадения логина и хеша пароля
логин в БД проверяй с mysql_real_escape_string()
пароль - не нужно - всё равно тока хеши сравниваешь.
2. Достаточно посмотреть - вернёт ли запрос больше 0 (mysql_num_rows($query)) при условии совпадения логина и хеша пароля
логин в БД проверяй с mysql_real_escape_string()
пароль - не нужно - всё равно тока хеши сравниваешь.
Цитата |
breake; |
break;
но этого тут не надо.
Спустя 3 часа, 9 минут, 37 секунд (1.05.2012 - 20:24) Гость_Alex написал(а):
if (strcmp($myrow['password'],$password)==0)
если ты так имел ввиду то ЗАРАБОТАЛО. А мож есть какой другой способ, подсобите пожалуста, бо мне так не нравится, слишком много на сервере операцый цыкл проводит. может есть функция которая автоматом значение из ячейки выводит
Спустя 1 час, 26 минут, 7 секунд (1.05.2012 - 21:50) sergeiss написал(а):
Гость_Alex - я вот что не понял... А ты слышал про WHERE, т.е. про условия, которые пишутся в SQL-запросах для того, чтобы сразу выбрать только нужные данные? Если нет, то сначала прочитай про запросы.
В ПХП надо передавать только необходимый минимум данных, всё остальное должно обрабатываться на SQL-сервере.
В ПХП надо передавать только необходимый минимум данных, всё остальное должно обрабатываться на SQL-сервере.
Спустя 5 минут, 31 секунда (1.05.2012 - 21:56) Игорь_Vasinsky написал(а):
не нужно делать выборку всех строк) я же написал "mysql_num_row()" - ты хоть в гугле глянь примеры.