[ASP]'inloggen' geeft problemen

Pagina: 1
Acties:

  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 18-03 14:45
Ik ben voor iemand bezig om een programma te debuggen. De oorspronkelijke maker is niet meer beschikbaar en ik spring nu even voor de gebruiker in. Een gedeelte hiervan is een website, waarop ingelogt kan worden met een tekenreeks en een inlogcode. Mijn eigen ervaring met ASP is niet heel groot, maar dit is het enige dat in ASP moet gebeuren en ik hoopte het zo even op te lossen. Nu ben ik de hele middag eigenlijk al met dit probleem aan het prutsen :/ Het feit dat er geen commentaar of documentatie bij is gemaakt helpt hierbij niet echt.

Misschien kom ik er met een of twee aanwijzingen van jullie wel uit.

Het gaat om een systeem geprogrammeert in Frontpage, draaiende op IIS, met database koppelingen naar een interbase database. De hoeveelheid betrokken code is best groot. Ik heb al wat zitten filteren, maar deze post wordt nog steeds huge. Mijn excuses daarvoor.

Het Optic_no is normaal 3 hoofdletters en de logincode is 6 cijfers.

De form waarin de login wordt gevraagd: (
ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form method="POST" action="OptChck.asp" name="FrontPage_Form1">
          
         <input type="text" name="Optic_no" size="20">

         <!--webbot bot="Validation" S-Data-Type="String"
          B-Allow-Letters="TRUE" B-Allow-Digits="TRUE" B-Value-Required="TRUE"
          I-Minimum-Length="6" I-Maximum-Length="6" -->
          <input type="password" name="logincode" size="20" maxlength="6"></td>

          <input type="submit" value="Inloggen" name="B1"></p>
          <input type="hidden" name="NU" value="<%=date%>">

          <input type="hidden" name="KLTNO" value="%">
          <input type="hidden" name="NAAM" value="%">
          <input type="hidden" name="dag" value="%">
          <input type="hidden" name="Mnd" value="-">
          <input type="hidden" name="jaar" value="%">
</form>


Dit wordt vervolgens doorgestuurd naar OptChck.asp. deze bestaat eigenlijk uit 3 stukken:

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!--webbot bot="DatabaseRegionStart" startspan s-columnnames="GELUKT"
s-columntypes="200" s-dataconnection="Database2" b-tableformat="FALSE"
b-menuformat="FALSE" s-menuchoice="GELUKT" s-menuvalue="GELUKT"
b-tableborder="TRUE" b-tableexpand="TRUE" b-tableheader="TRUE"
b-listlabels="TRUE" b-listseparator="TRUE" i-ListFormat="0" b-makeform="FALSE"
s-recordsource s-displaycolumns="GELUKT" s-criteria s-order
s-sql="Select * from Optiekvinden( '::Optic_no::' , '::Logincode::' , '::NU::')"
b-procedure="FALSE" clientside SuggestedExt="asp"
s-DefaultFields="Optic_no=&amp;Logincode=&amp;NU="
s-NoRecordsFound="Geen records geretourneerd." i-MaxRecords="256"
i-GroupSize="0" BOTID="0" u-dblib="../_fpclass/fpdblib.inc"
u-dbrgn1="../_fpclass/fpdbrgn1.inc" u-dbrgn2="../_fpclass/fpdbrgn2.inc"
tag="BODY"
</table>"
b-WasTableFormat="FALSE" --><!--#include file="../_fpclass/fpdblib.inc"-->


De oplettende lezer heeft hier vast de vreemde functie 'Optiekvinden' tussen gevonden. Dit heeft betrekking op een (interbase isql) database, met daarin een procedure met deze naam. De bijbehorende 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
SHOW PROCEDURE optiekvinden
Procedure text:
=============================================================================
          
Declare Variable X Float ; 
Begin   
  Select Count(*) from Optiek where Upper(Optic_no) = Upper(:Optic_no) and
LoginCode = :Optic_Code into :X;   
  If ( :X <> 0 ) Then 
  Begin
    Gelukt = '<html><head><meta http-equiv="Refresh" content="2; URL=Agenda.Asp?Optiek='||
             Upper(:Optic_No) ||
             '&Code=<<&Datums=01-01-2000&NU=' || :NU || '">';
    Gelukt = Gelukt || ' <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> ';       
    Gelukt = Gelukt || ' <meta name="ProgId" content="FrontPage.Editor.Document"> ';
    Gelukt = Gelukt || ' <title>Nieuwe pagina 1</title></head> ' ;
    Gelukt = Gelukt || '<body></body></html>';  
 End
 Else   
  Begin      
Gelukt = '';   
End
suspend;
end

=============================================================================
Parameters:
OPTIC_NO                          INPUT VARCHAR(6) 
OPTIC_CODE                        INPUT VARCHAR(6) 
NU                                INPUT VARCHAR(10) 
GELUKT                            OUTPUT VARCHAR(1000)


Vervolgens komt er in OptChck.asp zoals het eruitziet (custom query) nog een keer precies dezelfde query:

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%
fp_sQry="Select * from Optiekvinden( '::Optic_no::' , '::Logincode::' , '::NU::')"
fp_sDefault="Optic_no=&Logincode=&NU="
fp_sNoRecords="Geen records geretourneerd."
fp_sDataConn="Database2"
fp_iMaxRecords=256
fp_iCommandType=1
fp_iPageSize=0
fp_fTableFormat=False
fp_fMenuFormat=False
fp_sMenuChoice="GELUKT"
fp_sMenuValue="GELUKT"
fp_iDisplayCols=1
fp_fCustomQuery=True
BOTID=0
fp_iRegion=BOTID
%>


In dit kleine stukje hieronder staat 3x 'gelukt', zoals ook in de db query stond. Voor mijn gevoel is die laatste wel significant, maar ik ben er niet helemaal achter waar de % naar verwijst in dit geval.

code:
1
2
3
4
5
6
<!--#include file="../_fpclass/fpdbrgn1.inc"-->
<!--webbot bot="DatabaseRegionStart" i-CheckSum="45706" endspan -->
<p>&nbsp;<!--webbot bot="DatabaseResultColumn" startspan s-columnnames="GELUKT"
s-column="GELUKT" b-tableformat="FALSE" b-hasHTML="TRUE" clientside -->
<%=FP_Field(fp_rs,"GELUKT")%>
<!--webbot bot="DatabaseResultColumn" i-CheckSum="5654" endspan -->


Mijn probleem is: op dit moment kun je met elke combinatie van letters en cijfers inloggen, (zolang ze voldoen aan de constraints die gesteldzijn aan het invoerveld). De persoon die voor mij aan dit programma werkte, heeft ooit eens een aanpassing gemaakt, waardoor de inlogmogelijkheid werd zoals hierboven geschreven. Daarvoor heeft het (mogelijk foutief) gewerkt. Zie jij zo, of kan je mij leiden naar de plaats waar ik een aanpassing zou moeten maken om het inloggen te laten werken?

Mijn huidige theorie op dit moment is dat de database functie een tijdelijke webpagina aanmaakt (soort van cookie, maar dan serverside). Zodra iemand een van de volgende pagina's wil bekijken wordt dat stukje html bekeken.

Als je een stuk code van een volgend stuk nodig hebt, hoor ik het ook graag.

Localhost is where the heart is


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
is het in perl geschreven ofzo?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

4of9 schreef op 09 december 2003 @ 10:45:
is het in perl geschreven ofzo?
Zo te zien in Frontpage; alleen Frontpage heeft de neiging om zo een gigantische bende van de code te maken, dat er niet meer uit te komen is.. :X

(En Frontpage werkt afaik met ASP / VBScript)

[ Voor 9% gewijzigd door gorgi_19 op 09-12-2003 10:46 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • party42
  • Registratie: Oktober 2000
  • Laatst online: 14:19
sorry om dit zeggen

maar gooi ajb al deze code weg. en maak zelf even overnieuw een inlogscriptje. dit kun je wel gaan debuggen maar je verschuift het probleem...

dus gewoon even een nieuw asp pagina'tje maken. er zijn genoeg inlogscriptjes te vinden op het internet...

Everyday's an endless stream, of cigarettes and magazines...


  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 18-03 14:45
Frontpage idd, ik meende dat ik dat vermeld had. Het is idd geschreven in VBscript, wat standaard door frontpage wordt gebrouwen. Die database koppelingen worden weer gelegt met ingebouwde frontpage scriptjes ( die je er als .inc's tussen ziet staan).

Ik heb tot nu toe nog nooit frontpage gebruikt voor het schrijven van scripts en pagina's en ben daarom wat onbekend met de methodes die het hanteerd voor gebruik met databases. Het interpreteren van de code zelf is echter geen probleem, het hoe en waarom van het dubbel gebruik van een query wat minder. --> Ik kijk nog even rond voor een frontpage / database howto.

offtopic:
Een andere vreemd probleem wat er nog bijkomt (maar niet onoverkomelijk is), is dat ik in ontwerpmode geen connectie kan krijgen met een de betrokken database. Ik krijg dan een melding dat er problemen waren met het bereiken van de database en dat ik maar in het systeemlog moest kijken. Op zowel de computer waar ik werk als de computer waar de database en de website op runnen staat er niets in het eventlog (computer waar ik op werk is winME, dus die heeft er niet eens een..). De DNS naam voor de database die hij gebruikt onder BDE, bestaat ook niet eens. Er is zowel een shopbestelling als een shopbestelling2, maar de naam waar ie verbinding mee maakt is shop. Dit aanpassen naar de juiste database (shopbestelling2), levert weer dezelfde foutmelding op. Ik ben daar vrijdag weer en kan dan de precieze foutmelding erbij pakken, maar het lijkt me nu niet relevant. In een browser kan ie er nl wel gewoon bij en kom ik nergens een probleem tegen.


Het probleem met herschrijven is dat ik in dat geval waarschijnlijk ongeveer evenlang bezig ben om alles aan te passen aan de database zoals deze er nu uitziet. Ik heb al wat inlogscriptjes gezien om te achterhalen hoe hier ingelogt werd, maar heb bij die zoektocht niets gevonden dat ik direct kon relateren aan dit scriptje. Voor degene die ik hiermee aan het helpen ben doe ik allerlei andere dingen in voornamelijk delphi en sql en dit kwam er zo even bij. Ik hoopte dat ik dit zo even op kon lossen om me vervolgens weer op andere dingen te storten. Op zich is het vinden en interpreteren van de code ook niet echt het probleem. Ik vindt er echter de reden niet tussen dat het niet werkt :( Ik denk dat ik hier iets over het hoofd zie, en ik hoopte dat iemand hier dat zo opviel. Ik had begrepen dat het eerder wel gewerkt heeft maar om een of andere reden tijdelijk zo was aangepast dat iedereen er in kon. Dat moet dan nu weer terug.

Bedankt voor het meedenken!

Localhost is where the heart is