Avatar billede eromaster Nybegynder
15. juni 2001 - 00:08 Der er 16 kommentarer og
1 løsning

Nemt / Hurtigt

Jeg har lavet et banding system, så bestemte folk ikke kan se min hjemmeside....

Sådan ser min default.asp ud (dette er kun banding systemmet)!!

<%
Set objConn = Server.CreateObject(\"ADODB.Connection\")
DSN= \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"../../mdb/settings.mdb\")
objConn.Open DSN
ip = Request.ServerVariables(\"REMOTE_ADDR\")
SQL = \"SELECT banned FROM banned WHERE banned = \'\" & ip & \"\'\"
Set objRS = objConn.Execute(SQL)
If objRS.EOF Then
Response.Redirect(\"default.asp\")
Else
Response.Redirect(\"banned.asp\")
End if
objRS.close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>


som man se hvis folk ip ikke er i databasen skal den IKKE redirecte til den default.asp igen!!!

Response.Redirect(\"default.asp\")

Hvad skriver man så den ikke skal gøre noget udover at vise resten af default.asp???
Avatar billede tdaugaard Nybegynder
15. juni 2001 - 00:12 #1
Sådan:

<%
Set objConn = Server.CreateObject(\"ADODB.Connection\")
DSN= \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"../../mdb/settings.mdb\")
objConn.Open DSN
ip = Request.ServerVariables(\"REMOTE_ADDR\")
SQL = \"SELECT banned FROM banned WHERE banned = \'\" & ip & \"\'\"
Set objRS = objConn.Execute(SQL)
If Not objRS.EOF Then Response.Redirect(\"banned.asp\")
objRS.close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
Avatar billede jakobandersen Nybegynder
15. juni 2001 - 00:13 #2
Udskift dette:

If objRS.EOF Then
Response.Redirect(\"default.asp\")
Else
Response.Redirect(\"banned.asp\")
End if

Med dette:

If Not objRS.EOF Then
Response.Redirect(\"banned.asp\")
End if
Avatar billede eromaster Nybegynder
15. juni 2001 - 00:16 #3
Se det er vanskeligt det her.... i har begge to ret... men jeg kan bedst lide moonducks metode, sorry tdaugaard!! :o)
Avatar billede tdaugaard Nybegynder
15. juni 2001 - 00:17 #4
eromaster:> HVAD !?! Hvad faen har du gang i ? Vi svarede nøjagtigt ens ... bortset fra at moonduck brugte 3 linier istedet for een .. Det er bedre at bruge en single-line If når man kan !!!!!
Avatar billede tdaugaard Nybegynder
15. juni 2001 - 00:19 #5
eromaster:> eftersom jeg svarede først og var HELT korrekt burde jeg have haft pointene ...  men 15 latterlige point .. jeg synes bare det er en lad holdning at have ...
Avatar billede eromaster Nybegynder
15. juni 2001 - 00:20 #6
okay rolig da... hmm troede folk var venlige, men næh nej!!! :o(

Det er åbenbart point der betyder noget her...!!!    (KA BLAH)
Avatar billede eromaster Nybegynder
15. juni 2001 - 00:25 #7
Tdaugaard du kan få din EKSTREMT VIGTIGE POINT her:

http://www.eksperten.dk/spm/81717
Avatar billede jakobandersen Nybegynder
15. juni 2001 - 00:25 #8
eromaster>>
tdaugaard burde ha\' haft pointene.

tdaugaard>>
Det er ikke altid Godt at skrive ned til en linie, dette er et fremragende eksempel på at det kan virke uoverskueligt.

Dermed ikke sagt at du ikke skulle have haft pointene

(Vi kan sagtens arrangere en \"overdragelse\" hvis du insisterer)
Avatar billede eromaster Nybegynder
15. juni 2001 - 00:28 #9
Moonducks metode var mere overskuelig, derfor brugte jeg den!!!
Avatar billede thoeger_poertner Nybegynder
15. juni 2001 - 00:42 #10
Det er normalt at man giver den første med rigtigt svar, Points...
Avatar billede eromaster Nybegynder
15. juni 2001 - 01:08 #11
jajajajajajjajajajajajajajajaj tdaugaard kan da tage imod de andre point.... så er vi alle frelst
Avatar billede thoeger_poertner Nybegynder
15. juni 2001 - 01:15 #12
Rolig nu!
Avatar billede tdaugaard Nybegynder
15. juni 2001 - 11:36 #13
moonduck:> som jeg skrev, 15 latterlige point .. jeg har ikke BRUG for point er fløjtende ligeglad, men hvis det havde været 100 eller 200 ... ja så ku vi begynde at snakke .. men det er en princip sag.. som thoeger_poertner siger plejer man normalt at give den der svarer først, med det rigtige svar point.

Det er ikke altid godt ? Faktisk bruger VBScript\'s motor MERE tid på at udføre en block-IF end en single-line IF. Uoverskueligt ? Tillad mig at grine HØJLYDT!!! Prøv at se hans kode. . det bliver sku da ikke mere uoverskueligt end det er i forvejen ..

objRs.Close ? Man lukker ikke et RecordSet når ikke man har åbnet det !

<%
Set objConn = Server.CreateObject(\"ADODB.Connection\")
objConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"../../mdb/settings.mdb\")

strIP = Request.ServerVariables(\"REMOTE_ADDR\")
Set objRS = objConn.Execute(\"SELECT banned FROM banned WHERE banned = \'\" & strIP & \"\';\")
If Not objRS.EOF Then Response.Redirect \"banned.asp\"

Set objRS = Nothing
objConn.Close: Set objConn = Nothing
%>

sådan burde det se ud, og det mere overskueligt bliver det ikke. Hvis du istedet bruger 3 linier på en IF der KUNNE stå på een linie, og den stadig var overskueligt (dvs. ikke for mange And/Or\'s) så ser det amatør agtigt ud... det er det måske også, men der er ingen grund til at bruge mere kode end højst nødvendigt.
Avatar billede tdaugaard Nybegynder
15. juni 2001 - 11:37 #14
eromaster:> jeg vil ikke have de 15 point. Det er en princip sag !
Avatar billede jakobandersen Nybegynder
15. juni 2001 - 14:17 #15
tdaugaard>> Du har ret i at interpretteren er langsommer end en kode spredt på flere linier.. Men at man ikke skal lukke et recordset når man har brugt

Ser objRS = objConn.Execute()

er forkert Execute metoden på connection objektet returnerer nemlig en reference til et åbent recordset. Men sålænge du bruger

Set objRS = Nothing

kan man godt stole på IIS´s garbage collector og den plejer da også at fungere fint med Recordsetobjektet.
Avatar billede tdaugaard Nybegynder
15. juni 2001 - 14:26 #16
moonduck:>

Når du ikke bruger

objRs.Open så åbner du ikke recordsættet, men sætte en reference til et og derfor skal det ikke lukkes.

Det kan godt være du referer til et åbent recordset, men ligeså snart du sætter referencen til Nothing så lukkes og slettes det.
Avatar billede jakobandersen Nybegynder
15. juni 2001 - 15:23 #17
Selvom du bare refererer til objektet skal det også lukkes!

Men som sagt din måde er også helt fjong da Set x = Nothing får garbage collectoren til at lukke objektet.

Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester