Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Login-Programmteil
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 03.08.2007, 09:36    Titel: Login-Programmteil Antworten mit Zitat

Huhu, ich hab heute angefangen ein einfaches Login zu basteln.
Momentan kann ein user+pw gespeichert werden und ein admin-passwort zum löschen der userdaten. das ganze ist recht primitiv geschrieben und verwendet fast nur standart-anfänger befehle (da ich ja noch anfänger bin *g*)

Projektziele (erreicht):
- begrenzte User und passwort abfrage (3mal falsch -> programm wird beendet)
- master- (oder admin-)passwort zum löschen der login-daten
- "*" bei der Passwort-eingabe

Projektziele (unerreicht):
- bis zu 20 gespeicherte userdaten
- datei die die logindaten enthällt verschlüsseln

wenn jemand ideen hat, hier posten oder an Markaroni@web.de
Hier Download (Nur Source-code, ohne userdata.dat)
(Dürft ihr auch für eure programme benutzen...)
_________________
// nicht mehr aktiv //


Zuletzt bearbeitet von The_Muh am 03.08.2007, 22:31, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 03.08.2007, 09:54    Titel: Antworten mit Zitat

Das mit den ***** ist nicht so schwer zu realisieren. Statt eines INPUT kannst du zum Beispiel sowas machen:

Code:
DO
  a$ = INPUT$(1)
  if a$ <> CHR$(13) THEN
    passwort$ = passwort$ + a$
    PRINT "*"
  ENDIF
LOOP until a$ = CHR$(13)

Hat noch den Nachteil, dass man beim Vertippen nicht korrigieren kann, aber das lässt sich ja verfeinern.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 03.08.2007, 10:21    Titel: Antworten mit Zitat

also vom nur angucken versteh ich deine source nicht.. komentare bitte *g*
(kann meine IDE grad nich benutzen)
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 03.08.2007, 10:27    Titel: Antworten mit Zitat

ist das Programm QB oder FB, fuer FB haette ich eine Input ersatz funktion fuer die konsole (wuerde sich aber auch einfach fuer Grafikbildschirme umschreiben lassen) in der man mit einer einfachen Parameter uebergabe die anzeige einstellen kann so das man zB bei der eingabe nur "*" sieht oder was man sonst gerne haette....
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 03.08.2007, 10:30    Titel: Antworten mit Zitat

FreeBASIC
ihr könnt gerne den source ansehen (der downloadlink funzt!)
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 03.08.2007, 10:55    Titel: Antworten mit Zitat

Code:



Type EingabeParameter
    MaxLen  as Integer
    StartX  as Integer
    StartY  as Integer
    Len     as Integer
   
    FColor  as Integer
    BColor  as Integer

    HMode   as String
End Type



'****************************************************************
Function EInput (Byval Eingabe As EingabeParameter) as String
   
    Dim as Integer Wid,Row,Lin
    Wid=Width
    Row = LOWORD(Wid)
    Lin = HIWORD(Wid)
   
    Dim inputmaxlen As Integer=Eingabe.MaxLen
    Dim      StartX As Integer=Eingabe.StartX
    Dim      StartY As Integer=Eingabe.StartY
    Dim     FeedLen As Integer=Eingabe.Len
    Dim   FontColor As Integer=Eingabe.FColor
    Dim   BackColor As Integer=Eingabe.BColor
    Dim       HMode As  String=Eingabe.HMode
    ''' Aus diesem Grund stehen sie hier...
   
    If StartX<1 Then StartX=1
    If StartY<1 Then StartY=1
   
    FeedLen=Iif(FeedLen+(StartX)>(Row-1),Row-(StartX-1),FeedLen)
   

   
    Dim key As String
    Dim cursor As Integer=1
    Dim inputstring As String
   
    Dim ViewString As String
    Dim VCursor As Integer
    Dim SS As Integer
    Dim SE As Integer
   
    Color FontColor,BackColor
    Locate StartY,StartX,0:?Space(FeedLen);
    Color 0,7
    Locate StartY,StartX,0:?Chr(32);
    Color 0,14
   
    Do
         
      key=Inkey
     
      If Len(key) Then

         Select Case Key
         
            '----------------------------'
            Case Chr(8)        'BackSpace
                If Len(inputstring) And (Cursor > 1) Then
                    inputstring = Left(inputstring, Cursor - 2) + Right(inputstring, Len(inputstring) - Cursor + 1)
                    If Cursor>1 Then Cursor -= 1
                End If
           
            '----------------------------'
            Case Chr(255,83)   'Del
                If (Cursor <= Len(inputstring)) Then
                    inputstring = Left(inputstring, Cursor - 1) + Right(inputstring, Len(inputstring) - Cursor)
                End If
           
            '----------------------------'
            Case Chr(13)       'Enter
                Return inputstring
               
            '----------------------------'
            Case Chr(27)       'ESC
                inputstring=""
           
            '----------------------------'
            Case Chr(255, 75)  'Left
                If Cursor > 1 Then Cursor -= 1
           
            '----------------------------'
            Case Chr(255, 77)  'Right
                If Cursor And (Cursor <= Len(inputstring)) Then Cursor += 1
           
            '----------------------------'
            Case Chr(255, 71)  'Pos1
                If Cursor Then Cursor = 1
           
            '----------------------------'
            Case Chr(255, 79)  'End
                If Cursor Then Cursor = Len(inputstring)+1
           
           
            Case Else
                If ( Len(inputstring) < inputmaxlen ) Then
               
                    inputstring = Left(inputstring, Cursor - 1) + Key + Right(inputstring, Len(inputstring) - (Cursor-1)    )
                    Cursor += 1
                End If
         
         End Select
     
        SS=Cursor-(FeedLen)
        SS=Iif(SS<1,1,SS)
        SE=SS+(FeedLen)
        SE=Iif(SE>Len(inputstring),Len(inputstring),SE)
       
        ViewString=Mid(inputstring,SS,1+(SE-SS))
        VCursor=Iif(SS>1,Cursor-(SS-1),Cursor)
       
        If Len(HMode) Then ViewString=String(Len(ViewString),HMode)
       
        Color FontColor,BackColor
        Locate StartY,StartX,0:?ViewString+Space((FeedLen+1)-Len(ViewString));
       
        color 7
        If SS>1 And VCursor>4 Then Locate StartY,StartX,0:?"...<<";
        If SE<Len(inputstring) And VCursor<(FeedLen-4) Then Locate StartY,(StartX+FeedLen)-5,0:?">>...";
       
        Color 15,7
        Locate StartY,(StartX-1)+VCursor,0:?Chr(Screen (StartY, (StartX-1)+VCursor, 0));

      End If
     
     
      Sleep (5)
    Loop
End Function
'****************************************************************

Dim EingabeTest as EingabeParameter
Dim Ausgabe as String
With EingabeTest
    .MaxLen=100   'Eingabe ist auf 10 zeichen begrenzt!
    .StartX=1     'Start X Position
    .StartY=1     'Start Y Position
    'ganze zeile benutzen...
    .Len=79       'Sichtbare eingabe auf 10 Zeichen begrenzt (cursor position beruecksichtigen)
                  'fuer die volle zeile (80) immer -1 fuer den Cursor bedenken
   
    .FColor=15    'Schriftfarbe
    .BColor=0     'Hintergrundfarbe
   
    .HMode="*"    'Sichtbare Eingabe wird als "*" angezeigt ""=normale ansicht
End With

Ausgabe=EInput (EingabeTest)

color 15,0
locate 5,1:?Ausgabe

sleep

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 03.08.2007, 12:52    Titel: Antworten mit Zitat

Mein Textschnipsel etwas kommentiert:
In der Schleife hole ich nach und nach eine Taste, solange bis ENTER gedrückt wir.
Code:
DO
  a$ = INPUT$(1)                ' hole eine Taste
  if a$ <> CHR$(13) THEN        ' die ENTER-Taste gehört ja nicht zum Passwort dazu
    passwort$ = passwort$ + a$  ' die gedrückte Taste wird ans Passwort angehängt
    PRINT "*"                   ' und dafür ein Sternchen angezeigt
  ENDIF
LOOP until a$ = CHR$(13)        ' ENTER wurde gedrückt


Ich bin von QBASIC ausgegangen; in FreeBASIC solltest du die $ alle weglassen und die Variablen zu Beginn DIMen:
Code:
DIM a as string, passwort as string

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 03.08.2007, 13:34    Titel: Antworten mit Zitat

DIM benutz ich nicht, da ich mit QB angefangen habe... das werd ich auch nie ablgen, weil der source dann kürzer ist (aber auch unübersichtlicher)
und dein code-schnipsel stürzt ab happy

Und das von eternal pain funzt zwar, ist mir aber zu lang und zu unübersichtlich. ich brauche nur **** ausgabe...
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 03.08.2007, 13:39    Titel: Antworten mit Zitat

Zitat:
DIM benutz ich nicht, da ich mit QB angefangen habe... das werd ich auch nie ablgen, weil der source dann kürzer ist (aber auch unübersichtlicher)


Solltest Du Dir aber angewohnen, denn es macht gegenteilig sogar uebersichtlicher!
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 03.08.2007, 13:42    Titel: Antworten mit Zitat

ja ich weiß... lass mir doch meinen stil happy
also wie bekomm ich jetz ne * lösung die kurz ist und funktioniert?!
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 03.08.2007, 13:46    Titel: Antworten mit Zitat

Also. Ohne Snippet. grinsen

Du holst mit INKEY eine Taste aus dem Tastaturpuffer. Du LOCATEst dahin wo die Sternchen sein sollen, und gibts mit PRINT "*"; ein Sternchen für jede Taste aus. Wenn die Taste Backspace ist, wird per LEFT vom String ein Zeichen abgeschnitten. Dementsprechend entfernst du weider mit PRINT space(1); einen Stern.
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 03.08.2007, 13:51    Titel: Antworten mit Zitat

Ich behaupte sicher nicht das meins die absolute loesung ist, aber sie dient nicht NUR deinem Passwort Problem, und hat zudem editier moeglichkeiten und kann ohne viel aenderungen auch als eigener Thread laufen...

Und wenn Du den Code zu lang findest um ihn in deinem Hauptsource zu nutzen dann binde Ihn doch einfach als Include ein, so musst ihn nicht mehr sehen grinsen
Ansonsten finde ich das alle einen guten und hilfreichen beitrag zu diesem Problem geliefert haben, wodurch der Rest an Dir liegt wie komfortabel Du es gern haettest lächeln
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 03.08.2007, 14:27    Titel: Antworten mit Zitat

So einen Beispielsorce also?
Bitte:
Code:
dim as string Eingabe
dim as integer passwortlaenge
dim as string sterne
dim as string Passwort

' Vordruck xD
locate 2,1:Print "Passwort : ";sterne
Do


' Wartet immer bis eine Taste gerückt wird und schreibt dann diese Taste in dem String "Eingabe" rein ;)
Eingabe= input(1)

' Erstellt jedesmal den String "Sterne", um die Sterne hinder "Passwort : " anzuzeigen.
For passwortlaenge=0 to len(passwort)
   sterne+="*"
next
' Fügt noch "Sterne" ein Leerzeichen hunzu, damit backspace auch sichtbar wird.
sterne += " "

' Schleife verlassen, wenn Enter gedrückt wird.
If Eingabe=Chr(13) then Exit Do

' Das letzte Zeichen löschen, wenn Backspace gedrückt wird wenn nicht, das zeichen von "Eingabe" hinzufügen
If Eingabe=Chr(8) Then Passwort=MID(Passwort,1,Len(Passwort)-1) else Passwort + = Eingabe :

' Erstellt ein virtuelles eingabefeld ;)
locate 2,1:Print "Passwort : ";sterne;" "

' Der String "sterne" MUSS! wieder gelöscht werden, da sonst die Anzeige fehlerhaft ist.
sterne = ""


Loop
Print Passwort
sleep

Backspace und Enter machen auch das wen von denen verlangt wird zwinkern
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.08.2007, 16:04    Titel: Antworten mit Zitat

Mark Aroni hat Folgendes geschrieben:
ja ich weiß... lass mir doch meinen stil happy

glaub mir, der kann sich verdammt schnell ändern grinsen hab auch früher ganz ekligen code geschrieben (ohne DIM, mehere befehle in 1 zeile), aber jetzt benutze ich Option Explicit, rücke ich immer schön 4 leerzeichen ein und einzelne IF-Zeilen gibt's kaum noch... alles in blöcken oder select case happy
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4702
Wohnort: ~/

BeitragVerfasst am: 03.08.2007, 16:32    Titel: Antworten mit Zitat

Zitat:
und dein code-schnipsel stürzt ab

Echt? geschockt
Bei mir nicht. Allerdings müsste es
Code:
PRINT "*";

heißen statt
Code:
PRINT "*"


Mehrere Befehle mache ich in wenigen Fällen immer noch, weil das nicht gleich automatisch unübersichtlich ist. Wenn ich beim Code-Lesen zu lange durch die Blöcke auf- und abscrollen muss, macht dies das Verstehen des Codes nicht unbedingt einfacher.

edit: und statt ENDIF lieber doch END IF (*grummel*, das ist mein Relikt aus den Vorgängersprachen)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 03.08.2007, 19:27    Titel: Antworten mit Zitat

Soo, neues Release... das sternchen problem hab ich komplett gelöst... morgen werd ich versuchen das ganze zu verschlüsseln.
die datei ist unter dem gleichen link wie oben zu finden.
Über feedback freu ich mich immer... nartürlich dürft (oder müsst) ihr das auch in eure programme mit einbinden
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 03.08.2007, 19:42    Titel: Antworten mit Zitat

Ändere doch mal
Code:
PRINT "Passwort eingeben!"
mit
Code:
PRINT "Passwort eingeben : ";

_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 03.08.2007, 20:28    Titel: Antworten mit Zitat

zeile?keine lust zu suchen *g*
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 03.08.2007, 20:34    Titel: Antworten mit Zitat

Naja, nimm's mir nicht übel, aber...
Wenn man das hier als Projekt reinstellt und auch noch will, dass das andere Programmierer verwenden, dann sollte man wenigstens so sehr interessiert daran sein, dass man solche kleinen Änderungen mal auch selbst macht...
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.08.2007, 20:34    Titel: Antworten mit Zitat

Wozu gibt's im editor eine suchfunktion? durchgeknallt
aber wennschon, dann bitte richtig und kein leerzeichen vor dem doppelpunkt *g*
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz