Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 54

Как считывать информацию из файла и проверять ее ?

05.11.2012, 12:27. Показов 1400. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При регистрации
"правильные" данные сохраняются в users.txt - в таком виде :
$nik($email,$password,$balance,$rang)
Вопрос:
Как считывать ник и пароль при авторизации ???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.11.2012, 12:27
Ответы с готовыми решениями:

Как считывать информацию с txt-файла
Имеется string level = { "Аллея", "аккуратный", "абрикос", "аромат", "автобус", "артист", "автомобиль",...

Как правильно записывать и считывать информацию из бинарного файла
Всем привет, нужна помощь, есть код, оформлен вроде как правильно, вопрос такой - как правильно записывать и считывать информацию из...

Считывать информацию из файла, пропуская пустые строки
В общем никак не пойму в чём проблема.. Условие while не срабатывает,вот код: StreamReader file = new StreamReader(@a,...

10
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
05.11.2012, 12:33
лучше сохранить данные в сериализованном формате, так как есть встроенные функции для работы с ним. А лучше вообще БД
0
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 54
05.11.2012, 13:44  [ТС]
это не ответ
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
05.11.2012, 17:55
Хранить данные в сериализованном формате я считаю наиболее верным решением, нежели в собственном формате, поскольку в таком случае их обработка потребует меньше ресурсов.

Не знаю, как твои успехи, но я уже давно решил твою задачу.

default users.txt
Code
1
a:0:{}
adduser.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$container = unserialize(file_get_contents('users.txt'));
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $nick = $_POST['nick'];
    $user = array();
    $user['email'] = 'its@my.email';
    $user['pass'] = 'f23d124aff';
    $user['balance'] = 100;
    $user['range'] = 12;
    $container[$nick][] = $user;
    $container = serialize($container);
    file_put_contents('users.txt', $container."\n");
    header('Location: '.$_SERVER['PHP_SELF'], FILE_APPEND); 
}
echo 'Всего пользователей: '.count($container);
auth.php
PHP
1
2
3
4
5
6
7
8
$container = unserialize(file_get_contents('users.txt'));   
if(array_key_exists($_POST['nick'], $container))
{
    echo 'Вы авторизованы,'.$_POST['nick'].'!';
    echo 'Ваш пароль: '. $container[$_POST['nick']][0]['pass'];
} else {
    echo 'Такой пользователь не зарегистрирован';
}
Ну и формочку соответствующую под эту кухню. И все дела-то
---------------------------------------------------------------------
тот же кусок, но теперь User -- объект. Вывод выглядит красивее.
adduser.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
include 'User.php';
$container = unserialize(file_get_contents('users.txt'));
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $User = new User();
    $User->setNick($_POST['nick']);
    $User->setPass($_POST['pass']);
    $User->setEmail($_POST['email']);
    $container = unserialize(file_get_contents('users.txt'));
    $container[$User->nick] = $User;
    $container = serialize($container);
    file_put_contents('users.txt', $container);
    $container = unserialize(file_get_contents('users.txt'));
}
auth.php
PHP
1
2
3
4
5
6
7
8
if(array_key_exists($_POST['nick'], $container))
    {
        echo 'Вы авторизованы,'.$_POST['nick'].'!<hr />';
        echo 'Ваш пароль: '. $container[$_POST['nick']]->pass.'<hr />';
        echo 'Ваш e-mail: '. $container[$_POST['nick']]->email.'<br />';
    } else {
        echo 'Такой пользователь не зарегистрирован';
    }
тривиальный класс User
User.php
PHP
1
2
3
4
5
6
7
8
9
10
11
class User
{
    public $nick,
           $pass,
           $email;
 
    public function User() {}
    public function setNick($nick) { $this->nick = $nick; }
    public function setPass($pass) { $this->pass = md5($pass); }
    public function setEmail($email) { $this->email = $email; }
}
0
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 54
05.11.2012, 19:54  [ТС]
В общем должно так быть ? :
default users.txt

PHP
1
a:0:{}

adduser.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
$container = unserialize(file_get_contents('users.txt'));
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $nick = $_POST['nick'];
    $user = array();
    $user['email'] = 'its@my.email';
    $user['pass'] = 'f23d124aff';
    $user['balance'] = 100;
    $user['range'] = 12;
    $container[$nick][] = $user;
    $container = serialize($container);
    file_put_contents('users.txt', $container."\n");
    header('Location: '.$_SERVER['PHP_SELF'], FILE_APPEND); 
}
echo 'Всего пользователей: '.count($container);
include 'User.php';
$container = unserialize(file_get_contents('users.txt'));
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $User = new User();
    $User->setNick($_POST['nick']);
    $User->setPass($_POST['pass']);
    $User->setEmail($_POST['email']);
    $container = unserialize(file_get_contents('users.txt'));
    $container[$User->nick] = $User;
    $container = serialize($container);
    file_put_contents('users.txt', $container);
    $container = unserialize(file_get_contents('users.txt'));
}

auth.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$container = unserialize(file_get_contents('users.txt'));   
if(array_key_exists($_POST['nick'], $container))
{
    echo 'Вы авторизованы,'.$_POST['nick'].'!';
    echo 'Ваш пароль: '. $container[$_POST['nick']][0]['pass'];
} else {
    echo 'Такой пользователь не зарегистрирован';
}
if(array_key_exists($_POST['nick'], $container))
    {
        echo 'Вы авторизованы,'.$_POST['nick'].'!<hr />';
        echo 'Ваш пароль: '. $container[$_POST['nick']]->pass.'<hr />';
        echo 'Ваш e-mail: '. $container[$_POST['nick']]->email.'<br />';
    } else {
        echo 'Такой пользователь не зарегистрирован';
    }
user.php

PHP
1
2
3
4
5
6
7
8
9
10
11
class User
{
    public $nick,
           $pass,
           $email;
 
    public function User() {}
    public function setNick($nick) { $this->nick = $nick; }
    public function setPass($pass) { $this->pass = md5($pass); }
    public function setEmail($email) { $this->email = $email; }
}
и ...
HTML5
1
2
3
4
5
6
<form action="adduser.php">
<input type="text" name="nik">
<input type="password" name="pass">
<input type="text" name="email">
<input type="submit" name="submit">
</form>
Так все ? Вот мой код регистрации :

reg.php

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
echo "
<html>
<head>
<title>Форма входа на PHP</title>
</head>
<body>
<form action='obr.php' method='POST'>
<h1>Форма регистрации</h1>
<p>Заполните поля для регистрации на сайте</p>
<p>Имя<br /><input type='text' name='nik' ></p>
<p>Пароль<br /><input type='password' name='password' ></p>
<p>Повторите пароль<br /><input type='password' name='password2'></p>
<p>Email<br /><input type='text' name='email'></p>
Текст с картинки : <br>
<img src='captcha.php' /><br>
<input type ='text' name = 'kapcha' size='20' maxlendght='20' /><br>
<p><input type='submit' value='OK' name='submit' ></p>
</form>
</body>
</html>";
?>
obr.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
<?PHP
    if (isset($_POST['nik'])) { $nik = $_POST['nik']; if ($nik == '') { unset($nik);} }
    if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
    if (isset($_POST['email'])) { $email=$_POST['email']; if ($email =='') { unset($email);} }
    if (isset($_POST['password2'])) { $password2=$_POST['password2']; if ($password2 =='') { unset($password2);} }
    if (empty($nik) or empty($password) or empty($email) or empty($password2)) {
    exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
    }
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)) { die ("Неверно введен е-mail! <a href=\"javascript:history.back()\">Назад</a>"); }
if ($password != $password2) echo "Пароли не совпадают !";
    //если логин и пароль введены,то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
    $nik = stripslashes($nik);
    $nik = htmlspecialchars($nik);
 $password = stripslashes($password);
    $password = htmlspecialchars($password);
$password2 = stripslashes($password2);
    $password2 = htmlspecialchars($password2);
 //удаляем лишние пробелы
    $nik = trim($nik);
    $password = trim($password);
    $password2 = trim($password2);
$balance = 0;
$rang = 1;
$fp = fopen("users.txt", "a"); // Открываем файл в режиме записи
$mytext = 
"$nik|$email|$password|$balance|$rang|
 
\r\n"; // Исходная строка
$test = fwrite($fp, $mytext); // Запись в файл
if ($test) echo 'Данные в файл успешно занесены.';
else echo 'Ошибка при записи в файл.';
fclose($fp); //Закрытие файла
?>
Cам путаюсь что скопировал - можете где и ошибка - мне из моего кода нужна авторизация ...
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
05.11.2012, 20:02
я показал два варианта решения. Это понятно?

Добавлено через 3 минуты
я щас тебе скину два варианта в архивах.
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
05.11.2012, 20:14
Вот архивчики. В них два варианта: с ООП и без. Думаю, тебе не составит особого труда переделать это под свои нужды
Вложения
Тип файла: zip login.zip (2.2 Кб, 5 просмотров)
1
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 54
05.11.2012, 20:46  [ТС]
у меня кракозябры - с кодировкой чтото не так - пробую исправить а так все очень хорошо ...
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
05.11.2012, 21:05
я юзал UTF-8

Добавлено через 2 минуты
кстати, можешь потом сделать так, чтоб в файле хранился массив с разными объектами, скажем, не только User, но и Admin, Moder и т.д. Каждый из них будет иметь как общие для всех свойства, так и свои собственные, характерные только для него
1
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
05.11.2012, 21:11
Я ж дал пример код и читает и сохраняет и ищет и проверяет уникальность https://www.cyberforum.ru/post3653632.html

Лучше json юзать. serialize может занимать более одной тсроки если встретится символ перевода строки.
2
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
05.11.2012, 21:50
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Лучше json юзать. serialize может занимать более одной тсроки если встретится символ перевода строки.
спасибо за верное замечание.

nevek, в таком случае нужно все serialize, unserialize поменять на json_encode / decode

Добавлено через 27 минут
кусок под JSON вместо serialize:
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
<?php
include 'User.php';
$container = json_decode(file_get_contents('users.txt'));
 
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    switch($_POST['role'])
    {
        case 'Admin': $User = new Admin;
        break;
        case 'Moder': $User = new Moder;
        break;
        default: $User = new User;  
    }
    $User->setNick($_POST['nick']);
    $User->setPass($_POST['pass']);
    $User->setEmail($_POST['email']);
    $User->setAddress($_POST['address']);
 
    $container = json_decode(file_get_contents('users.txt'));
 
    empty($container)? 
    $container[$_POST['nick']] = $User:
    $container->$_POST['nick'] = $User;
    echo 'Всего пользователей: '.count($container);
    if(array_key_exists($_POST['nick'], $container))
    {
        echo 'Вы авторизованы,'.$_POST['nick'].'!<hr />';
        echo 'Ваш пароль: '. $container->$_POST['nick']->pass.'<hr />';
        echo 'Ваш адрес: '. $container->$_POST['nick']->address.'<br />';
    } else {
        echo 'Такой пользователь не зарегистрирован';
    }
    $container = json_encode($container);
    file_put_contents('users.txt', $container); 
}
я там еще селект добавил к форме
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.11.2012, 21:50
Помогаю со студенческими работами здесь

В чем ошибка. Программа должна считывать из файла информацию и выводить на экран тех у кого по линейной алгебре 3
uses crt; label 1,2; type ecxam1sem=record History:byte; Fizika:byte; Diskretnyamatematika:byte; Matanaliz:byte; end; ...

CGI: Как считывать информацию методами GET и POST?
Здравствуйте! Интересует разница между процессом считывания информации методами GET и POST. Как передается информация из формы и каким...

Как считывать информацию с клавиатуры постоянно, но не затормаживать программу?
как реализовать? Добавлено через 6 минут какой нибудь аналог javaвого keyEventListener может есть?

Как считывать матрицу из файла?
Как можно считать матрицу из файла по столбикам? Понятия не имею как можно это сделать, а надо. Матрица как на прикрепленном...

Как считывать данные из файла?
как считывать и записывать данные из файла по строкам в переменную?


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru