Toon posts:

[asp] login + restricted access

Pagina: 1
Acties:

Verwijderd

Topicstarter
ok, mijn probleem is als volgt, ik heb een inlogpagina gemaakt, die zit gekoppeld aan de tabel USERS uit mijn database. Nu is de bedoeling dat er herkend wordt wat voor type user er inlogt (medewerker of klant)...dus heb ik de submitknop doorgelinkt naar een redirect pagina...met daarin de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/connEstilo.asp" -->
<%
set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.ActiveConnection = MM_connEstilo_STRING
rsUser.Source = "SELECT Type FROM USERS"
rsUser.CursorType = 0
rsUser.CursorLocation = 3
rsUser.LockType = 3
rsUser.Open()
rsUser_numRows = 0
%>
<%
if rsUser.fields("Type")="medewerker" then
response.redirect ("medewerker.asp")
else 
response.redirect("klant.asp")
end if
%>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>&nbsp;</p>
<p>login successfull! You are being redirected...</p>
</body>
</html>
<%
Choose.Close()
%>


in principe werkt dit wel, alleen in beide gevallen redirect ie hem naar medewerker.asp dus ergens zit er nog een foutje...maar waar?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

Omdat je geen WHERE clausule in je query gebruikt?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
ja dan filter ik er 1 type gebruiker uit? dan schiet ik toch nog niets op of zie ik dat verkeerd?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

code:
1
SELECT Type FROM USERS

Wat betekent dit? Vertel eens in je eigen woorden wat deze actie uithaalt. En geef ook eens weer wat de resultaten van deze query zijn. Kijk vervolgens eens wat je met deze data doet, 8 regels verderop.
ja dan filter ik er 1 type gebruiker uit? dan schiet ik toch nog niets op of zie ik dat verkeerd?
Wie zegt dat je moet filteren op het veld type?

[ Voor 19% gewijzigd door gorgi_19 op 22-11-2002 19:58 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Type is het veld in de tabel USERS waarin staat of de user "medewerker" of "klant" is...zo selecteer ik ze allebei

dan heb ik er verderop een if...else statement in staan om te zeggen waar er heen moet geredirect bij elk van deze twee...leek mij te kloppen zo eerlijk gezegd

maar volgens jou moet ik op een ander veld een WHERE gebruiken als ik het goed begrijp?

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Verwijderd schreef op 22 november 2002 @ 20:07:
Type is het veld in de tabel USERS waarin staat of de user "medewerker" of "klant" is...zo selecteer ik ze allebei

dan heb ik er verderop een if...else statement in staan om te zeggen waar er heen moet geredirect bij elk van deze twee...leek mij te kloppen zo eerlijk gezegd

maar volgens jou moet ik op een ander veld een WHERE gebruiken als ik het goed begrijp?
Je moet een WHERE gebruiken ja.
hint: van _welke_ user wil je het 'type' weten?

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Maar met "SELECT Type FROM users" pak je alleen het eerste record in de database, en dat zal dan een record zijn waar het type "medewerker" is...en dan kun je "error" verklaren ;)

Je zal iets in de trend moeten doen van "SELECT Type FROM users WHERE iets = 'ingevulde gegevens die kloppen'"

Welke velden heb je allemaal in je tabel USERS?
Ik hoop toch wel zoiets:
id | username | password | type | meer zooi
gorgi_19 schreef op 22 November 2002 @ 20:20:
[...]

Maar dit ZEG je niet in je SQL statement.. Je zegt:
Geef me alle velden met als naam type uit de tabel Users
Yep, en omdat je er geen loop bij hebt pakt ie de gegevens uit het eerste record dat ie tegenkomt...

[ Voor 80% gewijzigd door Verwijderd op 22-11-2002 20:24 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 22 November 2002 @ 20:07:
Type is het veld in de tabel USERS waarin staat of de user "medewerker" of "klant" is...zo selecteer ik ze allebei.
Maar dit ZEG je niet in je SQL statement.. Je zegt:
Geef me alle velden met als naam type uit de tabel Users

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Verwijderd schreef op 22 november 2002 @ 20:14:
Maar met "SELECT Type FROM users" pak je alleen het eerste record in de database, en dat zal dan een record zijn waar het type "medewerker" is...en dan kun je "error" verklaren ;)

Je zal iets in de trend moeten doen van "SELECT Type FROM users WHERE iets = 'ingevulde gegevens die kloppen'"

Welke velden heb je allemaal in je tabel USERS?
Ik hoop toch wel zoiets:
id | username | password | type | meer zooi
die velden zitten erin jahh...alleen username heet bij mij login

zou het dan iets moeten zijn als "SELECT Type FROM USERS WHERE Login='" & MM_valUsername &"' AND Password='" & CStr(Request.Form("pass")) & "'"

dat komt regelrecht uit de login pagina...en daarmee kijkt hij volgens mij of login+pass matchen

ben nog flink newbie op dit gebied dus....sorry

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:46
Tja, je moet misschien maar eens de code gaan debuggen...
Als je een select * from users doet, dan krijg je alle users terug. Zoals reeds gezegd, moet je opgeven welke user je wilt terugkrijgen, dus dat doe je met een where-clausule in je query.
Voor een SQL Tutorial: http://www.w3schools.com/sql/default.asp

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

Waar definieer jij dan:
code:
1
MM_valUsername

op deze pagina?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
whoami schreef op 22 November 2002 @ 20:51:
Tja, je moet misschien maar eens de code gaan debuggen...
Als je een select * from users doet, dan krijg je alle users terug. Zoals reeds gezegd, moet je opgeven welke user je wilt terugkrijgen, dus dat doe je met een where-clausule in je query.
Voor een SQL Tutorial: http://www.w3schools.com/sql/default.asp
ja maar dat doe ik toch in m'n eerste code?

code:
1
SELECT Type FROM USERS


selecteer ik het veld type

vervolgens

code:
1
2
3
4
5
if rsUser.fields("Type")="medewerker" then
response.redirect ("medewerker.asp")
else 
response.redirect("klant.asp")
end if


oftewel (volgens mij) "is het Type "medewerker", ga dan naar medewerker.asp...is het anders, ga dan naar klant.asp"


ik zie echt niet waar de fout nou zit hoor :? :?

[ Voor 6% gewijzigd door Verwijderd op 23-11-2002 20:09 ]


Verwijderd

Ik raad af code te laten genereren door een "what you see is not what you might expect or even get" programma zoals je - aan de code te zien - hebt gedaan.

Met een kleine moeite kun je de asp/ado/sql basics doorgronden die nodig zijn om te bereiken wat je wilt.

Kuz B)

[ Voor 3% gewijzigd door Verwijderd op 23-11-2002 20:19 ]


Verwijderd

Topicstarter
ben helaas verplicht om DreamWeaver UltraDev te gebruiken...ben er zelf ook niet blij mee

daarentegen heeft het tot nu toe gewerkt, en daar ben ik wel blij mee want mijn ASP kennis is niet groot :o

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

Niet lullig bedoeld hoor, maar volgens mij moet je een paar SQL tutorials gaan doornemen.. In ieder geval, ik zal een poging doen of uit te leggen wat je nu doet.

Je tabel ziet er bijvoorbeeld zo uit:
code:
1
2
3
4
username    type                   datum
gorgi_19     User                   12-12-2002
admin          Administrator     12-10-2001
test             User                   01-01-2000

Wat krijg je als je
code:
1
Select UserName, Type FROM Users

doet? Het volgende:
code:
1
2
3
gorgi_19      User
admin           Administrator
test              User

Doorredenerend, wat krijg je als je doet:
code:
1
Select Type from Users

Dit levert het volgende op:
code:
1
2
3
User
Administrator
User

Dan je ASP-code
ASP:
1
if rsUser.Fields("Type") = "User" then

Als van de velden in de recordset de veldnaam "user" is, dan moet de actie uitvoeren.
We pakken weer de recordset erbij. Deze bestond uit:
code:
1
2
3
User
Administrator
User

De eerste regel is hier: "User", dus deze conditie is waar.
oftewel (volgens mij) "is het Type "medewerker", ga dan naar medewerker.asp...is het anders, ga dan naar klant.asp" ik zie echt niet waar de fout nou zit hoor
Nu kan je zelf het antwoord op de vraag geven.. ;)

[ Voor 18% gewijzigd door gorgi_19 op 23-11-2002 20:36 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Pogostokje
  • Registratie: September 2001
  • Laatst online: 20:40

Pogostokje

* twiet *

Het gaat hier mis op je SQL kennis EN op je ASP kennis.
Slechte start dus om meteen zoiets als dit te gaan doen.

Schrijf desnoods eens op een stukje papier op wat je stap voor stap wilt dat er gebeurt. Vertaal dat dan naar ASP en SQL. Want dit ziet er uit als een quick&dirty&iksnaphetniet methode en uiteindelijk ben je daar veel langer mee bezig.

... ook ik heb soms per ongeluk gelijk.


Verwijderd

Topicstarter
dit verhaal is duidelijk ja, ik heb ook wel enige SQL kennis, alleen is dit wel de eerste keer dat ik met ASP werk, vandaar

als ik het goed begrijp, moet ik die SELECT statement aanpassen, zodat hij enkel het veld Type geeft van de persoon die op dat moment inlogt

zoiets:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%
set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.ActiveConnection = MM_connEstilo_STRING
rsUser.Source = "SELECT Type FROM USERS WHERE Login="MM_valUsername""
rsUser.CursorType = 0
rsUser.CursorLocation = 3
rsUser.LockType = 3
rsUser.Open()
rsUser_numRows = 0
%>
<%
MM_valUsername=CStr(Request.Form("loginnaam"))

if rsUser.fields("Type")="medewerker" then
response.redirect ("medewerker.asp")
else 
response.redirect("klant.asp")
end if
%>


enige probleem is dan nog volgens mij dat er hier geen Form aanwezig is met het tekstveld "loginnaam"...zou ik die dan moeten linken vanuit m'n login.asp?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

De theorie is goed! :P

Nu de uitwerking nog.. ;)

Wat je nu doet is simpelweg het volgende:
ASP:
1
2
3
Response.write a & " is lief"
Dim a = "kees"
Response.write a & " is ook lief"

Zie je wat er fout gaat?

Verder moet je de " nog gaan escapen.
code:
1
2
Response.Write "Dit is een "foute" quote"
Response.Write "Dit is een ""goede"" quote"

Verder zeg je nu:
SELECT Type FROM USERS WHERE Login='MM_valUsername'
Je wilt alleen deze niet als string hebben, maar als variabele.. Nu de vraag, hoe voer je hier een variabele in? Anders gezegd, hoe koppel je twee strings in ASP aan elkaar? (zie voor het antwoord bijvoorbeeld het eerste voorbeeld..:) )
enige probleem is dan nog volgens mij dat er hier geen Form aanwezig is met het tekstveld "loginnaam"...zou ik die dan moeten linken vanuit m'n login.asp?
Afhankelijk. Post je loginpagina naar deze pagina? Zo ja, dan kan je Request.Form gebruiken. Anders moet je anders oplossen...

[ Voor 37% gewijzigd door gorgi_19 op 23-11-2002 21:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 23 November 2002 @ 21:13:

Afhankelijk. Post je loginpagina naar deze pagina? Zo ja, dan kan je Request.Form gebruiken. Anders moet je anders oplossen...
op login.asp staan 2 tekstvelden genaamd "loginnaam" en "pass", wanneer login gelukt is verwijst hij door naar redirect.asp (waar we nu steeds mee bezig zijn)...uiteindelijk moet de user belanden in of medewerker.asp of klant.asp

now for the code:
ASP:
1
rsUser.Source = "SELECT Type  FROM USERS  WHERE Login = "MM_valUsername""


hier geef ik dus op dat het Type geselecteerd moet worden van de user met als login de variabele MM_valUsername...alleen zit dat met die quotes niet goed zeg je. Maar dat moet toch niet met dubbele aanhalingstekens (dus ""MM_valUsername"")? Zo heb ik het niet geleerd althans...

verder declareer ik de variabele MM-valUsername verderop met
ASP:
1
MM_valUsername = Request.Form("loginnaam"))


deze waarde komt dus uit het tekstveld loginnaam uit het formulier...maar zo werkt ie dus niet en volgens mij komt dat doordat dat formulier niet op deze redirect.asp staat

am I right?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

Dat gedeelte van
verder declareer ik de variabele MM-valUsername verderop met
zit het probleem... Je moet alles wel in de juiste volgorde blijven zien..
Verder: Hoe koppel je een string aan een variabele. Ik gaf als voorbeeld:
ASP:
1
2
Dim a = "kees"
Response.write a & " is ook lief"


Dit kan je zelf wel toepassen op je eigen code...
formulier niet op deze redirect.asp staat
Dit is niet correct. Als je doet:
HTML:
1
2
3
<form action="redirect.asp">
...
</form>

in je andere pagina, moet het goed gaan.

[ Voor 11% gewijzigd door gorgi_19 op 23-11-2002 21:45 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
dit gedeelte klopt nu volgens mij, hij geeft iig geen foutmelding meer over dit gedeelte

ASP:
1
"SELECT Type FROM USERS WHERE Login='" & MM_valUsername &"'"


nu staat er dus iets over regel 15: er is een uitzondering opgetreden

regel 15:
ASP:
1
if rsUser.fields("Type")="medewerker" then


ik heb het net nog nagekeken in m'n database en Type klopt, geen spelfouten, ook hoofdletter klopt, zelfde als met medewerker

sorry als ik lastig ben hoor... :o

ik zit te denken trouwens...komt dit misschien doordat er geen MM_valUsername is, en er dus geen Type wordt geselecteerd? Ik heb het uitgetest door proberen in te loggen en die gegevens kloppen...

[ Voor 24% gewijzigd door Verwijderd op 23-11-2002 22:12 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

De stappen om een recordset uit te lezen (mag jij het lijstje afvinken.. ;))
1. Creeer een recordset object (hint: gedaan)
2. Vul deze (hint: gedaan)
3. Open deze(vanaf nu geen hints meer.. ;))
4. lees de recordset per rij of de eerste rij
5. lees een veldnaam in de rij
6. sluit de recordset.

Verder: VBSCript is normaal gesproken caseinsensitive, dus dat mag niet uitmaken.
MM_ValUsername is wel makkelijk als die er is ja.. :+

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
ok, ik heb het een en ander aangepast en hij werkt nu!!

hartstikke bedankt!!!
Pagina: 1