Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
arduin
0 / 0 / 0
Регистрация: 03.01.2018
Сообщений: 8
1

Регистрация и вход без mysql

02.08.2018, 13:29. Просмотров 1012. Ответов 6
Метки нет (Все метки)

Нашёл в интернете код для регистрации и входа без mysql и начал делать проект с его использованием. С кодом регистрации и записи данных пользователей в файл все прошло хорошо. А вот со кодом входа что-то не так.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$arr = file("users.txt"); 
$i = 0; 
$temp = array(); 
foreach($arr as $line) 
{ 
      // Разбиваем строку по разделителю :: 
      $data = explode("::",$line); 
      // В массив $temp помещаем имена и пароли 
      // зарегистрированных посетителей 
      $temp['name'][$i]     = $data[0]; 
      $temp['password'][$i] = $data[1]; 
      // Увеличиваем счётчик 
      $i++; 
} 
if(!in_array($_POST['name'],$temp['name'])) 
{ 
    exit("Пользователь с таким именем не зарегистрирован");    
} 
$index = array_search($_POST['name'],$temp['name']);
$bdpass = $temp['password'][$index];
$pass = $_POST['password'];
if ($bdpass != $pass) 
{ 
    exit("Пароль не соответствует логину"); 
}
//код с использованием данных
Мне упорно пишет "Пароль не соответствует логину"
Я точно не допускаю ошибку при вводе в форму пароля пользователя.
В интернете ничего не нашёл.
Пожалуйста помогите!
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2018, 13:29
Ответы с готовыми решениями:

Вход в административную панель только после авторизации (без использования MySQL)
Всем привет. Возник вопрос. Нужно что бы в админку можно было зайти только после авторизации....

Регистрация и вход в чат
Не могли бы вы мне помочь , изучаю PHP пытаюсь сделать регистрацию и вход в чат...

Регистрация и вход пользователя
Здравствуйте! У меня проблема с регистрацией и авторизацией пользователя. Писала также, как по...

Простая регистрация с MySQL
Вот код простой регистрации, помогите склепать страницу изменения пароля. Ибо даже не знаю с чего...

Регистрация php mysql
index <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

6
andyyy
733 / 298 / 146
Регистрация: 26.05.2016
Сообщений: 1,970
02.08.2018, 13:45 2
ну полный код выложите с формой
0
arduin
0 / 0 / 0
Регистрация: 03.01.2018
Сообщений: 8
02.08.2018, 16:15  [ТС] 3
Регистрация:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<meta charset="UTF-8" />
<table> 
<form method=post> 
<tr><td>Имя:</td><td><input type=text name=name></td></tr> 
<tr><td>Пароль:</td><td><input type=password name=pass></td></tr> 
<tr><td>Пароль:</td><td><input type=password name=pass_again></td></tr>   
<tr><td></td><td><input type=submit value='Зарегистрировать'></td></tr> 
</form> 
</table> 
<?php 
  // Обработчик HTML-формы 
 
  ///////////////////////////////////////////////// 
  // 1. Блок проверки правильности данных 
  ///////////////////////////////////////////////// 
  // Удаляем лишние пробелы 
  $_POST['name'] = trim($_POST['name']); 
  $_POST['pass'] = trim($_POST['pass']); 
  $_POST['pass_again'] = trim($_POST['pass_again']); 
  // Проверяем не пустой ли суперглобальный массив $_POST 
  if(empty($_POST['name'])) exit(); 
  // Проверяем правильно ли заполнены обязательные поля 
  if(empty($_POST['name'])) exit('Поле "Имя" не заполнено'); 
  if(empty($_POST['pass'])) exit('Одно из полей "Пароль" не заполнено'); 
  if(empty($_POST['pass_again'])) exit('Одно из полей "Пароль" не заполнено'); 
  if($_POST['pass'] != $_POST['pass_again']) exit('Пароли не совпадают'); 
 
  ///////////////////////////////////////////////// 
  // 2. Блок проверки имени на уникальность 
  ///////////////////////////////////////////////// 
  // Имя файла данных 
  $filename = "users.txt";  
  // Проверяем не было ли переданное имя 
  // зарегистрировано ранее 
  $arr = file($filename); 
  foreach($arr as $line) 
  { 
    // Разбиваем строку по разделителю :: 
    $data = explode("::",$line); 
    // В массив $temp помещаем имена уже зарегистрированных 
    // посетителей 
    $temp[] = $data[0]; 
  } 
  // Проверяем не содержится ли текущее имя 
  // в массиве имён $temp 
  if(in_array($_POST['name'], $temp)) 
  { 
    exit("Данное имя уже зарегистрировано, пожалуйста, выберите другое"); 
  } 
 
  ///////////////////////////////////////////////// 
  // 3. Блок регистрации пользователя 
  ///////////////////////////////////////////////// 
  // Помещаем данные в текстовый файл 
  $fd = fopen($filename, "a"); 
  if(!$fd) exit("Ошибка при открытии файла данных"); 
  $str = $_POST['name']."::". 
         $_POST['pass']."\r\n"; 
  fwrite($fd,$str); 
  fclose($fd); 
  // Осуществляем перезагрузку страницы, 
  // чтобы сбросить POST-данные 
  echo "<HTML><HEAD> 
         <META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'> 
        </HEAD></HTML>"; 
?>
Форма отправки сообщения:
HTML5
1
2
3
4
5
6
7
8
<form name="add" action="form.php" method="post">
Имя: <input name="name" size=50 style="WIDTH: 200px;">
пaроль: <input name="password" size="50" style="WIDTH: 200px;">
<br/>
<p id="txt">Текст:<p/>
<textarea name="mess" style="width:400px;" rows="4" cols="20" wrap="soft"></textarea><br><br>
<input id="button" value="отправить" type="submit" style="cursor:hand;" name="p_send">
</form>
0
andyyy
733 / 298 / 146
Регистрация: 26.05.2016
Сообщений: 1,970
02.08.2018, 16:30 4
а код входа, который не работает))

Добавлено через 20 секунд
все уж выкладывайте
0
arduin
0 / 0 / 0
Регистрация: 03.01.2018
Сообщений: 8
02.08.2018, 19:19  [ТС] 5
ПОЛНЫЙ КОД ВХОДА:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php 
  $filename = "users.txt";  
  if(empty($_POST)) 
  { 
    ?> 
    <table> 
      <form method=post> 
      <tr> 
        <td>Имя:</td> 
        <td><input type=text name=name></td> 
      </tr> 
      <tr> 
        <td>Пароль:</td> 
        <td><input type=password name=pass></td> 
      </tr> 
      <tr> 
        <td>&nbsp;</td> 
        <td><input type=submit value='Войти'></td> 
      </tr> 
      </form> 
   </table> 
   <?php 
  } 
  // В противном случае, если POST-данные 
  // переданы - обрабатываем их 
  else 
  { 
    // Проверяем корректность введённого имени 
    // и пароля 
    $arr = file($filename); 
    $i = 0; 
    $temp = array(); 
    foreach($arr as $line) 
    { 
      // Разбиваем строку по разделителю :: 
      $data = explode("::",$line); 
      // В массив $temp помещаем имена и пароли 
      // зарегистрированных посетителей 
      $temp['name'][$i]     = $data[0]; 
      $temp['password'][$i] = $data[1]; 
      // Увеличиваем счётчик 
      $i++; 
    } 
    // Если в массиве $temp['name'] нет введённого 
    // логина - останавливаем работу скрипта 
    if(!in_array($_POST['name'],$temp['name'])) 
    { 
      exit("Пользователь с таким именем не зарегистрирован"); 
    } 
    // Если пользователь с именем $_POST['name'] обнаружен 
    // проверяем правильность введённого пароля 
    $index = array_search($_POST['name'],$temp['name']); 
    if($_POST['pass'] != $temp['password'][$index]) 
    { 
      exit("Пароль не соответствует логину"); 
    } 
    // Если переданный пароль соответствует паролю из 
    // файла users.txt выводим форму для редактирования 
    // данных 
    include "obrabotka.php"; // Обработчик второй HTML-формы 
    ?>     <table> 
      <form method=post> 
        <input type=hidden name=name 
         value='<?= htmlspecialchars($temp['name'][$index]); ?>'> 
        <input type=hidden name=pass 
         value='<?= htmlspecialchars($temp['password'][$index]); ?>'> 
        <input type=hidden name=edit value=edit> 
      <tr> 
        <td>Пароль:</td> 
        <td><input type=password name=passw 
         value='<?= htmlspecialchars($temp['password'][$index]); ?>'> 
        </td> 
      </tr> 
      <tr> 
        <td>Пароль:</td> 
        <td><input type=password name=pass_again 
         value='<?= htmlspecialchars($temp['password'][$index]); ?>'> 
        </td> 
      </tr> 
      <tr> 
        <td><input type=submit value='Редактировать'></td> 
      </tr> 
      </form> 
    </table> 
<?php 
  } 
?>
obrabotka.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php 
  if($_POST['edit'] == 'edit') 
  { 
    ///////////////////////////////////////////////// 
    // Блок проверки правильности данных 
    ///////////////////////////////////////////////// 
    // Удаляем лишние пробелы 
    $_POST['name'] = trim($_POST['name']); 
    $_POST['passw'] = trim($_POST['passw']); 
    $_POST['pass_again'] = trim($_POST['pass_again']); 
    // Проверяем не пустой ли суперглобальный массив $_POST 
    if(empty($_POST['name'])) exit(); 
    // Проверяем правильно ли заполнены обязательные поля 
    if(empty($_POST['name'])) exit('Поле "Имя" не заполнено'); 
    if(empty($_POST['passw'])) 
       exit('Одно из полей "Пароль" не заполнено'); 
    if(empty($_POST['pass_again'])) 
       exit('Одно из полей "Пароль" не заполнено'); 
    if($_POST['passw'] != $_POST['pass_again']) 
       exit('Пароли не совпадают'); 
 
    ///////////////////////////////////////////////// 
    // Редактируем содержимое файла данных 
    ///////////////////////////////////////////////// 
    $arr = file($filename); 
    $linefile = array(); 
    foreach($arr as $line) 
    { 
      // Разбиваем строку по разделителю :: 
      $data = explode("::",$line); 
      if($data[0] == $temp['name'][$index]) 
      { 
        // Формируем новую строку вместо старой 
        $linefile[] = $_POST['name']."::".$_POST['passw']."::".  
        $temp['password'][$index] = $_POST['passw']; 
      } 
      else $linefile[] = trim($line); 
    } 
 
    ///////////////////////////////////////////////// 
    // Перезаписываем файл данных 
    ///////////////////////////////////////////////// 
    $fd = fopen($filename,"w"); 
    if(!$fd) exit("Ошибка записи в файл"); 
    fwrite($fd,implode("\r\n",$linefile)); 
    fclose($fd); 
  } 
?>
0
sasha0012
840 / 392 / 222
Регистрация: 21.06.2012
Сообщений: 1,446
02.08.2018, 22:24 6
Лучший ответ Сообщение было отмечено arduin как решение

Решение

arduin, может потому что пароли из файла содержат символ переноса строки? Попробуйте так:
PHP
1
$arr = file($filename, FILE_IGNORE_NEW_LINES);
или так:
PHP
1
$temp['password'][$i] = rtrim($data[1]);
1
arduin
0 / 0 / 0
Регистрация: 03.01.2018
Сообщений: 8
03.08.2018, 07:51  [ТС] 7
Спасибо, все работает!
0
03.08.2018, 07:51
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2018, 07:51

PHP.MYSQL. Регистрация на сайте. Защита
Как вы знаете есть такой фокус: &quot;Когда в лейбел html формы вводится mysql команда, то можно убить...

регистрация без бд
Подскажите, пожалуйста, где взять скрипт регистрации на php без бд. За ранее благодарен.

Регистрация без базы данных
Где можно найти скрипт регистрации без базы данных (сохранение в файлах) Примерные поля: Ник...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.