Avatar billede bpedersen Novice
01. januar 2009 - 21:08 Der er 8 kommentarer og
1 løsning

If - flere ting skal være opfyldt

Godt Nytår !

Jeg har nedenstående script jeg gerne vil have til at validere på både "bruger" og "brugerpassword"
Så min ide er at det må være noget med at HVIS bruger = indtastet brugeremail OG brugerpassword = indtastet password.

Jeg kan ikke rigtigt få det til at fungere, og håber der er en der kan hjælpe mig! 



<%
  Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("/log/email.mdb")
Conn.Open DSN

  bruger = replace(Request.Form("brugeremail"),"'","")
  password = replace(Request.Form("brugerpassword"),"'","")

  'tjek om bruger findes
  SQL = "select * from nyhedsmail where bruger = '" &bruger& "'"
  Set rs=Conn.Execute(SQL)
  if not rs.EOF then
    SQL = "update nyhedsmail set aktiv=1 where bruger = '" &bruger& "'"
    Conn.Execute(SQL)
    Response.Redirect("default1.asp?m=tak_tilmeld")
Else
Response.Redirect("default1.asp?m=ej_oprettet")

  end if
 
  ' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

%>
Avatar billede softspot Forsker
01. januar 2009 - 21:15 #1
Udskift denne SQL-sætning:

  SQL = "select * from nyhedsmail where bruger = '" &bruger& "'"

med denne:

  SQL = "select * from nyhedsmail where bruger = '" &bruger& "' AND brugerpassword = '" & password & "'"

Det forudsætter naturligvis at feltet brugerpassword findes i tabellen nyhedsmail... :-)
Avatar billede bpedersen Novice
01. januar 2009 - 21:17 #2
tak softspot, det prøver jeg lige :o)
Avatar billede bpedersen Novice
01. januar 2009 - 21:33 #3
softspot> Det var den forkerte kode jeg har sat ind :o) - - - Vil du prøve at kigge på denne istedet?

Mit problem er at den sætter aktiv til 1, uanset hvilken kode det tastes i formularen.
Jeg vil gerne have det sådan, at den KUN skal opdatere hvis 1. brugeren(mobil) er i DB, og 2. hvis der er indtastet den korrekte kode(password). Kan du se hvad der er galt med koden?

pft.

<%
  Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("/log/skosms.mdb")
Conn.Open DSN

  mobil = replace(Request.Form("mobil"),"'","")
  password = replace(Request.Form("password"),"'","")

  'tjek om bruger findes
SQL = "select * from nyhedsmail where mobil = '" &mobil& "' AND userpass = '" & password & "'"

  Set rs=Conn.Execute(SQL)
  if not rs.EOF then
    SQL = "update nyhedsmail set aktiv=1 where mobil = '" &mobil& "'"
    Conn.Execute(SQL)
    Response.Redirect("default1.asp?m=tak_tilmeld")
Else
Response.Redirect("default1.asp?m=forkert_kode")
  end if
 
  ' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing

%>
Avatar billede bpedersen Novice
01. januar 2009 - 21:35 #4
Hvis det ikke er den rigtige kode der er indtastet skal brugeren sendes til findes_ikke.asp.
Avatar billede softspot Forsker
01. januar 2009 - 21:50 #5
Umiddelbart ser det korrekt ud. Jeg går ud fra at din Response.Redirect("default.asp?m=forkert_kode") svarer til findes_ikke.asp, ellers skal du naturligvis omdirigere til findes_ikke.asp i stedet for default.asp i else-delen af din if-sætningen...

Dog vil jeg påpege at din forbindelse ikke bliver lukket da du omdirigerer (redirect) brugeren, inden conn.close kaldes (udførsel af kode på siden stoppes ved bla. Response.Redirect). Det kan få konsekvenser for tilgængeligheden af forbindelser til databasen, hvis der kommer lidt trafik på din server. Du bør altså kalde Conn.Close inden Response.Redirect (begge steder).
Avatar billede softspot Forsker
01. januar 2009 - 21:58 #6
Hvis det stadig ikke fungerer, så tjek lige om felterne i din formular hedder mobil og password, altså noget i stil med:

<input type="text" name="mobil"...>
<input type="password" name="password"...>

det kan sagtens være sådan noget der driller. Du kan evt. prøve at udskrive SQL-sætningen inden du udfører den. Det afslører typisk årsagen til problemer med SQL der ikke opfører sig som det skal :-)

Altså noget i stil med:

SQL = "select * from nyhedsmail where mobil = '" &mobil& "' AND userpass = '" & password & "'"

Response.Write SQL
Response.End

Set rs=Conn.Execute(SQL)

Så kan du evt. se om feltere mobil og password indeholder det du forventer...
Avatar billede bpedersen Novice
01. januar 2009 - 22:14 #7
Takker - Det var en tastefejl i formular-siden. Jeg siger mange tak for hjælpen. Smider du er svar?
Avatar billede softspot Forsker
01. januar 2009 - 22:42 #8
Velbekomme :)
Avatar billede softspot Forsker
02. januar 2009 - 04:35 #9
Tak for point :)
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

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