/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
hjælp til log-in formular!
Fra : jacob r k


Dato : 20-01-08 20:20

hej

jeg har et problem med følgende kode:

<%
navn = Request.Form("navn")
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

strSQL = "Select * From brugere Where Id = " & navn
Set rs = Conn.Execute(strSQL)
'^^^^^^^^^^^^^^^^^^^^^^^^^^^linje 15

If Request.Form("password") = rs("password") Then

Session("login") = navn
Session.Timeout = 30
Response.Redirect "formular.asp"


End If


Conn.Close
Set Conn = Nothing
%>

fik fejlmeddelsen:

"Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters.
Expected 2.

/mappe/login.asp, line 15"

har også prøvet:


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

Dim strBrugernavn, strAdgangskode
strBrugernavn = Trim(Replace(request.form("navn"),"'","''" ))
strAdgangskode = Trim(Replace(request.form("password"),"'","''"
))

SQL = "SELECT * FROM Brugere where navn = " & strBrugernavn & "
AND password = " & strAdgangskode & ""
Set rs = Conn.Execute( SQL )
^^^^^^^^^^^^^^^^^^^^^^^^^^^^ linje 18


If Not (rs.BOF Or rs.EOF) Then
Session("login") = rs("navn")
Response.redirect "formular.asp"


End If

rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
%>

og output:

"Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters.
Expected 1.

/mappe/login.asp, line 18"


er der en der kan hjælpe?

På forhånd TAK

Jacob

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
JonZ (21-01-2008)
Kommentar
Fra : JonZ


Dato : 21-01-08 10:51

jacob r k wrote in dk.edb.internet.webdesign.serverside.asp:

&gt; SQL = "SELECT * FROM Brugere where navn = " & strBrugernavn
& "
&gt; AND password = " & strAdgangskode & ""

Uden at være helt sikker vil jeg tro følgende vil virke:

SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "'
AND password = '" & strAdgangskode & "'"



Hilsen JonZ


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

jacob r k (21-01-2008)
Kommentar
Fra : jacob r k


Dato : 21-01-08 15:34

JonZ wrote in dk.edb.internet.webdesign.serverside.asp:
>
>
> SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "'
> AND password = '" & strAdgangskode & "'"


det gjorde det ikke.
I stedet skrev den:


Microsoft VBScript compilation error '800a0409'

Unterminated string constant

/mappe/login.asp, line 17

SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "'
-----------------------------------------------------------------^


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Finn Elmgaard (21-01-2008)
Kommentar
Fra : Finn Elmgaard


Dato : 21-01-08 17:19

"jacob r k" <jacob.ross.k@hotmail.com> wrote in message
news:4794ad73$0$90274$14726298@news.sunsite.dk...
> JonZ wrote in dk.edb.internet.webdesign.serverside.asp:
> >
> >
> > SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "'
> > AND password = '" & strAdgangskode & "'"
>
>
> det gjorde det ikke.
> I stedet skrev den:
>
>
> Microsoft VBScript compilation error '800a0409'
>
> Unterminated string constant
>
> /mappe/login.asp, line 17
>
> SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "'
> -----------------------------------------------------------------^
>

Du skal slutte af med et enkelt-citationstegn omgivet at dobbelte
citationstegn (også kaldet gåseøjne), altså sådan her, selv om det er lidt
svært at se hvad der er hvad: "'"

Tænk på, at du efter dit sidste & vil tilføje en tekststregn, der blot best
af : ' . Da det er en tekstreng skal den omgives af sådan nogle: " .

mvh
Finn



Jørn Andersen (21-01-2008)
Kommentar
Fra : Jørn Andersen


Dato : 21-01-08 18:55

On 21 Jan 2008 14:34:27 GMT, jacob r k <jacob.ross.k@hotmail.com> wrote:

>JonZ wrote in dk.edb.internet.webdesign.serverside.asp:
>>
>>
>> SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "'
>> AND password = '" & strAdgangskode & "'"
>
>
>det gjorde det ikke.
>I stedet skrev den:
>
>
>Microsoft VBScript compilation error '800a0409'
>
>Unterminated string constant
>
>/mappe/login.asp, line 17
>
>SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "'
>-----------------------------------------------------------------^

Du har nok et linieskift, så:
AND password = '" & strAdgangskode & "'"
- kommer på en ny linie.

Fjern dette linieskift, som er opstået, da du copy-pastede fra din
news-læser.

--
Jørn Andersen,
Brønshøj

jacob r k (22-01-2008)
Kommentar
Fra : jacob r k


Dato : 22-01-08 20:23

Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:
> On 21 Jan 2008 14:34:27 GMT, jacob r k <jacob.ross.k@hotmail.com> wrote:
>
> >JonZ wrote in dk.edb.internet.webdesign.serverside.asp:
> >>
> >>
> >> SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "'
> >> AND password = '" & strAdgangskode & "'"

>
> Du har nok et linieskift, så:
> AND password = '" & strAdgangskode & "'"
> - kommer på en ny linie.
>
> Fjern dette linieskift, som er opstået, da du copy-pastede fra din
> news-læser.
>

Det har jeg gjordt, det virkede ikke :(
jeg fik fejlmeddelsen:


Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria
expression.

/mappe/login.asp, line 18

(hvis det er til nogen hjælp)

Jacob

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (23-01-2008)
Kommentar
Fra : Jørn Andersen


Dato : 23-01-08 00:48

On 22 Jan 2008 19:22:39 GMT, jacob r k <jacob.ross.k@hotmail.com> wrote:

>Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
>
>[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria
>expression.
>
>/mappe/login.asp, line 18
>
>(hvis det er til nogen hjælp)

Det er til en del mere hjælp, hvis du udskriver din SQL-streng.


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

jacob r k (23-01-2008)
Kommentar
Fra : jacob r k


Dato : 23-01-08 07:20

Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:
> On 22 Jan 2008 19:22:39 GMT, jacob r k <jacob.ross.k@hotmail.com> wrote:
>
> >Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
> >
> >[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria
> >expression.
> >
> >/mappe/login.asp, line 18
> >
> >(hvis det er til nogen hjælp)
>
> Det er til en del mere hjælp, hvis du udskriver din SQL-streng.

altså nu ser det sådan ud:

Dim strBrugernavn, strAdgangskode
strBrugernavn = Trim(Replace(request.form("navn"),"'","''" ))
strAdgangskode = Trim(Replace(request.form("password"),"'","''" ))

SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "' AND
password = '" & strAdgangskode & "'"
Set rs = Conn.Execute( SQL )

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (23-01-2008)
Kommentar
Fra : Jørn Andersen


Dato : 23-01-08 12:39

On 23 Jan 2008 06:19:58 GMT, jacob r k <jacob.ross.k@hotmail.com> wrote:

>> Det er til en del mere hjælp, hvis du udskriver din SQL-streng.
>
>altså nu ser det sådan ud:
>
>Dim strBrugernavn, strAdgangskode
>strBrugernavn = Trim(Replace(request.form("navn"),"'","''" ))
>strAdgangskode = Trim(Replace(request.form("password"),"'","''" ))
>
>SQL = "SELECT * FROM Brugere where navn = '" & strBrugernavn & "' AND
>password = '" & strAdgangskode & "'"

Prøv så midlertidigt at indsætte:
Response.Write SQL
Response.End

>Set rs = Conn.Execute( SQL )

Det skullle gerne udskrive din SQL-streng, så dan som den *faktisk* er,
inden den bliver fyret - og herefter afslutte scriptet, så du ikke får
en fejlmedling.
(Metoden kan også bruges til andre variable, som man er usikker på det
faktiske indhold af.)

Hvis du ikke kan se fejl i SQL'en, så post den her.

Good luck!

--
Jørn Andersen,
Brønshøj

jacob r k (23-01-2008)
Kommentar
Fra : jacob r k


Dato : 23-01-08 13:16

Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:

> Det skullle gerne udskrive din SQL-streng, så dan som den *faktisk* er,
> inden den bliver fyret - og herefter afslutte scriptet, så du ikke får
> en fejlmedling.
> (Metoden kan også bruges til andre variable, som man er usikker på det
> faktiske indhold af.)
>
> Hvis du ikke kan se fejl i SQL'en, så post den her.

det er rigtig nok.
den skriver:

SELECT * FROM Brugere where navn = 'jacob' AND password = '1234'

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (24-01-2008)
Kommentar
Fra : Jørn Andersen


Dato : 24-01-08 01:49

On 23 Jan 2008 12:15:34 GMT, jacob r k <jacob.ross.k@hotmail.com> wrote:

>> Hvis du ikke kan se fejl i SQL'en, så post den her.
>
>det er rigtig nok.
>den skriver:
>
>SELECT * FROM Brugere where navn = 'jacob' AND password = '1234'

1. Hvad sker, hvis du bruger den forespørgsel direkte i
Access-databasen?
2. Er begge felter (navn, password) *tekst*-felter?
(det skal de være)


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

jacob r k (24-01-2008)
Kommentar
Fra : jacob r k


Dato : 24-01-08 20:43

Jørn Andersen wrote in dk.edb.internet.webdesign.serverside.asp:


> 1. Hvad sker, hvis du bruger den forespørgsel direkte i
> Access-databasen?
> 2. Er begge felter (navn, password) *tekst*-felter?
> (det skal de være)

der var fejlen.
Jeg havde sat password til tal.

Tak for hjælpen.

Jacob

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (25-01-2008)
Kommentar
Fra : Jørn Andersen


Dato : 25-01-08 01:22

On 24 Jan 2008 19:43:09 GMT, jacob r k <jacob.ross.k@hotmail.com> wrote:

>der var fejlen.
>Jeg havde sat password til tal.
>
>Tak for hjælpen.

Velbekomme!

Nu da det virker, så lad os lige løbe forløbet igennem, så du får det
lettere næste gang.
1. Du laver en SQL-streng, som udløser en fejl.
Fejl kode: 80040e10
2. Du får et forslag til en ændring af SQL-strengen, men får igen fejl:
Fejlkode: 800a0409
3. Du fjerner det linieskift, der kom ind via copy/paste, men får
fejlkode: 80040e07

Et par hints:
- hvis der er problemer med SQL-strengen, så udskriv den og test den
direkte i databasen, hvis du ikke umiddelbart kan se fejlen.
- fejlkoder kan slås op på:
<url: http://www.aspfaq.com/>
(Bare kopier fejlkoden over i søgefeltet og læs igennem svarene.)

Jeg skal sige med det samme, at det først var hen mod slutningen, at jeg
lagde mærke til, at fejlkoderne skiftede, hver gang du lavede et eller
andet - hvilket burde have fået mig til at se, at du faktisk løste
fejlene én efter én


Til slut:
Det er ikke godt at gemme passwords i klar tekst i en database - heller
ikke selv om det er mere banale ting end AP Møllers pengetank, der skal
beskyttes.

Grunden er, at folk typisk bruger samme password til både vigtige og
uvigtige ting. Hvis så folk oplever misbrug af fx deres netbank, og den
har samme password som din applikation, så kan du blive udsat for
mistanke.

Det kan du undgå ved at hashe ("kryptere") paswordet, inden du gemmer
det. Hashing er en "en-vejs-kryptering", hvor man ikke (eller kun
ekstremt vanskeligt) kan finde tilbage til den oprindelige streng.

Almidelige hash-funktioner er MD5 eller SHA1, hvor SHA1 er noget mere
sikker end MD5. Se:
<url: http://www.asp-faq.dk/article/?id=52>
- hvor der også er links til hash-funktioner til både MD5 og SHA1 til
ASP.

Jeg vil stærkt anbefale dig at bruge dem, så du ikke kan se folks
passwords i klar tekst.

Good luck!

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste