|
| 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:
> SQL = "SELECT * FROM Brugere where navn = " & strBrugernavn
& "
> 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
| |
|
|