Avatar billede cdc Novice
08. december 2004 - 15:25 Der er 7 kommentarer og
1 løsning

fejl i checklogin script

jeg for plutselig denne fejl på siden, har virket uden problemer indtil i dag:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.

/checklogin.asp, line 32


scriptet ser således ud:

<%
'vis = hvad skal vi..... godkendt = no fordi vi altid skal skeptiske...
vis = request.querystring("mode")
godkendt = "no"

If vis = "kontrol" then

    ' Gemmer formfelterne i Variabler
    medlemsnr = request.form("brugernavn")
    passwd = request.form("kodeord")

    'tjekker basen for at se om brugeren eksisterer
    %><!--#include file="basecon.asp"--><%
    sql = "select * from user where (username = " & medlemsnr & " and password = '" & passwd & "')"
    set tjekdet = rs.execute(sql)

        if NOT (tjekdet.bof or tjekdet.eof) then
            fundet = "ja"
            idnr = tjekdet("id")
        else
            fundet = "nej"
        end if

    tjekdet.close
    set tjekdet = nothing

    if fundet = "ja" then
        %><!--#include file="basecon.asp"--><%
        sql = "select hits from user where id = " & idnr
        set taelop = rs.execute(sql)
            nyehits = taelop("hits") + 1
            rs.execute("Update user set hits = " & nyehits & " where id = " & idnr)       
        taelop.close
        set taelop = nothing
       
        session("cdcbnavn") = "brugerloggetind"
        session("cdcPasswd") = "passwordloggetind"
       
        response.redirect("member/index.asp")
    else
        'Forkert kode eller brugernavn... sender brugeren tilbage igen...
        response.redirect("checklogin.asp")
    end if

else
%>
<script language="javascript">

    function checktal()
    {
    var medlem = document.frmlogind.brugernavn.value;
    var kode = document.frmlogind.kodeord.value;
   
    if (!medlem.match(/^[0-9\+ ]+$/))
        {
        alert('Du kan kun indtaste tal');
        document.frmlogind.brugernavn.focus();
        return;
        }
   
    if (kode == 0)
        {
        alert('Du skal indtaste et kodeord');
        document.frmlogind.kodeord.focus();
        return;
        }
   
    document.frmlogind.submit();
    }
</script>
<form method="POST" action="checklogin.asp?mode=kontrol" name="frmlogind">
<p class="copy" align="left">
<b>Denne side kræver login:</b><br>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
  <tr>
    <td class="copy">Medlemsnr.</td>
    <td class="copy">: 17-<font class="copy"> <input class='text' type='text' name='brugernavn' size='4' style='font-family: Verdana; font-size: 8 pt' value="<%=strbrugernavn%>">
      F</font>
    </td>
  </tr>
  <tr>
    <td class="copy">Efternavn</td>
    <td class="copy">: <font class="header"><input class="text" type="password" value="<%=strpassword%>" name="kodeord" size="15" style="font-family: Verdana; font-size: 8 pt"></font>
    </td>
  </tr>
  <tr>
    <td class="copy"></td>
    <td class="copy">
        <input class="text" type="button" onclick="checktal();" value="Login" style="font-family: Verdana; font-size: 8 pt">
    </td>
  </tr>
</table>
</form>
<%   
end if
%>
Avatar billede cdc Novice
08. december 2004 - 15:53 #1
Nu får jeg denne fejl i et andet script:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Cannot update. Database or object is read-only.
Avatar billede stoffer Nybegynder
08. december 2004 - 16:07 #2
I access skal du huske at give skrive rettigheder til den mappe hvor basen ligger til internet brugerne...
Avatar billede cdc Novice
08. december 2004 - 16:09 #3
Det har aldrig været disse problemer før nu, så det skulle så være en opdatering på webhotellets server som så laver denne fejl
Avatar billede stoffer Nybegynder
08. december 2004 - 16:12 #4
iøvrigt når du nu bruger request synes jeg du skal gøre dette for sikkerhedens skyld:

medlemsnr = ToDB(request.form("brugernavn"))
passwd = ToDB(request.form("kodeord"))

function ToDB(strValue)

strValue = replace(strValue,"'","''")
strValue = replace(strValue,"|","")
if instr(lcase(strValue),"union")) then
strValue = "Hacking attempted"
end if

ToDB = strValue
end function
Avatar billede stoffer Nybegynder
08. december 2004 - 16:13 #5
Ja det er en fejl på webhotellets server. Den giver i hvert fald den fejl når der ikke er skrive rettigheder til DB'en.
Avatar billede cdc Novice
08. december 2004 - 16:29 #6
nu får jeg denne fejl:

Server.MapPath() error 'ASP 0172 : 80004005'

Invalid Path

/basecon.asp, line 3

The Path parameter for the MapPath method must be a virtual path. A physical path was used.


script:

<%
set rs = Server.CreateObject("ADODB.Connection")
forbindelse = "DBQ=" & Server.MapPath("xxxx")
rs.Open "Driver={Microsoft Access Driver (*.mdb)};" & forbindelse, 1, 3
%>
Avatar billede cdc Novice
08. december 2004 - 16:41 #7
den skulle se sådan her ud:

<%
set rs = Server.CreateObject("ADODB.Connection")
forbindelse = "DBQ=d:\home\xxxxx\database\mailing.mdb"
rs.Open "Driver={Microsoft Access Driver (*.mdb)};" & forbindelse, 1, 3
%>

man skal ikke bruge en Server.MapPath.

Smider du ikke lige et svar stoffer
Avatar billede stoffer Nybegynder
17. december 2004 - 02:55 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester