• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd w zapisie danych logowania do pliku

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
536 wizyt
pytanie zadane 27 czerwca 2022 w C i C++ przez sushi2021 Nowicjusz (160 p.)

Witam. Stworzyłem prosty program z menu 2 użytkowników. Po zalogowania któregokolwiek użytkownika program powinien zapisać dane logowania do pliku (login i hasło). Zapisuje tylko login, hasła nie chce zapisać. Wiem, że gdzieś jest błąd, ale nie umiem sobie z tym poradzić. Proszę o pomoc. 

// Midas.cpp : Ten plik zawiera funkcję „main”. W nim rozpoczyna się i kończy wykonywanie programu.
//

#include <iostream>
#include <cstdlib>
#include <fstream>
#include <conio.h>
#include <string>
//#include <Windows.h>
//#include <cstdio>
//#include <string>

using namespace std;

int main()
{
    cout << "******************** Ussers: ******************** " << endl;
    cout << "********** 1 - Administrator ******************** " << endl;
    cout << "********** 2 - Inny uzytkownik ****************** " << endl;
    cout << "********** 3 - Exit ***************************** " << endl;
    cout << "************************************************* " << endl;
    cout << endl;

    string login_admin = "admin", login_usser = "usser";
    string passwd_admin, passwd_usser;
    string correct_passwd_admin = "test123", correct_passwd_usser = "pass123";

    int ilosc_logowan = 0;
    int menu;
    cin >> menu;

    ilosc_logowan++; //licznik logowan

    //ukrycie hasla pod gwiazdkami
    constexpr char c_enter = 13;
    constexpr char c_backspace = 8;

    char input_character;

    if ((login_admin == "admin") || (login_usser == "usser"))
    {
        cout << "Podaj haslo: " << endl;
    }
   
    input_character = _getch();

    while (input_character != c_enter)
    {

        if (input_character == c_backspace && correct_passwd_admin.size() || correct_passwd_usser.size())
        {
            cout << "\b \b";
            correct_passwd_admin.pop_back();
            correct_passwd_usser.pop_back();
        }
        else if (input_character != c_backspace)
        {
            cout.put('*');
            correct_passwd_admin += input_character;
            correct_passwd_usser += input_character;
        }

        input_character = _getch();
    }
    
    switch (menu)
    {
        case 1:
        {
            cout << "Podaj login administratora: " << endl;
            cin >> login_admin;
            //cout << "Podaj haslo administratora: " << endl;
            //cin >> passwd_admin;

            if ((login_admin == "admin") && (passwd_admin == correct_passwd_admin)) //sprawdzanie poprawnosci loginu i hasla uzytkownika - "admin"
            {
                cout << endl;
                cout << "Przyznany dostep. " << endl;
                cout << "Zalogowales sie za: " << ilosc_logowan << " razem. " << endl;
                cout << endl;
                            }
            else
            {
                cout << endl;
                cout << "Wprowadz poprawne dane logowania uzytkownika: Administrator." << endl;
            }

            //zapis do pliku uzytkownika -"admin"
            fstream plik_admin; //zmienna plikowa potrzebna dla kompilkatora
            plik_admin.open("log_admin.txt", ios::out | ios::app); //otwarcie pliku i zapis do niego, jezeli pliku nie bylo to zostanie stworzony
            plik_admin << login_admin << endl; //zapisz login
            plik_admin << passwd_admin << endl; //zapisz pass
            plik_admin.close(); //zamykanie otwrtego pliku  
            break;
        }
        case 2:
        {
            cout << "Podaj login uzytkownika: " << endl;
            cin >> login_usser;
            //cout << "Podaj haslo uzytkownika: " << endl;
            //cin >> passwd_user;

            if ((login_usser == "usser") && (passwd_usser == correct_passwd_usser)) //sprawdzanie poprawnosci loginu i hasla uzytkownika - "user"
            {
                cout << endl;
                cout << "Przyznany dostep. " << endl;
                cout << "Zalogowales sie za: " << ilosc_logowan << " razem. " << endl;
                cout << endl;
            }
            else
            {
                cout << endl;
                cout << "Wprowadz poprawne dane logowania: Inny uzytkownik. " << endl;
            }

            //zapis do pliku uzytkownika -"user"
            fstream plik_usser; //zmienna plikowa potrzebna dla kompilkatora
            plik_usser.open("log_user.txt", ios::out | ios::app); //otwarcie pliku i zapis do niego, jezeli pliku nie bylo to zostanie stworzony
            plik_usser << login_usser << endl; //zapisz login
            plik_usser << correct_passwd_usser << endl; //zapisz pass
            plik_usser.close(); //zamykanie otwrtego pliku
            break;
        }
            case 3:
            {
                cout << "Exit " << endl;
                break;
            }
            default:
            {
                cout << "Nie ma takiej opcji wyboru. " << endl;
                break;
            }
    }

    system("pause");
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 28 czerwca 2022 przez krystianfr Nowicjusz (240 p.)
W programie hasło nie zostanie zapisanie do pliku jeśli nie wyślesz go do strumienia. Wysyłasz pusty string ponieważ wczytanie danych ze strumienia CIN masz w wzięte w komentarz.

Podobne pytania

0 głosów
2 odpowiedzi 443 wizyt
pytanie zadane 10 listopada 2015 w C i C++ przez Evelek Nałogowiec (28,960 p.)
0 głosów
1 odpowiedź 2,116 wizyt
pytanie zadane 23 listopada 2018 w Java przez mn130496 Gaduła (3,530 p.)
0 głosów
2 odpowiedzi 1,646 wizyt
pytanie zadane 14 maja 2016 w C i C++ przez Evelek Nałogowiec (28,960 p.)

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1785p. - Michal Drewniak
  9. 1744p. - rafalszastok
  10. 1724p. - Adrian Wieprzkowicz
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...