![]() |
Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Hallo,
hat jemand eine Idee wie man ein Edit so zurecht biegt, dass es bei der Passworteingabe die Zeichen mit Sternchen versteckt, aber nicht das letzte Zeichen oder, dass das letzte Zeichen nach 1 Sek. auch zum Sternchen wird? So wie auf Smartphones üblich. Die Eigenschaft "PasswordChar" kenne ich, aber es macht alles erkennbar oder nicht. Vielen Dank! |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Wird bei Smartphones das letzte Zeichen nicht ebenfalls mit einem Sternchen oder Punkt verdeckt? Soweit ich das bislang beobachten konnte, stellt das zuletzt eingegeben Zeichen keine Ausnahme dar, sondern wird ebenfalls nach kurzer Zeit versteckt. |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Aber ich halte es für ein Sicherheitsrisiko. Am PC oder Laptop guck einem doch schon mal eher einer über die Schulter und man kann sich nicht mal eben schnell weg drehen. Beim Handy ist es wohl der etwas popeligen Tastatur geschuldet und ein Kompromiss zwischen Sicherheit und Benutzerfreundlichkeit. Also ich würde da nicht viel Mühe und zeit investieren. Zumal das Verhalten auf einem Rechner auch eher ungewohnt wäre. |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Sherlock |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
(kleines) Sicherheitsrisiko...klar, aber wenn er es so möchte. Abgesehen davon ist es schon hilfreich für den User, wenn er "kurz" kontrollieren kann, was er eingegeben hat (Stichwort Feststelltaste). Ich mag dieses Verhalten jedenfalls und würde das Problem mit dem Canvas angehen, und für kurze Zeit einfach das zuletzt eingegebene Zeichen anzeigen, dann kann man den Inhalt des TEdit normal auslesen, und braucht keine Hilfsvariable.
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
@mm1256: Schonmal in einem Passworteingabefeld die Feststelltaste benutzt? Dann hast du sicher den Balloon Tip des Systems bemerkt, der auf eben diesen Umstand (Caps Lock) hinweist. IIRC funktioniert das sogar mit älteren Delphis erstellter Software. Mit anderen Worten: diese Taste ist kein sinnvolles Argument für ein solches Verhalten. Und ein Danebentippen wie beim Handy/Smartphone ist nun auch eher unwahrscheinlich, weil die Tasten doch schon was größer sind.
MfG Dalai |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Ich benutze jetzt seit 20 Jahren Computer und hatte an PCs noch nie Probleme ein Passwort einzugeben. Auch habe ich noch nie gehört, dass jemand bei der Passworteingabe verzweifelt ist.
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Hallo Luckie,
ich schon :) Wir haben bei uns auch ein "Passwort zeigen". Heiko |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Lustig: Der Kommentar 'Sicherheitsrisiko, wenn Dir einer über die Schulter schaut', kam bisher bei dem Wunsch des TE, das letzte Zeichen kurz anzeigen zu lassen, aber eine Checkbox 'Ganzes Kennwort anzeigen, sodass jeder mitlesen kann' wird nicht moniert. :lol:
Also, der Vollständigkeit halber: Es ist ein großes Sicherheitsrisiko, sich über einen Schalter/Checkbox das Kennwort im Klartext anzeigen zu lassen. |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Wobei der Benutzer bei der CheckBox die Sicherheit selber in der Hand hat und bei einem Edit-Feld, dass das letze eingegebene Zeichen immer (für eine bestimmte Zeit) anzeigt, eben nicht.
Bei einem Mobile-Device kann ich mich auch mal eben wegdrehen und schon sieht keiner mehr etwas, oder eben nur Fragmente. Bei einem Desktop-System ist das mit dem eben mal wegdrehen etwas schwieriger. Generell wurde bei den Mobile-Devices diese Art der Passworteingabe (mit Feedback zum letzten Zeichen) eingeführt, weil es eben keinen echten Feedback gibt, ob ich einen Taste nun gedrückt habe oder nicht und ob ich auch wirklich die Taste erwischt habe die ich wollte. Eine Tastatur mit echten Tasten liefert da ein wesentlich mehr Feedback, auch wenn man mal ein wenig neben die eigentliche Taste haut. Und es ist kein perfektes System um in allen Lebenslagen das Passwort immer und unter jeden Umständen korrekt eingeben zu können. Es soll die Eingabe nur um etwas mehr Feedback anreichern. |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Aber um mal auf das Problem zurückzukommen. Man müsste da wohl was mit einem Timer bauen, die Eingaben durch echte Sternchen ersetzen und sich die echte Eingabe irgendwo merken. So sollte es irgendwie gehen. Aber wie gesagt, mir wäre das zu mühsam, so was jetzt zu implementieren.
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Um das schon mal vorzubereiten erzeugt man sich einfach eine neue Komponente
Delphi-Quellcode:
implementiert die rudimentär so wie es auf die Schnelle eben geht und verwendet diese dort, wo benötigt.
TSpecialPasswordEdit
Hat man irgendwann Zeit, diese Funktionaltät dort einzubauen, kompiliert man einfach die Anwendung neu und schwupps ist es fertig. |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
![]() Zitat:
Zitat:
Ach ja, man muß natürlich auch die Del- und die Backspace-Taste entsprechend berücksichtigen, da ja die Merkvariable immer aktualisiert werden muß, also vielleicht sechs Minuten, als Anfänger wären das dann vielleicht 30 Minuten ... :cyclops: |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Das Problem ist, meine Anwendung läuft ohne Tastatur, muss also für die Passworteingabe 9 Buttons erstellen, mit Zahlen und Buchstaben, so wie die alten Handys das haben. Die virtuelle Tastatur von Windows will ich aus bestimmten Gründer nicht nutzen. Ich arbeite also noch an meiner "Handy-Tastatur", die Passwortversteckerei kommt noch. ))
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Wo ist da das Problem? Das ist doch kein Problem, das ist lediglich eine Aufgabe. Ein Problem wäre es, wenn du nicht weiterkämst, also nicht wüßtest, wie du das programmieren kannst.
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Delphi-Quellcode:
Oder habe ich auf die schnelle etwas übersehen? (geht sicherlich auch schöner)
var
Ein,PW : ShortString; procedure TForm86.Edit1Change(Sender: TObject); begin Ein := Edit1.Text; Timer1.Enabled := true; end; procedure TForm86.Timer1Timer(Sender: TObject); var i : integer; begin Timer1.Enabled := false; for i:=1 to length(Ein) do if (Ein[i] <> '*') and (Length(Ein) > Length(PW)) then PW := PW + Ein[i]; PW[0] := Ein[0]; for i:=1 to length(Ein) do Ein[i] := '*'; Edit1.Text := Ein; Edit1.SelStart := Length(Ein); end; |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
@Mavarik Sage mal, du schaltest den Timer vor dem zu verarbeitenden Code aus, ist das gut so? Ich weiß der Code wird abgearbeitet, aber ich hatte immer bedenken bei sowas...
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Ich möchte doch nicht, dass die ganze Zeit der Timer in 250ms feuert... |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Im OnTimer-Event schaltet man doch immer den Timer aus. Oder habe ich etwas verpasst?
Sherlock |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Wenn ich einen zyklischen Timer brauche schalte ich Ihn doch nicht ab... Wenn ich den Timer refreshen will dann ein
Delphi-Quellcode:
OK... Oder meine Routine dauert länger als das Interval des Timers (Ich hoffe nicht)... dann auch...
Timer1.Enabled := false;
Timer1.Enabled := true; |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Wenn der Benutzer gar nicht in das Feld klicken können soll und in dem Feld selber keine Eingabe vornehmen soll, warum nimmt man dann überhaupt ein
Delphi-Quellcode:
? :gruebel:
TEdit
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Oder einfach so
Delphi-Quellcode:
Und falls nun doch die Tastatur zugelassen werden soll, dann erreicht man das ganz simpel mit
unit Forms.MainForm;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons; type TMainForm = class( TForm ) PasswordLabel: TLabel; Num0Button: TSpeedButton; {OnClick -> NumButtonClick} Num1Button: TSpeedButton; {OnClick -> NumButtonClick} Num2Button: TSpeedButton; {OnClick -> NumButtonClick} Num3Button: TSpeedButton; {OnClick -> NumButtonClick} Num4Button: TSpeedButton; {OnClick -> NumButtonClick} Num5Button: TSpeedButton; {OnClick -> NumButtonClick} Num6Button: TSpeedButton; {OnClick -> NumButtonClick} Num7Button: TSpeedButton; {OnClick -> NumButtonClick} Num8Button: TSpeedButton; {OnClick -> NumButtonClick} Num9Button: TSpeedButton; {OnClick -> NumButtonClick} ClearButton: TSpeedButton; {OnClick -> ClearButtonClick} BackspaceButton: TSpeedButton; {OnClick -> BackspaceButtonCLick} Timer1: TTimer; procedure Timer1Timer( Sender: TObject ); procedure FormShow( Sender: TObject ); procedure NumButtonClick( Sender: TObject ); procedure BackspaceButtonClick( Sender: TObject ); procedure ClearButtonClick( Sender: TObject ); private FPassword: string; procedure AddKey( const AChar: Char ); procedure ClearPassword; procedure PresentPassword; public property Password: string read FPassword; end; var MainForm: TMainForm; implementation {$R *.dfm} uses System.StrUtils; { TMainForm } procedure TMainForm.AddKey( const AChar: Char ); begin case AChar of #8: begin if Length( FPassword ) > 0 then begin SetLength( FPassword, Length( FPassword ) - 1 ); PasswordLabel.Caption := DupeString( '*', Length( FPassword ) ); end; end; '0' .. '9': begin Timer1.Enabled := False; PasswordLabel.Caption := DupeString( '*', Length( FPassword ) ) + AChar; FPassword := FPassword + AChar; Timer1.Enabled := True; end; end; end; procedure TMainForm.BackspaceButtonClick( Sender: TObject ); begin AddKey( #8 ); end; procedure TMainForm.ClearButtonClick( Sender: TObject ); begin ClearPassword; end; procedure TMainForm.ClearPassword; begin FPassword := ''; PasswordLabel.Caption := ''; end; procedure TMainForm.FormShow( Sender: TObject ); begin PresentPassword; end; procedure TMainForm.NumButtonClick( Sender: TObject ); var Button: TComponent absolute Sender; begin AddKey( Button.Name[ 4 ] ); // Ich bin halt faul ;o) end; procedure TMainForm.PresentPassword; begin PasswordLabel.Caption := DupeString( '*', Length( FPassword ) ); end; procedure TMainForm.Timer1Timer( Sender: TObject ); begin TTimer( Sender ).Enabled := False; PresentPassword; end; end.
Delphi-Quellcode:
procedure TMainForm.FormKeyPress( Sender: TObject; var Key: Char );
begin AddKey( Key ); end; |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Cool... muss das ma unter die Lupe nehmen... :-D
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Also ich würde ja aufpassen bei der Zeile
Delphi-Quellcode:
Das sieht mir sehr danach aus, als solle da eigentlich Sender in die Klammern.
TTimer( Self ).Enabled := False;
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Ja, war ein Vertippser ... merci :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz