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 :: Версия для печати :: Скрипт авторизации (без MySQL)
Форумы портала PHP.SU » » Вопросы новичков » Скрипт авторизации (без MySQL)

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

1. Nice - 18 Декабря, 2012 - 12:52:51 - перейти к сообщению
В каталоге созданы файлы с логином в имени файла и паролем в самом файле. На странице авторизации вводятся логин и пароль.

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

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

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>
2. awotara - 18 Декабря, 2012 - 12:56:15 - перейти к сообщению
Может дело в название файла где хранится пароль

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

(Добавление)
вставте
Чтобы посмотреть что имеет в себе эта переменная.
3. Avenger - 18 Декабря, 2012 - 13:24:35 - перейти к сообщению
Хм... а для чего нужна такая авторизация?
4. awotara - 18 Декабря, 2012 - 13:26:00 - перейти к сообщению
Даже и не знаю.
5. Nice - 18 Декабря, 2012 - 13:46:33 - перейти к сообщению
В последнюю неделю перед зачетом ВНЕЗАПНО нужно написать с java, регистрацией и авторизацией на php.
6. awotara - 18 Декабря, 2012 - 13:50:43 - перейти к сообщению
Так проблема Решена? Nice
7. Nice - 18 Декабря, 2012 - 14:07:54 - перейти к сообщению
($pass_file == $pass) >> true

Переменные совпадают, проблема не решена.
8. awotara - 18 Декабря, 2012 - 14:13:14 - перейти к сообщению
Попробуйте так.
PHP:
скопировать код в буфер обмена
  1.  
  2. elseif ($pass_file === $pass) //проверка на совпадение
  3. {
  4.  

(Добавление)
Да кстати у вас тут метод передачи из формы GET " method="get">а вы извлекаете элемент из POST
9. Nice - 18 Декабря, 2012 - 15:06:22 - перейти к сообщению
Если вставить "===" всместо "==", то в любом случсе начинает кидать на другую страницу ("wrong.html").
10. awotara - 18 Декабря, 2012 - 15:09:18 - перейти к сообщению
посмотрите переменные $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.  

(Добавление)
как так
11. Nice - 18 Декабря, 2012 - 15:16:18 - перейти к сообщению
Если вставить "===" всместо "==", то в любом случсе начинает кидать на другую страницу ("wrong.html").
12. awotara - 18 Декабря, 2012 - 15:21:38 - перейти к сообщению
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"); //переход на другую
}
?>



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


Вот тут как бы с именем файла не понятно, то ли вы имена переменных попутали то ли я не до смотрел.
13. Stivir - 18 Декабря, 2012 - 15:57:52 - перейти к сообщению
Странно, зачем так делать:
Цитата:
$name = $_POST['name']; //ввод логина
$pass = $_POST['pass']; //ввод пароля
$name = "$name";
$pass = "$pass";

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

И еще сравнение 2 строк при помощи операторов == или === работает криво, надо использовать strcmp.
14. awotara - 18 Декабря, 2012 - 16:01:50 - перейти к сообщению
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.  


Я об этом и писал.
15. Nice - 18 Декабря, 2012 - 16:15:06 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $name = "$name";
  2. $pass = "$pass";


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

Насколько помню strcmp сравнивает длину, а не значение строк.

 

Powered by ExBB FM 1.0 RC1