Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите поправить провеку пароля

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите поправить провеку пароля
Annyyy
Отправлено: 17 Мая, 2011 - 15:30:24
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2011  
Откуда: Dnepropetrovsk


Помог: 0 раз(а)




есть файл HTML, в котором создана форма:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action='handler.php' method="post">
  3. <input type="text" name="login" />
  4. <input type="password" name="password"/>
  5. <input type="submit" value="send"/>
  6. </form>
  7.  


и файл handler.php с проверкой имени пользователя и пароля:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4.                         $user=$_POST ['login'];
  5.                         echo $user;
  6.                         $passv=$_POST ['password'];
  7.                         echo $passv;
  8.             $enter=array
  9.                         (
  10.                         "user1"=>array ("pass1"),
  11.                         "user2"=>array ("pass2"),
  12.                         "user3"=>array ("pass3")
  13.                         );
  14.                        
  15.                         $flag = FALSE;
  16.                         for ($i=0; $i<count($enter); $i++)
  17.                         if ($enter[$i]=$user)
  18.                         {
  19.                         $flag=TRUE;
  20.                         break;
  21.                         }
  22.                         if ($flag)
  23.                         {
  24.                         if (!strcmp($enter[$i][$user],$passv)) echo "Вход выполнен";
  25.                         else echo "Вход не выполнен";
  26.                         }
  27.  
  28.                
  29. ?>
  30.  
  31.  


в итоге, проверяется только логин почему-то Огорчение . Подскажите, пожалуйста, что не так..

(Отредактировано автором: 17 Мая, 2011 - 15:47:21)

 
 Top
demot
Отправлено: 17 Мая, 2011 - 15:42:09
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010  


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1. foreach ($enter as $key->$val){
  2.     if ($key==$user){
  3.         if($val[0]==$passv) echo "Вход выполнен";
  4.     } else {
  5.         echo "Неверный логин/пароль";
  6.     }
  7. }

Это если пароль хранится в 0-й ячейке массива данных пользователя
 
 Top
Annyyy
Отправлено: 17 Мая, 2011 - 15:49:39
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2011  
Откуда: Dnepropetrovsk


Помог: 0 раз(а)




мне кажется, что бок в этом условии, возможно, кто-то знает как правильно ф-ю strcmp написать? может она у меня неправильная?
PHP:
скопировать код в буфер обмена
  1.  
  2. if ($flag)
  3.                         {
  4.                         if (!strcmp($enter[$i][$user],$passv)) echo "Вход выполнен";
  5.                         else echo "Вход не выполнен";
  6.                         }
  7.  
 
 Top
demot
Отправлено: 17 Мая, 2011 - 15:57:50
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010  


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  if (strcmp($enter[$i][$user],$passv)==0)


int strcmp ( string str1, string str2 )

Возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны.

(Отредактировано автором: 17 Мая, 2011 - 15:59:07)

 
 Top
Annyyy
Отправлено: 17 Мая, 2011 - 16:00:31
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2011  
Откуда: Dnepropetrovsk


Помог: 0 раз(а)




demot пишет:
PHP:
скопировать код в буфер обмена
  1.  if (strcmp($enter[$i][$user],$passv)==0)


int strcmp ( string str1, string str2 )

Возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны.


Все равно при неверно введенном пароле выдает, что вход выполнен((
 
 Top
demot
Отправлено: 17 Мая, 2011 - 16:03:35
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010  


Помог: 3 раз(а)




Вы "!" перед strcmp точно убрали?
 
 Top
Annyyy
Отправлено: 17 Мая, 2011 - 16:08:03
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2011  
Откуда: Dnepropetrovsk


Помог: 0 раз(а)




demot пишет:
Вы "!" перед strcmp точно убрали?


Да, убрала, теперь у меня при правильном пароле написано, что вход не выполнен((
 
 Top
OrmaJever Модератор
Отправлено: 17 Мая, 2011 - 16:42:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Цитата:
PHP:
скопировать код в буфер обмена
  1.             $enter=array
  2.                         (
  3.                         "user1"=>array ("pass1"),
  4.                         "user2"=>array ("pass2"),
  5.                         "user3"=>array ("pass3")
  6.                         );

Зачем двухмерный масив? Однако
in_array(), array_search()


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Annyyy
Отправлено: 17 Мая, 2011 - 16:56:09
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2011  
Откуда: Dnepropetrovsk


Помог: 0 раз(а)




[quote=OrmaJever]
Цитата:
PHP:
скопировать код в буфер обмена
  1.             $enter=array
  2.                         (
  3.                         "user1"=>array ("pass1"),
  4.                         "user2"=>array ("pass2"),
  5.                         "user3"=>array ("pass3")
  6.                         );

Зачем двухмерный масив? Однако
in_array(), array_search()[/quo


задано определеное число пользователей, у каждого из которых свой пароль. вот и отобразила в двумерном
 
 Top
demot
Отправлено: 17 Мая, 2011 - 18:25:08
Post Id


Частый гость


Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010  


Помог: 3 раз(а)




Эта фраза
Annyyy пишет:
задано определеное число пользователей, у каждого из которых свой пароль.

относится и к таком виду
PHP:
скопировать код в буфер обмена
  1. $enter=array (
  2. "user1"=>"pass1",
  3. "user2"=>"pass2",
  4. "user3"=>"pass3"
  5. );

(Отредактировано автором: 17 Мая, 2011 - 18:25:49)

 
 Top
Annyyy
Отправлено: 18 Мая, 2011 - 09:32:14
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2011  
Откуда: Dnepropetrovsk


Помог: 0 раз(а)




demot пишет:
Эта фраза
Annyyy пишет:
задано определеное число пользователей, у каждого из которых свой пароль.

относится и к таком виду
PHP:
скопировать код в буфер обмена
  1. $enter=array (
  2. "user1"=>"pass1",
  3. "user2"=>"pass2",
  4. "user3"=>"pass3"
  5. );


ну правильно. так же и сделано
(Добавление)
о, я разобралась! все получилось)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB