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 :: Скрипт авторизации (без MySQL)

 PHP.SU

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


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

> Без описания
Nice
Отправлено: 18 Декабря, 2012 - 12:52:51
Post Id


Новичок


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


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




В каталоге созданы файлы с логином в имени файла и паролем в самом файле. На странице авторизации вводятся логин и пароль.

Далее, при нажатии на кнопку на форме, ищется файл с именем, который мы ввели с строке логина, из него изымается пароль, затем введенный пароль и пароль из файла сравниваются. Если совпадают - переход на главную страницу, если нет - переход на другую страницу.

Проблема в следующем: при любой комбинации логина-пароля (правильно/не_правильно) все равно кидает на главную. Код кривой до безобразия, но это пока все на что я способен. Надеюсь на ваши советы.

PHP:
скопировать код в буфер обмена
  1. <form action="
  2. <?PHP
  3. $name = $_POST['name']; //ввод логина
  4. $pass = $_POST['pass']; //ввод пароля
  5. $name = "$name";
  6. $pass = "$pass";
  7.  
  8. if (!empty($name) or !empty($pass)) //проверка не пустые ли
  9. {
  10. $file = fopen ("$name.txt", "w+"); //открытие файла
  11. $pass_file = fgets ($file); //изъятие пароля
  12. fclose ($file); //закрытие файла
  13. }
  14. elseif ($pass_file == $pass) //проверка на совпадение
  15. {
  16. echo ("main.html"); //переход на главную
  17. }
  18. else
  19. {
  20. echo ("wrong.html"); //переход на другую
  21. }      
  22. ?>
  23. " method="get">
  24.  
  25. <input name="name" type="text" class="lnews_data" size="15">>
  26. <input name="pass" type="text" class="lnews_data" size="15">
  27. <input type="submit" name="submit" id="submit" value="Enter">
  28. </table>
  29. </form>
 
 Top
awotara
Отправлено: 18 Декабря, 2012 - 12:56:15
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




Может дело в название файла где хранится пароль

PHP:
скопировать код в буфер обмена
  1.  
  2. elseif ($pass_file === $pass) //проверка на совпадение
  3. {
  4.  

(Добавление)
вставте Чтобы посмотреть что имеет в себе эта переменная.


-----
черная подставка, внизу надпись ACER
 
 Top
Avenger
Отправлено: 18 Декабря, 2012 - 13:24:35
Post Id



Новичок


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


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




Хм... а для чего нужна такая авторизация?
 
 Top
awotara
Отправлено: 18 Декабря, 2012 - 13:26:00
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




Даже и не знаю.


-----
черная подставка, внизу надпись ACER
 
 Top
Nice
Отправлено: 18 Декабря, 2012 - 13:46:33
Post Id


Новичок


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


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




В последнюю неделю перед зачетом ВНЕЗАПНО нужно написать с java, регистрацией и авторизацией на php.
 
 Top
awotara
Отправлено: 18 Декабря, 2012 - 13:50:43
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




Так проблема Решена? Nice


-----
черная подставка, внизу надпись ACER
 
 Top
Nice
Отправлено: 18 Декабря, 2012 - 14:07:54
Post Id


Новичок


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


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




($pass_file == $pass) >> true

Переменные совпадают, проблема не решена.

(Отредактировано автором: 18 Декабря, 2012 - 14:08:15)

 
 Top
awotara
Отправлено: 18 Декабря, 2012 - 14:13:14
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




Попробуйте так.
PHP:
скопировать код в буфер обмена
  1.  
  2. elseif ($pass_file === $pass) //проверка на совпадение
  3. {
  4.  

(Добавление)
Да кстати у вас тут метод передачи из формы GET " method="get">а вы извлекаете элемент из POST


-----
черная подставка, внизу надпись ACER
 
 Top
Nice
Отправлено: 18 Декабря, 2012 - 15:06:22
Post Id


Новичок


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


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




Если вставить "===" всместо "==", то в любом случсе начинает кидать на другую страницу ("wrong.html").
 
 Top
awotara
Отправлено: 18 Декабря, 2012 - 15:09:18
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




посмотрите переменные $pass_file $pass что они имеют.
(Добавление)
Вот тут я не могу понять , вы $_POST['name']; присваиваете переменной $name? потом эту переменную тоисть ник используете как имя файла $name.txt
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $name = $_POST['name']; //ввод логина
  4. $pass = $_POST['pass']; //ввод пароля
  5. $name = "$name";
  6. $pass = "$pass";
  7.  
  8. if (!empty($name) or !empty($pass)) //проверка не пустые ли
  9. {
  10. $file = fopen ("$name.txt", "w+"); //открытие файла
  11. $pass_file = fgets ($file); //изъятие пароля
  12. fclose ($file); //закрытие файла
  13. }
  14. elseif ($pass_file == $pass) //проверка на совпадение
  15. {
  16. echo ("main.html"); //переход на главную
  17. }
  18. else
  19. {
  20. echo ("wrong.html"); //переход на другую
  21. }      
  22. ?>
  23.  

(Добавление)
как так


-----
черная подставка, внизу надпись ACER
 
 Top
Nice
Отправлено: 18 Декабря, 2012 - 15:16:18
Post Id


Новичок


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


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




Если вставить "===" всместо "==", то в любом случсе начинает кидать на другую страницу ("wrong.html").
 
 Top
awotara
Отправлено: 18 Декабря, 2012 - 15:21:38
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




awotara пишет:
посмотрите переменные $pass_file $pass что они имеют.
(Добавление)
Вот тут я не могу понять , вы $_POST['name']; присваиваете переменной $name? потом эту переменную тоисть ник используете как имя файла $name.txt
PHP:
скопировать код в буфер обмена


<?PHP
$name = $_POST['name']; //ввод логина
$pass = $_POST['pass']; //ввод пароля
$name = "$name";
$pass = "$pass";

if (!empty($name) or !empty($pass)) //проверка не пустые ли
{
$file = fopen ("$name.txt", "w+"); //открытие файла
$pass_file = fgets ($file); //изъятие пароля
fclose ($file); //закрытие файла
}
elseif ($pass_file == $pass) //проверка на совпадение
{
echo ("main.html"); //переход на главную
}
else
{
echo ("wrong.html"); //переход на другую
}
?>



(Добавление)
как так


Вот тут как бы с именем файла не понятно, то ли вы имена переменных попутали то ли я не до смотрел.


-----
черная подставка, внизу надпись ACER
 
 Top
Stivir
Отправлено: 18 Декабря, 2012 - 15:57:52
Post Id


Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Май 2012  


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




Странно, зачем так делать:
Цитата:
$name = $_POST['name']; //ввод логина
$pass = $_POST['pass']; //ввод пароля
$name = "$name";
$pass = "$pass";

сначала присваивать переменной содержимое пост, а потом сразу менять это содержимое не понятно на что?
И если надо создать и открыть файл для чего-то, то уже пишите так:
PHP:
скопировать код в буфер обмена
  1. $file = fopen ($name.".txt", "w+"); //открытие файла

И еще сравнение 2 строк при помощи операторов == или === работает криво, надо использовать strcmp.

(Отредактировано автором: 18 Декабря, 2012 - 15:59:32)

 
 Top
awotara
Отправлено: 18 Декабря, 2012 - 16:01:50
Post Id



Гость


Покинул форум
Сообщений всего: 104
Дата рег-ции: Июнь 2012  


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




Stivir Сравнение тут по всей видимости работает нормально, скорее всего дело в названии переменных и имени файла. Какой то бред
PHP:
скопировать код в буфер обмена
  1.  
  2. $name = $_POST['name']; //ввод логина
  3. $pass = $_POST['pass']; //ввод пароля
  4. $name = "$name";
  5. $pass = "$pass";
  6.  
  7.     $file = fopen ($name.".txt", "w+"); //открытие файла
  8.  


Я об этом и писал.


-----
черная подставка, внизу надпись ACER
 
 Top
Nice
Отправлено: 18 Декабря, 2012 - 16:15:06
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. $name = "$name";
  2. $pass = "$pass";


Это небольшой косяк, кусок другого кода попался.

Насколько помню strcmp сравнивает длину, а не значение строк.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB