Avatar billede mra Nybegynder
25. juni 2003 - 12:03 Der er 21 kommentarer og
1 løsning

Simple tekst counter, men begrænset skriverettigheder

Hej,

jeg sidder og mangler en tekst-counter. Ikke det helt store, men mit problem er at til den side jeg har er der begrænset adgang så jeg kan kunne skrive i min log mappe. Er det muligt at lave en counter der skriver til denne destination?

/mra
Avatar billede erikjacobsen Ekspert
25. juni 2003 - 12:14 #1
Ja, du laver bare en fil i din logmappe, og skriver stien til den i dit FSO-objekt
Avatar billede medions Nybegynder
25. juni 2003 - 12:28 #2
Prøv at lad mig se din kode!

//>Rune
Avatar billede mra Nybegynder
25. juni 2003 - 16:01 #3
<%
Function Counter()
  Dir = Server.Mappath("log/Counter.txt")
  Set File = CreateObject("Scripting.FileSystemObject")
  Set Count = File.OpenTextFile(Dir)
  Counter = Cint(Count.ReadLine)
  Count.Close
  If Session("Counter") = "" Then
    Session("Counter") = Counter
    Counter = Counter + 1       
    Set Count = File.CreateTextFile(Dir,true)
    Count.WriteLine(Counter)
    Count.Close
  End If
  Set File = Nothing
  Set Count = Nothing
End Function
%>

og så <%=Counter%> til at indsætte den
Avatar billede yamino Nybegynder
25. juni 2003 - 16:08 #4
Lad mig lige prøve at scripte din en fix counter :)
Avatar billede yamino Nybegynder
25. juni 2003 - 16:25 #5
Lav en fil der hedder inc_counter.asp og indsæt flg. kode:

<%
strDate = Day(Date)
        strOldDate = Request.Cookies("StarfleetRecords")("Dato")
        Set fso = CreateObject("Scripting.FileSystemObject")
        filespec = Server.Mappath("counter.txt")
        Set f = fso.OpenTextFile(filespec,1)
            if cint(Request.Cookies("DinCounter")("Dato")) = strDate then
                Response.Write f.Readline & "<br>"
                f.Close
            else
        Set fso = CreateObject("Scripting.FileSystemObject")
        filespec = Server.Mappath("counter.txt")
        Set f = fso.OpenTextFile(filespec,1)
            strOpdaterCounter = f.Readline + 1
            Response.Write strOpdaterCounter &  "<br>"
        Set fso = CreateObject("Scripting.FileSystemObject")
        filespec = Server.Mappath("counter.txt")
        Set f = fso.OpenTextFile(filespec,2)
            f.WriteLine strOpdaterCounter
        f.close
    Response.Cookies("DinCounter")("Dato") = strDate
    Response.Cookies("DinCounter").Expires = Date+365
end if
%>

Derefter opret counter.txt, indeholdende den værdi din counter skal starte ved, og lig den i samme mappe som inc_counter.asp.

For at få vist antallet af besøg på din hovedside skriver du:

<!--#include file="inc_counter.asp"-->

eller

Visitors: <!--#include file="inc_counter.asp"-->

for ligesom at gøre de besøgende opmærksom på det :)
Denne counter er tildels reloadsikret, medmindre den besøgende går ud og sletter sine cookies, opdaterer din side, sletter sine cookies igen, opdaterer osv osv.

Håber det kan brugs.

PS: Hvis du vil kalde din "counter.txt" noget andet, så husk at ændre dette navn de steder du finder det i inc_counter.asp

Y^
Avatar billede yamino Nybegynder
25. juni 2003 - 16:26 #6
Forresten, counteren tæller den enkeltes besøg igen, når datoen på serveren skifter.
Avatar billede mra Nybegynder
25. juni 2003 - 16:31 #7
Den melder stadig fejl ... tror sku ikke helt jeg kan skrive til min log mappe alligevel. Det går galt i linje 14

            strOpdaterCounter = f.Readline + 1

... sur røv :(
Avatar billede mra Nybegynder
25. juni 2003 - 16:33 #8
okay rettede lidt til og den melder nu fejl ved linje 18

        Set f = fso.OpenTextFile(filespec,2)

:/
Avatar billede yamino Nybegynder
25. juni 2003 - 16:36 #9
Hvis mig din rettede kode, så kigger jeg på det mate  :)
Avatar billede mra Nybegynder
25. juni 2003 - 16:37 #10
<%
strDate = Day(Date)
        strOldDate = Request.Cookies("StarfleetRecords")("Dato")
        Set fso = CreateObject("Scripting.FileSystemObject")
        filespec = Server.Mappath("log\counter.txt")
        Set f = fso.OpenTextFile(filespec,1)
            if cint(Request.Cookies("DinCounter")("Dato")) = strDate then
                Response.Write f.Readline & "<br>"
                f.Close
            else
        Set fso = CreateObject("Scripting.FileSystemObject")
        filespec = Server.Mappath("log\counter.txt")
        Set f = fso.OpenTextFile(filespec,1)
            strOpdaterCounter = f.Readline + 1
            Response.Write strOpdaterCounter &  "<br>"
        Set fso = CreateObject("Scripting.FileSystemObject")
        filespec = Server.Mappath("counter.txt")
        Set f = fso.OpenTextFile(filespec,2)
            f.WriteLine strOpdaterCounter
        f.close
    Response.Cookies("DinCounter")("Dato") = strDate
    Response.Cookies("DinCounter").Expires = Date+365
end if
%>
Avatar billede mra Nybegynder
25. juni 2003 - 16:38 #11
problemet er at det eneste jeg kan skrive i er min log fil mappe :/
Avatar billede yamino Nybegynder
25. juni 2003 - 16:39 #12
Skift

filespec = Server.Mappath("log\counter.txt")

Til

filespec = Server.Mappath("log/counter.txt")

Derefter, vær sikker på at du har lagt counter.txt i din /log/ mappe på serveren.
Avatar billede yamino Nybegynder
25. juni 2003 - 16:40 #13
Ah, og atter en fejl!

Skift linie 3 i inc_counter.asp som er:

strOldDate = Request.Cookies("StarfleetRecords")("Dato")

til

strOldDate = Request.Cookies("DinCounter")("Dato")
Avatar billede yamino Nybegynder
25. juni 2003 - 16:51 #14
"problemet er at det eneste jeg kan skrive i er min log fil mappe :/"

Men har du lagt counter.txt i din log-fil mappe?

Og har du ændret log\counter.txt til log/counter.txt i koden?
Avatar billede mra Nybegynder
25. juni 2003 - 16:53 #15
Den melder stadig fejl i linje 18 :/
Avatar billede mra Nybegynder
25. juni 2003 - 16:54 #16
yes sir, counter.txt ligger hvor den skal og der står log/counter.txt
Avatar billede yamino Nybegynder
25. juni 2003 - 16:55 #17
Hehe, hvilken fejl? Husk at paste fejlmeddelelsen, gør det lidt nemmere at rette.
Avatar billede yamino Nybegynder
25. juni 2003 - 16:56 #18
Eller paste koden som du har rettet den nu.
Avatar billede mra Nybegynder
25. juni 2003 - 16:56 #19
doh .. det gør godt at læse det hele igennem så man får alle counter.txt rettet .. havde kun rettet de 2 af dem :P

min fejl, det fungerer super godt nu, tak :)
Avatar billede yamino Nybegynder
25. juni 2003 - 16:58 #20
Haha, det sker.

Anytime mate :)
Avatar billede yamino Nybegynder
25. juni 2003 - 17:00 #21
Du kan eventuelt teste om det virker hvis datoen ændrer sig (gøres ved at "snyde" scriptet til at tro at datoen på serveren er anderledes end den i cookien)

Linie 2: strDate = Day(Date)+1

Upload, Reload siden en gang, og se om counteren tæller. Husk at rette linien tilbage efter testen til:

strDate = Day(Date)
Avatar billede mra Nybegynder
25. juni 2003 - 17:04 #22
Det gør det :) Mega meget tak!
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