Archief - ASP: probs met login

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Eduw

Legacy Member
Dit is mijn code:

Code:
<%
   dim strSQL
   dim objConn
   dim objRs
   dim strGebruiker
   dim strPass
   dim strAcces         
      if session("Gebr") <> "" then
         response.write("<div>Je bent ingelogd als [" & session("Gebr") & "].<br><a href='logout.asp'>Afmelden</a>.</div>")
      else
         if request.Form("inloggen") = 1 then
            if (request.Form("gebr") = "") or (request.Form("pass") = "") then
               response.Write("U dient zowel user als paswoord in te geven.")
            else
               strSQL = "select * from Users where gebruikersnaam ='"&request.Form("gebr")&"'"
               set objConn = server.CreateObject("adodb.connection")
               objConn.open application("Conn_String")
               set objRs = server.CreateObject("adodb.recordset")
               objRs.open strSQL, objConn
               do until objRs.EOF
                  strGebruiker = objRs("gebruikersnaam")
                  strPass = objRs("wachtwoord")
                  strAcces = objRs("niveau")
                  objRs.MoveNext
               loop
                     
               if (request.Form("gebr") = strGebruiker) and (request.Form("pass") = strPass) then
                  session("Gebr") = strGebruiker
                  'session("UserID") = strPass
                  'session("UserLevel") = strAcces
                        
                  response.Write("Je wordt ingelogd.<br>")
                  response.Write("Als je binnen de 2 seconden niet wordt omgeleid naar de startpagina,<br>")
                  response.Write("klik dan <a href='index.asp'>hier</a>.")
                  response.Write("</div>")
                  response.Write("</div>")
                  response.Write("</div>")
                  response.Write("<meta http-equiv='refresh' content='2;url=index.asp'>")
               else
                  response.Write("Foutieve gegevens")
               end if
            end if
         else
            %>
            <form method="post" action="login.asp">
            <input type="hidden" name="inloggen" value="1">
            <table width="200px" border="0">
               <tr>
                  <th colspan="2">Login</th>
               </tr>
               <tr>
                  <th align="left" width="100px">Gebruikersnaam:</th>
                  <td align="left" width="100px"><input type="text" name="gebr"></td>
               </tr>
               <tr>
                  <th align="left" width="100px">Wachtwoord:</th>
                  <td align="left" width="100px"><input type="password" name="pass"></td>
               </tr>
               <tr>
                  <td colspan="2" align="center"><input type="submit" value="Verzenden"><input type="reset" value="Wissen"></td>
               </tr>
            </table>
            </form>
            <%
         end if
      end if
         %>

En dit is mijn database

http://www.vormnet.org/webprog2/diagram.jpg

thx als je de fout vind krijgje men eeuwig respect ;)

Obliv`

Legacy Member
ge opent uw database pas na uw sql statement in de else tak?

wat geeft hem als error ofzo?

**edit**
ge hebt wel een nogal omslachtige invoer controle eh..

[DZM]TheOne

Legacy Member
Code:
               do until objRs.EOF
                  strGebruiker = objRs("gebruikersnaam")
                 [U] 'strPass = objRs("wachtwoord")[/U]
                  'strAcces = objRs("niveau")
                  objRs.MoveNext
               loop

dit staat in uw code als commentaar

dan is strPass altijd leeg en geeft de voorwaarde
Code:
if (request.Form("gebr") = strGebruiker) and (request.Form("pass") = strPass) then
ALTIJD false

Eduw

Legacy Member
ja maar nu staat het wel weer ingeschakeld en em geeft nog altijd dezelfde fout.
Twas beetje trial en error daarmee

Obliv`

Legacy Member
set objConn = server.CreateObject("adodb.connection")
objConn.open application("Conn_String")
set objRs = server.CreateObject("adodb.recordset")

dit voor uw sql statement zetten, ge kunt moeilijk toegang hebben tot een table als ge uw database nog nie open hebt eh :)

Obliv`

Legacy Member
persoonlijk doe ik controles altij zo (zoda ge nie met te veel geneste if's zit)

if not condition = "" then
teller+1
else
write "geef naam op"
end if

if not condition2 = "" then
teller+2
else
write "geef wachtwoord op"
end if

if teller = 2 then
contole op correctheid van gegevens (of ze in de database zitten, passwoord juist...)
hier zit ge natuurlijk wel met 1 geneste if (maar da valt dan toch nog mee)
end if

Eduw

Legacy Member
verandert maar da telt toch nie echt aangezien da een gewone string is dus da maakt niets uit

Obliv`

Legacy Member
Eduw zei:
verandert maar da telt toch nie echt aangezien da een gewone string is dus da maakt niets uit

idd, excuses...
khad nie gezien da ge uw query pas naa de connectie uitvoerde
my bad :)

[DZM]TheOne

Legacy Member
gezien de fout vermoedelijk hier ligt:
Code:
if (request.Form("gebr") = strGebruiker) and (request.Form("pass") = strPass) then
                  session("Gebr") = strGebruiker

zou ik gewoon eens response.write gebruiken om te zien wat nu eigenlijk de inhoud van deze variabelen is, iets als:
Code:
Response.Write request.Form("gebr") & "<br />" & strGebruiker & "<br />" & request.Form("pass") & "<br />" & strPass
net voor je de variabelen gaat vergelijken of zo

want ergens vul je deze variabelen verkeerd in denk ik

xhtml tip:
gebruik in je login formulier best id én name om je input velden te identificeren, bv <input type="hidden" id="test" name="test" value="blablabla" />

vergeet deze ook niet deze lijnen terug actief te maken
Code:
                  'session("UserID") = strPass
                  'session("UserLevel") = strAcces

Eduw

Legacy Member
die staan weer uit hun commentaar
kheb daar die if statement vervangen en kreeg mooi mijn twee variabelen op men scherm

orez

Legacy Member
1. Wat is het nut van

Code:
do until objRs.EOF
                  strGebruiker = objRs("gebruikersnaam")
                  strPass = objRs("wachtwoord")
                  strAcces = objRs("niveau")
                  objRs.MoveNext
               loop

Naar mijn mening haal je via de where statement van je SQL slechts 1 waarde op.

2.

Code:
response.Write("Je wordt ingelogd.<br>")
                  response.Write("Als je binnen de 2 seconden niet wordt omgeleid naar de startpagina,<br>")
                  response.Write("klik dan <a href='index.asp'>hier</a>.")
                  response.Write("</div>")
                  response.Write("</div>")
                  response.Write("</div>")
                  response.Write("<meta http-equiv='refresh' content='2;url=index.asp'>")

Hier zou je beter escapen naar gewone html, bevordert de parsetime, en zoals het hier staat is het ook ni echt de bedoeling dat het gedaan wordt.

3.
Maak je SQL-Statements duidelijker, je voorwaarden bv in hoofdletters zetten: bv

SELECT bla, bla1, bla2 FROM tbl WHERE(bla='bla')

4. Probeer enkel de waarden te selecteren die je nodig hebt... niet allemaal, dus enkel level, user, pass

5. response.Write("<meta http-equiv='refresh' content='2;url=index.asp'>")
Dit zal niet bij iedere persoon werken, dit kan uitgeschakeld worden, of browser kan dit niet ondersteunen, gebruik response.redirect.

print s strPass & strAccess af die vanuit de database komen, kloppen deze wel?

en geef elk form element ook es een ID mee ...
Post eventueel errors, en de gevulde waarden van strPass, strAccess, Request.Form, ...
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan