For-geknurze
Bin an einer Passwortabfrage mittels WBAT jedoch krieg ich die abfrage einfach nicht hin
Ich habe ein Formular kriert mittels welchem man neue User hinzufügen kann. Bevor es den User jedoch "Verschlüsselt" in die Datenbank überträgt soll jedoch geprüft werde ob der Name schon angelegt wurde.
Hier der entsprechende code:
Hier wirft er mich nach ADDUSER raus und da hab ich ein echo welches mir eigentlich angeben würde dass mail = DBmail wäre.... daher frage ich mich warum er den falschen Ausgang nimmt?
Selbiges passiert bei der nächsten Abfrage (wo die codierten Passwörtter und Benutzernamen überprüft werden.
Hier wirft er mich einfach nach LOGINERROR durch die letzte Zeile mit dem error=0, Heisst hier macht er gar nix bei der Abfrage...
Was ist hier bloss falsch? Ich komm nicht drauf Ich wette fast es ist eine Klammer so wie in den Meisten Forenbeiträgen zu diesem Thema ;)
Ich habe ein Formular kriert mittels welchem man neue User hinzufügen kann. Bevor es den User jedoch "Verschlüsselt" in die Datenbank überträgt soll jedoch geprüft werde ob der Name schon angelegt wurde.
Hier der entsprechende code:
if exist system.cry ( for /f "tokens=1-3 delims=- " %%i in ('findstr "%mail%" "%cd%\system.cry"') do set "crypt1o=%%i"& set "crypt2o=%%j" & set "DBmail=%%k"
if "%mail%" == "%DBmail%" ( set "error=Benutzer schon vorhanden" goto LOGINERROR ) else ( goto ADDUSER )
) else ( set error=Fehlende Datenbank & goto LOGINERROR )
set "error=Fehler in der Befehlsschleife"
goto LOGINERROR
Hier wirft er mich nach ADDUSER raus und da hab ich ein echo welches mir eigentlich angeben würde dass mail = DBmail wäre.... daher frage ich mich warum er den falschen Ausgang nimmt?
Selbiges passiert bei der nächsten Abfrage (wo die codierten Passwörtter und Benutzernamen überprüft werden.
set error=0
if exist system.cry ( for /f "tokens=1-3 delims=-" %%i in ('findstr "%crypt1%" "%cd%\system.cry"') do set "crypt1o=%%i"& set "crypt2o=%%j" & set "DBmail=%%k"
if "%crypt1%"=="%crypt1o%" if "%crypt2%"=="%crypt2o% ( goto START ) else set "error=Benutzername oder Passwort falsch" & goto LOGINERROR
) else ( set error=Fehlende Datenbank & goto LOGINERROR )
)
goto LOGINERROR
Was ist hier bloss falsch? Ich komm nicht drauf Ich wette fast es ist eine Klammer so wie in den Meisten Forenbeiträgen zu diesem Thema ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 204945
Url: https://administrator.de/forum/for-geknurze-204945.html
Ausgedruckt am: 25.12.2024 um 14:12 Uhr
4 Kommentare
Neuester Kommentar
Hi Apop85,
denke der Fehler im ersten Code liegt in Zeile 02:
das goto ist ohne & angehängt.
für den zweiten Code: versuch doch den Code mal übersichtlicher zu schreiben wen du meinst es liegt an einer Klammer, dann verlierst du nicht den Überblick:
Grüße Uwe
denke der Fehler im ersten Code liegt in Zeile 02:
...( set "error=Benutzer schon vorhanden" goto LOGINERROR )...
für den zweiten Code: versuch doch den Code mal übersichtlicher zu schreiben wen du meinst es liegt an einer Klammer, dann verlierst du nicht den Überblick:
set error=0
if exist system.cry (
for /f "tokens=1-3 delims=-" %%i in ('findstr "%crypt1%" "%cd%\system.cry"') do @(
set "crypt1o=%%i"
set "crypt2o=%%j"
set "DBmail=%%k"
)
if "%crypt1%"=="%crypt1o%" (
if "%crypt2%"=="%crypt2o% (
goto START
) else (
set "error=Benutzername oder Passwort falsch"
goto LOGINERROR
)
) else (
set error=Fehlende Datenbank
goto LOGINERROR
)
)
goto LOGINERROR
Grüße Uwe
... wobei die neu erstellten Variablenwerte %crypt1o%, %crypt2o% und %DBmail% ohne "delayedExpansion" ja ohnehin erst nach Zeile 19 zur Verfügung stünden - daher vielleicht besser
oder zumindest für die Abfragen anstelle von %crypt1o% und %crypt2o% die Variablen %%i und %%j verwenden ...
Anmerkungen:
Grüße
bastla
set error=0
if not exist system.cry (
set "error=Fehlende Datenbank"
goto LOGINERROR
)
for /f "tokens=1-3 delims=-" %%i in ('findstr "%crypt1%" "system.cry"') do (
set "crypt1o=%%i"
set "crypt2o=%%j"
set "DBmail=%%k"
)
if "%crypt1%"=="%crypt1o%" if "%crypt2%"=="%crypt2o% goto START
set "error=Benutzername oder Passwort falsch"
goto LOGINERROR
Anmerkungen:
- Anstatt %error% mit 0 vorzubelegen würde ich die Variable gänzlich mit
set "error="
löschen und später dann mitif defined error
abfragen, da das auch ohne "delayedExpansion" jederzeit möglich ist. - Die Angabe eines Pfades mit "%cd%\" ist entbehrlich - es wird ohnehin das aktuelle Verzeichnis verwendet, wenn kein Pfad angegeben ist.
Grüße
bastla