Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[ASP] - Cookie probleem

Anoniem
Annie
8 antwoorden
  • Ik heb een inlog-pagina gemaakt die het wachtwoord moet onthouden.

    Deze bevat boven de HTML-code de volgende ASP-code:

    [code:1:f30fc8119e]<%
    DIM Loginnaam
    DIM Wachtwoord
    Loginnaam = Request.Cookies("Profiel")("Loginnaam")
    Wachtwoord = Request.Cookies("Profiel")("Wachtwoord")
    %>[/code:1:f30fc8119e]

    Op de inlog_verwerken-pagina heb ik de volgende code staan die de Cookie bakt:

    [code:1:f30fc8119e]<%
    Loginnaam = REPLACE(REQUEST.FORM("Loginnaam"), "'", "''")
    Wachtwoord = REPLACE(REQUEST.FORM("Wachtwoord"), "'", "''")
    Onthouden = REQUEST.FORM("Onthouden")

    IF Onthouden = "ON" THEN
    Response.Cookies("Profiel").Expires=date+365
    Response.Cookies("Profiel")("Loginnaam")= Loginnaam
    Response.Cookies("Profiel")("Wachtwoord")= Wachtwoord
    END IF
    %> [/code:1:f30fc8119e]

    Maar als ik opnieuw wil inloggen dat onthoud hij de ingevulde waardes niet.
    Wat doe ik verkeerd?
  • Foutje…. de .asp pagina werd niet helemaal ingeladen. Nu werkt het.

    Volgend probleempje:

    Ik wil de waarden in de cookie encrypten.

    Ik heb inmiddels de volgende code:

    [code:1:68dfe8ad07]Private Function Encrypt(strOriginal)
    Dim strNew ' As String
    Dim i ' As Integer

    For i = 1 To Len(strOriginal)
    If strNew <> "" Then
    strNew = strNew & "-"
    End If
    strNew = strNew & _
    Asc(Mid(strOriginal, i, 1)) + 20

    Next ' i
    Encrypt = strNew

    End Function[/code:1:68dfe8ad07]

    Hoe kan ik mijn waarde nu door deze routine heen laten gaan?
  • Bedoel je hoe je de ge-encrypte waarde weer in je hoofdroutine krijgt? Gaat als volgt:

    Wachtwoord = Encrypt(Wachtwoord)
    Response.Cookies("Profiel")("Wachtwoord")= Wachtwoord

    enz.

    M.a.w. je roept de functie aan met als argument de variable Wachtwoord. Het resultaat zet je in een variabele met dezelfde naam (tenzij je het origineel natuurlijk nog ergens voor nodig hebt).
  • Thanx,

    Ik ga ermee aan de slag.
  • Het encrypten lukt, maar ik krijg een foutmelding als ik ga decrypten:

    [quote:d4d6e68a4c]Microsoft VBScript runtime error '800a000d'

    Type mismatch

    /temp/encrypten.asp, line 6 [/quote:d4d6e68a4c]


    Bij de volgende code:

    [code:1:d4d6e68a4c]Private Function Decrypt(strEncrypted)
    Dim strNew 'As String
    Dim a_strCharacters() 'As String
    Dim i ' As Integer

    a_strCharacters = _
    Split(strEncrypted, "-")
    For i = 0 To UBound(a_strCharacters)
    strNew = strNew & _
    Chr(CInt(a_strCharacters(i)) - 20)
    Next ' i

    Decrypt = strNew

    End Function[/code:1:d4d6e68a4c]
  • Ik heb hier een tijd naar zitten kijken en eerlijk gezegd snap ik niet echt de manier van versleutelen ('t is tenslotte al laat ;)). Los daarvan kun je zelf wel uitvinden wat er precies fout gaat. Ik neem aan dat regel 6 de volgende regel is:
    [code:1:a17d6937f9]
    strNew = strNew & Chr(CInt(a_strCharacters(i)) - 20)
    [/code:1:a17d6937f9]

    Er kunnen verschillende dingen fout gaan:
    - de conversie naar de integer: het argument is leeg of bevat geen numerieke waarde
    - De Chr-functie werkt niet helemaal lekker. Ik weet niet wat er gebeurt bij waarden kleiner dan 0 en groter dan 255.

    Je kunt het volgende doen:
    Deze regel opsplitsen in meerdere regels en telkens het resultaat naar het scherm wegschrijven. Dan krijg je iets als dit:
    [code:1:a17d6937f9]
    For i = 0 To UBound(a_strCharacters)
    response.write "i: " & i
    teken = a_strCharacters(i)
    response.write "<br>Teken: " & teken
    intTeken = CInt(teken) - 20
    response.write "<br>Integer: " & intTeken
    ascii = Chr(intTeken)
    response.write "<br>ASCII: " & ascii
    strNew = strNew & ascii
    response.write"<br>String: " & strNew
    Next
    [/code:1:a17d6937f9]

    Ik denk dat je op deze manier de fout vlug boven water hebt. Suc6.
  • [quote:910ccd69b7="Bigfoot"]Ik heb hier een tijd naar zitten kijken en eerlijk gezegd snap ik niet echt de manier van versleutelen ('t is tenslotte al laat ;)). [/quote:910ccd69b7]
    Da's geen excuus ;) De functie is de term encryptie bijna niet waardig.

    Overigens is de fout zo verholpen door dit te veranderen:
    Dim a_strCharacters() 'As String

    in dit:
    Dim a_strCharacters 'As String
  • Wat is nu een goede encryptie methode, want het standaard omzetten in ASCII is natuurlijk link, aangezien velen die code makkelijk terug zetten.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.