06. januar 2003 - 21:23Der er
15 kommentarer og 1 løsning
Ret i txt fil
Jeg har følgende indhold i en txt fil, hvordan får man rettet f.eks. Pass=123456 til Pass=654321? Problemet er at pass= ikke står i samme linie hvergang, kan man lave søg og erstat i en txt fil? [test] Login=test Pass=123456 Home-Ip=-= All IP Homes =- TimeOut=600 MaxConPerIp=1 MaxUsers=0 RatioMethod=0 RatioUp=1 RatioDown=1 RatioCredit=0 MaxSpeedRcv=512 MaxSpeedSnd=512 QuotaCurrent=0 QuotaMax=0 Dir0=D:\InetPub\ Attr0=RWDAMLSK Stat_Login=1 Stat_LastLogin=06-01-2003 21:15:10 Stat_LastIP=192.168.0.40 Stat_KBUp=0 Stat_KBDown=0 Stat_FilesUp=0 Stat_FilesDown=0 Stat_FailedUp=0 Stat_FailedDown=0
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
<% Dim fso, f, filespec Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("/din_fil.txt") Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream If Left(f.ReadLine, 4) = "Pass" Then NyTekst = NyTekst & Replace(f.ReadLine, GammeltPass, NytPass) & vbCrlf Else NyTekst & NyTekst & f.ReadLine & vbCrlf Loop
Set f = fso.OpenTextFile(filespec,2) f.Write NyTekst
<% Dim fso, f, filespec Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("/din_fil.txt") Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream Linie = f.ReadLine If Left(Linie, 4) = "Pass" Then NyTekst = NyTekst & Replace(Linie, GammeltPass, NytPass) & vbCrlf Else NyTekst & NyTekst & Linie & vbCrlf End If Loop
Set f = fso.OpenTextFile(filespec,2) f.Write NyTekst
din kode virker men jeg har stadig et lille problem :-) hvis der er 2 bruger med den samme kode går det galt, kan man lave den så den finder Login=test og retter i linien der kommer lige efter ?
<% Dim fso, f, filespec Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("/din_fil.txt") Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream
Linie = f.ReadLine
If RetLinie Then NyTekst = NyTekst & Replace(Linie, GammeltPass, NytPass) & vbCrlf RetLinie = false Else NyTekst = NyTekst & Linie & vbCrlf End If
If Left(Linie, 5) = "Login" Then RetLinie = true End If
Loop
Set f = fso.OpenTextFile(filespec,2) f.Write NyTekst
Hvad mangler jeg? Når jeg retter If Left(Linie, 5) = "Login" Then til If Left(Linie, 5) = "Login=" & user Then retter den ikke i ini filen, og hvis den står til If Left(Linie, 5) = "Login" Then retter den alle pass der er i ini filen :-) min asp kode: <% user = "test" GammeltPass = "123" NytPass = "123456" Dim fso, f, filespec Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("../database/Users.ini") Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream
Linie = f.ReadLine
If RetLinie Then NyTekst = NyTekst & Replace(Linie, GammeltPass, NytPass) & vbCrlf RetLinie = false Else NyTekst = NyTekst & Linie & vbCrlf End If
If Left(Linie, 5) = "Login=" & user Then RetLinie = true End If
Loop
Set f = fso.OpenTextFile(filespec,2) f.Write NyTekst
f.Close %>
Min ini fil [admin] Login=admin Pass=123 Home-Ip=-= All IP Homes =- TimeOut=600 MaxConPerIp=1 MaxUsers=0 RatioMethod=0 RatioUp=1 RatioDown=1 RatioCredit=0 MaxSpeedRcv=512 MaxSpeedSnd=512 QuotaCurrent=0 QuotaMax=0 Dir0=D:\InetPub\ Attr0=RWDAMLSK Stat_Login=1 Stat_LastLogin=06-01-2003 21:15:10 Stat_LastIP=192.168.0.40 Stat_KBUp=0 Stat_KBDown=0 Stat_FilesUp=0 Stat_FilesDown=0 Stat_FailedUp=0 Stat_FailedDown=0
Left tager de første (i dette tilfælde 5 karakterer) af linien. Dvs. ordet "Login". Hvis du vil have brugernavn bagpå, kan du stryge Left, da du så har hele linien.
Yeps nu virker den. Jeg tænkte på om det kunne lade sig gøre, at lave den så den retter pass="gl.kode" til pass="nykode" uden at tjekke GammeltPass først.
Nu rettes linien med password til "Pass=XXX", uanset hvad der stod før:
<% user = "test" GammeltPass = "123" NytPass = "123456" Dim fso, f, filespec Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("../database/Users.ini") Set f = fso.OpenTextFile(filespec,1)
Do While not f.AtEndOfStream
Linie = f.ReadLine
If RetLinie Then NyTekst = NyTekst & "Pass=" & NytPass & vbCrlf RetLinie = false Else NyTekst = NyTekst & Linie & vbCrlf End If
If LCase(Linie) = LCase("Login=" & user) Then RetLinie = true End If
Loop
Set f = fso.OpenTextFile(filespec,2) f.Write NyTekst
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.