SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.08.2007 17:00:37

wesst
Участник
Зарегистрирован: 01.08.2007
Сообщений: 7

mysql + php

проблема вот в чем. имеется код:

    //проверяем есть ли пользователь с таким login'ом и password'ом
    $res=mysql_query("SELECT * FROM Table1 WHERE login='".$_POST['login']."' AND parol='".$_POST['pass']."'", $db);
       
        $$num_rows=mysql_num_rows($res);
        if($$num_rows==0){
        echo "Введены не верные логин/пароль или в данный момент происходит обновление базы.";
    }
    else{    //пользователь найден

$sql = "SELECT id, nrep, login, parol, nam, nrow, detail, sn, status, diagnoz FROM Table1 WHERE login = '".$_POST['login']."' AND parol = '".$_POST['pass']."'";
  $res = mysql_query($sql) or exit('Ошибка при выполнении запроса к базе данных.');
  if ($num_rows<1) {

echo $num_rows;
$row = mysql_fetch_assoc($res);
print "<div align=left><b>Учетное имя клиента:</b> ";
print $row['login'];
print "<br><b>Клиент: </b>";
print $row['nam'];
print "<br></div>";


выборка происходит даже если пароль пишешь маленькими буквами или большими. в базе самой лежат пароли в разных регистрах (ТипАТакоГа). а тут скрипт выдает данные, даже если все маленькими или всебольшими написать... что не так делаю?

Неактивен

 

#2 01.08.2007 17:14:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: mysql + php

У вас в базе стоит сопоставление, которое игнорирует регистр букв.
Вы можете выставить другое сопоставление (например,
ALTER table MODIFY column VARCHAR(40) COLLATE cp1251_general_cs).

Я, однако, советую Вам хранить не сами пароли, а их хеши, и сравнивать
хеш пароля с тем, что хранится в базе. Это гарантирует, что пароли не
будут добыты, если произойдет утечка базы. Заодно, это решит проблему
с чувствительностью паролей к регистру.

Неактивен

 

#3 02.08.2007 11:30:00

wesst
Участник
Зарегистрирован: 01.08.2007
Сообщений: 7

Re: mysql + php

на примере моего скрипта работу с md5 как реализовать?

Неактивен

 

#4 02.08.2007 11:36:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: mysql + php

Лучше SHA1 smile

$res=mysql_query("SELECT * FROM Table1 WHERE login='". addslashes($_POST['login'])."' AND parol=SHA1('".addslashes($_POST['pass'])."')", $db);

Неактивен

 

#5 02.08.2007 13:32:11

wesst
Участник
Зарегистрирован: 01.08.2007
Сообщений: 7

Re: mysql + php

да все круто канечна. но у меня данные грузяться с рабочего компа с 1с. там 1с генерит пассы. чет у мя вызявает сомнения что 1си умеет генерить их в sha1.

Неактивен

 

#6 02.08.2007 14:18:38

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: mysql + php

А кто мешает при заведении пользователя (ведь пароль в открытом виде доступен, насколько
я понимаю) делать SHA1 от открытого пароля средствами MySQL?

P.S. Функция MD5() тоже есть smile

Неактивен

 

#7 02.08.2007 14:43:49

wesst
Участник
Зарегистрирован: 01.08.2007
Сообщений: 7

Re: mysql + php

типа при вставке данных в мискул прописать:

$Query="insert into Table1 values('$id','$nrep','$login',md5('$parol'))";

mysql_query($Query);

а при чтении из нее и проверке:

$res=mysql_query("SELECT * FROM Table1 WHERE login='".$_POST['login']."' AND parol=md5('".$_POST['pass']."'"), $db);

так я понимаю????

Отредактированно wesst (02.08.2007 14:44:42)

Неактивен

 

#8 02.08.2007 16:11:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: mysql + php

Да, только не забывайте про addslashes().

Неактивен

 

#9 03.08.2007 10:44:41

wesst
Участник
Зарегистрирован: 01.08.2007
Сообщений: 7

Re: mysql + php

хм. попробывал. чет не катит. в базу пишу так:

$Query="insert into Table1 values('$id','$nrep','. addslashes(['login']).',MD5('".addslashes($_POST['parol'])."'),'$nam')";

mysql_query($Query);


а потом проверяю так:

          $res=mysql_query("SELECT * FROM Table1 WHERE login='". addslashes($_POST['login'])."' AND parol=md5('".addslashes($_POST['pass'])."')", $db);

        $$num_rows=mysql_num_rows($res);
        if($$num_rows==1){


где я тут ступил... теперь пожизни орет что пасс не верен...

Неактивен

 

#10 03.08.2007 10:51:59

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: mysql + php

В PHP все правильно. Смотрите HTML. Я бы начал с того, что посмотрел на названия
полей. В одном случае в PHP оно у Вас называется parol, в другом - pass.

Неактивен

 

#11 03.08.2007 11:01:46

wesst
Участник
Зарегистрирован: 01.08.2007
Сообщений: 7

Re: mysql + php

smile

пишу в базу в одном файле...

со второго идет передача пасса в код           $res=mysql_query("SELECT * FROM Table1 WHERE login='". addslashes($_POST['login'])."' AND parol=md5('".addslashes($_POST['pass'])."')", $db);

        $$num_rows=mysql_num_rows($res);
        if($$num_rows==1){

потому и разница в переменных... чет не пашет...

Неактивен

 

#12 03.08.2007 11:16:06

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: mysql + php

Думаю, что это уже не вопросы по MySQL smile

Попробуйте вывести переменные, которые доходят до скрипта, посчитать
md5 от пароля, сравнить с тем, что есть в базе... много что можно сделать smile

Неактивен

 

#13 03.08.2007 11:31:15

wesst
Участник
Зарегистрирован: 01.08.2007
Сообщений: 7

Re: mysql + php

ок. спб.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson