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
Форумы портала PHP.SU :: Версия для печати :: Помогите поправить провеку пароля
Форумы портала PHP.SU » » Если скрипт не работает » Помогите поправить провеку пароля

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

1. Annyyy - 17 Мая, 2011 - 15:30:24 - перейти к сообщению
есть файл 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.  


в итоге, проверяется только логин почему-то Огорчение . Подскажите, пожалуйста, что не так..
2. demot - 17 Мая, 2011 - 15:42:09 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. foreach ($enter as $key->$val){
  2.     if ($key==$user){
  3.         if($val[0]==$passv) echo "Вход выполнен";
  4.     } else {
  5.         echo "Неверный логин/пароль";
  6.     }
  7. }

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


int strcmp ( string str1, string str2 )

Возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны.
5. Annyyy - 17 Мая, 2011 - 16:00:31 - перейти к сообщению
demot пишет:
PHP:
скопировать код в буфер обмена
  1.  if (strcmp($enter[$i][$user],$passv)==0)


int strcmp ( string str1, string str2 )

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


Все равно при неверно введенном пароле выдает, что вход выполнен((
6. demot - 17 Мая, 2011 - 16:03:35 - перейти к сообщению
Вы "!" перед strcmp точно убрали?
7. Annyyy - 17 Мая, 2011 - 16:08:03 - перейти к сообщению
demot пишет:
Вы "!" перед strcmp точно убрали?


Да, убрала, теперь у меня при правильном пароле написано, что вход не выполнен((
8. OrmaJever - 17 Мая, 2011 - 16:42:40 - перейти к сообщению
Цитата:
PHP:
скопировать код в буфер обмена
  1.             $enter=array
  2.                         (
  3.                         "user1"=>array ("pass1"),
  4.                         "user2"=>array ("pass2"),
  5.                         "user3"=>array ("pass3")
  6.                         );

Зачем двухмерный масив? Однако
in_array(), array_search()
9. Annyyy - 17 Мая, 2011 - 16:56:09 - перейти к сообщению
[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


задано определеное число пользователей, у каждого из которых свой пароль. вот и отобразила в двумерном
10. demot - 17 Мая, 2011 - 18:25:08 - перейти к сообщению
Эта фраза
Annyyy пишет:
задано определеное число пользователей, у каждого из которых свой пароль.

относится и к таком виду
PHP:
скопировать код в буфер обмена
  1. $enter=array (
  2. "user1"=>"pass1",
  3. "user2"=>"pass2",
  4. "user3"=>"pass3"
  5. );
11. Annyyy - 18 Мая, 2011 - 09:32:14 - перейти к сообщению
demot пишет:
Эта фраза
Annyyy пишет:
задано определеное число пользователей, у каждого из которых свой пароль.

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


ну правильно. так же и сделано
(Добавление)
о, я разобралась! все получилось)

 

Powered by ExBB FM 1.0 RC1