Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 03.08.2007, 09:36 Titel: Login-Programmteil |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4703 Wohnort: ~/
|
Verfasst am: 03.08.2007, 09:54 Titel: |
|
|
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 |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 03.08.2007, 10:21 Titel: |
|
|
also vom nur angucken versteh ich deine source nicht.. komentare bitte *g*
(kann meine IDE grad nich benutzen) _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 03.08.2007, 10:27 Titel: |
|
|
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 |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 03.08.2007, 10:30 Titel: |
|
|
FreeBASIC
ihr könnt gerne den source ansehen (der downloadlink funzt!) _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 03.08.2007, 10:55 Titel: |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4703 Wohnort: ~/
|
Verfasst am: 03.08.2007, 12:52 Titel: |
|
|
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 |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 03.08.2007, 13:34 Titel: |
|
|
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
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 03.08.2007, 13:39 Titel: |
|
|
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 |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 03.08.2007, 13:42 Titel: |
|
|
ja ich weiß... lass mir doch meinen stil
also wie bekomm ich jetz ne * lösung die kurz ist und funktioniert?! _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 03.08.2007, 13:46 Titel: |
|
|
Also. Ohne Snippet.
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 03.08.2007, 13:51 Titel: |
|
|
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
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  _________________
 |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 03.08.2007, 14:27 Titel: |
|
|
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  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 03.08.2007, 16:04 Titel: |
|
|
Mark Aroni hat Folgendes geschrieben: | ja ich weiß... lass mir doch meinen stil  |
glaub mir, der kann sich verdammt schnell ändern 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  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4703 Wohnort: ~/
|
Verfasst am: 03.08.2007, 16:32 Titel: |
|
|
Zitat: | und dein code-schnipsel stürzt ab |
Echt?
Bei mir nicht. Allerdings müsste es
heißen statt
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 |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 03.08.2007, 19:27 Titel: |
|
|
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 |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 03.08.2007, 19:42 Titel: |
|
|
Ändere doch mal Code: | PRINT "Passwort eingeben!" | mit Code: | PRINT "Passwort eingeben : "; |
_________________ Bis irgendwann...  |
|
Nach oben |
|
 |
The_Muh aka Mark Aroni

Anmeldungsdatum: 11.09.2006 Beiträge: 718
|
Verfasst am: 03.08.2007, 20:28 Titel: |
|
|
zeile?keine lust zu suchen *g* _________________ // nicht mehr aktiv // |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 03.08.2007, 20:34 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 03.08.2007, 20:34 Titel: |
|
|
Wozu gibt's im editor eine suchfunktion?
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 |
|
 |
|