Avatar billede Slettet bruger
04. august 2002 - 19:43 Der er 16 kommentarer og
1 løsning

Tjekke links

Hej eksperter....

Jeg står og skal bruge en funktion der tjekker en stribe links fra en databse og udskriver id værdien på dem der ikke virker..... er der nogen der kan hjælpe mig med dette ? har ingen ide om hvad jeg skal gøre for at lave et sådanne script.... men kan selv rette til hvis der er en der har det grundliggende til det.

håber i kan/vil hjælpe.

mvh.
Questis.dk
Avatar billede oasen Nybegynder
04. august 2002 - 19:43 #1
Avatar billede oasen Nybegynder
04. august 2002 - 19:47 #2
Do While Not rs.EOF
  arrURLS = arrURLS & "," & rs("Link")
  rs.MoveNext
Loop
Avatar billede oasen Nybegynder
04. august 2002 - 19:48 #3
Og split dem så tilsidst som i eksemplet på html.dk:

arrURLS = Split(arrURLS,",")
Avatar billede Slettet bruger
04. august 2002 - 19:50 #4
nu snakker i om at tjekke dem.... men hvordan får jeg så udskrevet id'et på den der ikke virker... for mig ser koden okay ud at gå til, men det sidste vil jeg lige have med &:-)
Avatar billede oasen Nybegynder
04. august 2002 - 20:08 #5
Det er nu kun mig, der snakker :o)

Hvis du bare udskifter rs("Link") og rs("ID") med dine egen navne på kolonnerne, burde det virke:

***************************************************************

<%
' Array med URL'er, som skal chekkes
Do While Not rs.EOF
  arrURLS = arrURLS & "," & rs("Link")
  arrIDS = arrIDS & "," & rs("ID")
  rs.MoveNext
Loop
arrURLS = Split(arrURLS,",")
arrIDS = Split(arrIDS,",")

' Array med HTTP header koder
arrHTTPcode = Array("100", "101", "200", "201", "202", "203", "204", "205", "206", "300", "301", "302", "303", "304", "305", "307", "400", "401", "402", "403", "404", "405", "406", "407", "408", "409", "410", "411", "412", "413", "414", "415", "416", "417", "500", "501", "502", "503", "504", "505")
' Array med HTTP header kodernes forklaringer
arrHTTPtext = Array("Continue", "Switching Protocols", "OK", "Created", "Accepted", "Non-Authoritative Information", "No Content", "Reset Content", "Partial Content", "Multiple Choices", "Moved Permanently", "Found", "See Other", "Not Modified", "Use Proxy", "Temporary Redirect", "Bad Request", "Unauthorized", "Payment Required", "Forbidden", "Not Found", "Method Not Allowed", "Not Acceptable", "Proxy Authentication Required", "Request Time-out", "Conflict", "Gone", "Length Required", "Precondition Failed", "Request Entity Too Large", "Request-URI Too Large", "Unsupported Media Type", "Requested range not satisfiable", "Expectation Failed", "Internal Server Error", "Not Implemented", "Bad Gateway", "Service Unavailable", "Gateway Time-out", "HTTP Version not supported")
' Gennemløb Array med URL'er
For intURL = 0 to Ubound(arrURLS)
  Set HttpObj = Server.CreateObject("AspHTTP.Conn")
  HTTPObj.Url = arrURLS(intURL)
  HTTPObj.GetURL

  For intCode = 0 to Ubound(arrHTTPcode)
    If Instr(HttpObj.Response,arrHTTPcode(intCode)) Then
      strResponse = arrHTTPtext(intCode)
      Exit For
    End if
  Next
  If strResponse <> "OK" Then
    Response.Write "<p>" & arrIDS(intURL) & " - " & arrURLS(intURL) & " - " & strResponse & "</p>"
  End If
  strResponse = ""
Next
%>
Avatar billede Slettet bruger
04. august 2002 - 20:11 #6
takkker mange gange, jeg prøver det af i dag og i morgen og vender tilbage &:-)
Avatar billede kalkunen Nybegynder
04. august 2002 - 21:01 #7
Må man så godt lave HTTPtext om til dansk?
Avatar billede oasen Nybegynder
04. august 2002 - 21:06 #8
Der kan du skrive hvad som helst. Du kan også gøre array'et mindre, så der f.eks. kun gives meddelelse ved fejl 404.
Avatar billede kalkunen Nybegynder
04. august 2002 - 21:14 #9
ok, sådan et script er jo kanon til en søgemaskine!
Avatar billede oasen Nybegynder
04. august 2002 - 22:12 #10
Ehh... kommer an på hvordan du bruger det. Det tager et stykke tid at tjekke, hvis der er flere links. Jvf. http://www.html.dk/scripts/asp/00009/eksempel.asp
Avatar billede Slettet bruger
06. august 2002 - 16:13 #11
hmmmm... findes der ikke en lidt hurtigere måde, dette er cirka 5000 links og der kommer flere til hele tiden.....

så ville være glad for en lidt hurtigere metode &:-)
Avatar billede dr-data Nybegynder
07. august 2002 - 10:21 #12
hvis dine brugere alligevel surfer gennem dine links, kan du jo bare nøjes med at checke når de bliver besøgt, selvfølgelig vil det ikke være en optimal løsning, men et klart alternativ....

ala.:

****ASP-FIL****

<%
checkurl(Request("url"))
if side findes then          'hvis der ingen http-header fejl er
  response.redirect Request("url")        'vidrestil
else                        'hvis der var en fejl
  response.write "Oooouuuupppssszzzzzz......"    'giv en undskyldning
  'evt. giv admin besked eller noter i fil/database
end if

/håber det var en brugbar løsning :-)
Avatar billede dr-data Nybegynder
07. august 2002 - 10:22 #13
%>

:-)
Avatar billede oasen Nybegynder
07. august 2002 - 18:23 #14
Du kan jo altid sætte script-timeout op til f.eks. 10 min og så se, hvor mange links der når at blive tjekket.
Du kan jo også sætte den til at tjekke et helt tilfældigt link fra basen hver gang en bruger kommer ind på din forside.
Hvis den fejler, kan du så, som sagt ovenfor, nortere det enten i basen eller få sendt dig en mail til dig selv.
Det giver dig en lille idé om hvor mange links, der måtte være døde.
Ulempen er så at brugeren skal vente på at et link bliver tjekket, når vedkommende besøger din side.
Alternativt (hvis du har mulighed for at oprette opgaver på serveren), kan du automatisk lade den tjekke f.eks. et link hvert 5. minut. Det skulle ikke genere nogen.
Avatar billede Slettet bruger
18. august 2002 - 11:20 #15
Da jeg ikke har kunnet bruge denne metode, grundet en for stor link database, mener jeg ikke at mit mål er opfyldt, og af den grund vil jeg ikke udele point. hvis nogen på et tidspunkt skulle få enm ide til det, er jeg åben over for muligheder.

takker for jeres tid.

mvh.
Questis
Avatar billede bobbedude Nybegynder
18. august 2002 - 13:16 #16
Du kunne jo også prøve at være lidt opfindsom sel ikke ?
istedet for at løbe gennem det hele på en side kunne du jo have lavet det sådan at den stod og hoppede mellem 2 sider.
Altså en side der hentede Urlerne og en der checkede dem så ville den jo ikke time ud ???
Avatar billede Slettet bruger
18. august 2002 - 13:26 #17
Det jeg har ste med den kode er at det tager uendelig med tid at tjekke disse links, lige nu pt. er der ca. 10000 links at tjekke i den. derfor mener jeg ikke det er en brugbar løsning. prøv at tænk på om et halvt år, at skulle sider og tjekke flere 100.000 links på denne måde, det går ikke &:-)
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