Avatar billede Slettet bruger
07. januar 2008 - 16:04 Der er 22 kommentarer og
1 løsning

Tjek URL, hvis den virker, så gå til den.

Hejsa allesammen!

Lad mig sige det ligeud, jeg er ret noob til alt det her PHP programmering, og står og mangler lidt hjælp nu :)

Er det muligt at lave et script, der tjekker en URL, og hvis den virker går til direkte til den, hvis ikke den virker, tjekker den en ny, og går til den i stedet, hvis den heller ikke skulle virke, bliver man bare sendt direkte til en ekstern fejlside (en tredje URL)

Er dette muligt?
Avatar billede eckhardt Nybegynder
07. januar 2008 - 16:28 #1
lige med på en kigger :)
Avatar billede gurly Praktikant
07. januar 2008 - 17:05 #2
er det sider på dit ejet domain ? eller sider på andres domain ?

gør det noget hvis det virker sådan at du klikker på et link, det åbner så en side fra DIN server, siden indeholder så en frame som er den side som du vil vise med første priotet, hvis ikke denne frame kan hentes viderestilles så til en ny side,
dette er så siden med anden priotet, eller man kan bygge videre sådan at der i stedet viderestilles til en ny side fra din server, som forsøger at hente en ny frame/side, og på denne måde bygge videre, ville du kunne bruge det ?
for så kan jeg poste koden

ps.
det kan jo så kun bruges hvis de sider du vil vise ikke indeholder specifik kode som forhindre at de kan hentes som frame
Avatar billede Slettet bruger
07. januar 2008 - 17:18 #3
øhh, lad mig forklare det sådan her: jeg har en hjemmeside hos one.com som jeg har tænkt mig at lægge en fil på, som henviser til en af mine andre mirros, hvis denne side ikke virker, så henvier den til en anden mirro, og hvis dette heller ikke virker, så henvises man til en fejlside på min one.com host. dette skulle gerne kører helt automatisk når man åbner siden...
Avatar billede gurly Praktikant
07. januar 2008 - 17:22 #4
altså er det filer der skal downloades eller bare sider der skal vises ?
Avatar billede Slettet bruger
07. januar 2008 - 17:32 #5
det er bare sider der skal vises.
Avatar billede gurly Praktikant
07. januar 2008 - 17:45 #6
ok så kan du gøre følgende, på din hjemmeside laver du et link til "side 1"
denne side skal så befinde sig hos dig selv på one.com

når siden åbnes forsøger den så at loade en frame/side ved navn
http://www.side-fra-server-1.dk

hvis denne side er online vil den blive loadet, det er den jo så ikke i det her tilfælde, så der viderestilles i stedet til "side 2"
og denne side skal så også befinde sig på din ejen hjemmeside
når så side 2 er loadet, så forsøger den at hente en frame fra
http://www.side-fra-server-2.dk
hvis denne side så er online vil den blive loadet, det er den jo så heller ikke her, derfor viderestilles der så til "fejlsiden.htm"  som jo så skal befinde sig på din ejen side.

jeg har lavet et eksempel du ken se her
http://www.aelling.lir.dk/public/eksemplar/casper/side1.htm
(bemærk du skal vente 4 sekunder to gange)

nu køre den så med "alart" på men det ken du fjerne, det beskriver jeg hvordan længere nede.

Indhold af "side 1" er følgende >

<html><head><title>title</title>
<script type="text/javascript">
setTimeout("chkit();",4000); // 4 sekunder til chk på load
redirect=true;

function xmlreq(){

  var xmlobj,xmlres;

  if(window.XMLHttpRequest)xmlobj=new XMLHttpRequest();
  else if(window.ActiveXObject)xmlobj=new ActiveXObject("Microsoft.XMLHTTP");
  else return false;

  xmlobj.open("GET","http://www.side-fra-server-1.dk/",true);

  xmlobj.onreadystatechange=function(){
    if(xmlobj.readyState==4){
      var xmlres = xmlobj.responseText;
      if(xmlres!="")redirect=false;
    }
  }

  xmlobj.send(null);

}

xmlreq();

function chkit(){
  if(redirect){
    alert("Siden svarer ikke, du viderestilles til server 2");
    document.getElementsByName("framenavn")[0].setAttribute("src","side2.htm");
  }
}

</script></head>
  <frameset cols="100%">
    <frame src="http://www.side-fra-server-1.dk/" name="framenavn">
  </frameset>
</html>




Indholdet af "side 2" er så følgende >


<html><head><title>title</title>
<script type="text/javascript">
setTimeout("chkit();",4000); // 4 sekunder til chk på load
redirect=true;

function xmlreq(){

  var xmlobj,xmlres;

  if(window.XMLHttpRequest)xmlobj=new XMLHttpRequest();
  else if(window.ActiveXObject)xmlobj=new ActiveXObject("Microsoft.XMLHTTP");
  else return false;

  xmlobj.open("GET","http://www.side-fra-server-2.dk/",true);

  xmlobj.onreadystatechange=function(){
    if(xmlobj.readyState==4){
      var xmlres = xmlobj.responseText;
      if(xmlres!="")redirect=false;
    }
  }

  xmlobj.send(null);

}

xmlreq();

function chkit(){
  if(redirect){
    alert("Siden svarer ikke, du viderestilles til fejl siden");
    document.getElementsByName("framenavn")[0].setAttribute("src","fejlsiden.htm");
  }
}

</script></head>
  <frameset cols="100%">
    <frame src="http://www.side-fra-server-2.dk/" name="framenavn">
  </frameset>
</html>




for at undgå alarterne skal du slette følgende fra koderne >

fra side 1 slettes >
    alert("Siden svarer ikke, du viderestilles til server 2");

fra side 2 slettes >
    alert("Siden svarer ikke, du viderestilles til fejl siden");
Avatar billede gurly Praktikant
07. januar 2008 - 17:51 #7
du kan eventuelt forkorte søgetiden ved at rette i denne linie >
(her vist for "side 2" )

setTimeout("chkit();",4000); // 4 sekunder til chk på load

men tænk på at den skal altså lige kunne nå at forsøge at få fat på siden, hvis siden er meget stor kan du i stedet lade den søge på en lille tekstfil du lægger på serveren.  og så rette følgende linie >

xmlobj.open("GET","http://www.side-fra-server-2.dk/",true);

ret det til >

xmlobj.open("GET","http://www.side-fra-server-2.dk/tekstfil.txt",true);

filen "tekstfil.txt"  er så bare en lille fil der lige indeholder et enkelt bogstav

nede i framen skal så bare stadig bruges samme adresse >
    <frame src="http://www.side-fra-server-2.dk/" name="framenavn">
Avatar billede gurly Praktikant
07. januar 2008 - 18:11 #8
og hvis det genere dig at den skriver "siden kan ikke vises"  i de 4 sekunder den søger, så kan du lægge en "loader side" ind som den viser i mens
jeg har lavet dig et nyt eksempel du kan se her >
http://www.aelling.lir.dk/public/eksemplar/casper/side1ny.htm

det der er ændret er at der er tilføjet en ekstra frame linie her >

  <frameset cols="100%">
    <frame src="loader.htm" name="framenavn">
    <frame src="http://www.side-fra-server-1.dk/" name="framenavn">
  </frameset>

så viser den nemlig siden loader.htm  indtil den får loadet "side-fra-server-1"
Avatar billede Slettet bruger
07. januar 2008 - 18:12 #9
Rigtig nice kode du har lavet dig der! :D Problemet er bare at, når den finder siden, så sender den en videre til næste side alligevel. se selv www.andresen-net.dk/server/
Avatar billede Slettet bruger
07. januar 2008 - 18:18 #10
Jeg har prøvet med den første kode du gav mig (den store / lange) og lavet de to HTML filer, den første fil virker lige som den skal, den bliver på siden hvis den finder den, og den sender en videre hvis den ikke finder den, SUPER. Men når man så bliver sendt videre til næste fil, så uanset om den finder en eller ej, så bliver man også sendt til fejlsiden efter 4 sek.

Hvorfor det?
Avatar billede gurly Praktikant
07. januar 2008 - 18:21 #11
ja der er en fejl et sted, kigger lige på det
Avatar billede gurly Praktikant
07. januar 2008 - 18:30 #12
tror jeg har fundet fejlen, men jeg skal lige have aftensmad inden jeg kigger på det c",)
Avatar billede Slettet bruger
07. januar 2008 - 18:31 #13
det er bare iorden :) men ellers så gør det ikke noget. Jeg kan bare sætte server2 til at være det den første fil henviser til, så virker det nemlig. (der er bare ikke nogen fejl side for hvis begge servere er nede.)
Avatar billede gurly Praktikant
07. januar 2008 - 20:00 #14
jeg må give dig ret, det virker hvis man nøjes med at bruge "side1"
hvis framen findes, så loades den, og ellers stilles der videre.

men hægter man side to på, så går det galt, jeg har forsøgt alt muligt, uden at få det til at virke desværre  :-(

ligeledes er der noget galt med min intention om en "loading side"
jeg mente jeg kunne huske hvordan man får den til at vise en frame imens den forsøger at loade den næste, men jeg må huske forkert, og kan desværre ikke huske hvor på nettet jeg så hvordan man gjorde, så heg må jeg desværre også melde pas.

jeg håber at du kan nøjes med side1  og hvis den så hverken får fat i server1 eller server2 så nøjes med den defaulte "siden kan ikke vises.

ellers kan du bare afvise mit svar  c",)
Avatar billede Slettet bruger
07. januar 2008 - 21:57 #15
Dette kan sagten bruge, du får points alligevel. Jeg var ikke kommet så vidt hvis ikke det var for dig :)
Avatar billede Slettet bruger
07. januar 2008 - 21:59 #16
...
Avatar billede gurly Praktikant
08. januar 2008 - 19:36 #17
Læser du stadig med her ? for så her jeg nok en endnu bedre løsning, som virker hurtigere, og hvor du kan tjkke mange servere inde der viderestilles, og mulighed for at hvis ingen af serverene svare vendes der tilbage til en fejl side på den server man var på.

Men er du her stadig ?
Avatar billede Slettet bruger
09. januar 2008 - 12:50 #18
Yep, jeg er her stadig, og er meget interesseret i det :P
Avatar billede gurly Praktikant
10. januar 2008 - 14:45 #19
Det er så lavet ud fra en betragtning om at hvis man kan losde en lille js fil fra en server, så kan man nok også loade htm siden fra samme server, ved godt at hvis server køre meget overbelastet så er der en teoretisk mulighed for at man får loadet js filen men ikke htm siden, men det må jeg se bort fra.

siden man åbner ser så sådan ud >

<html>
<head>

<script language="JavaScript" type="text/javascript" src="script1.js"></script>
<script language="JavaScript" type="text/javascript" src="script2.js"></script>
<script language="JavaScript" type="text/javascript" src="script3.js"></script>

</head>

<body>

<script type="text/javascript">
window.onload = function(){
setTimeout("function3();",2000);
setTimeout("function2();",1000);
function1();
}
</script>

<div align="center">
<h1>Siden Loader, Vent Venligst</h1>
</div>
</body>

</html>



De 3 js filer ser sådan ud >

script1 >


function function1()
{
window.location="server1.htm";
}


(du indsætter bare koden i notepad, og gemmer som "navn.js" filtype "alle filtyper" )


script2 >


function function2()
{
window.location="server2.htm";
}




og script3 >

function function3()
{
window.location="fejlsiden.htm";
}



det virker så sådan at den loader de 3 js filer hvis den kan altså, skulle en af dem ikke blive hentet fordi denne server er nede sker der intet ved det

den køre så først funktion1()  hvis vel at mærke den fik hentet script1.js altså
hvis den gjore det, så viderestilles til siden server1.htm
hvis ikke den kan køre funktion1() fordi den ikke fik hentet filen, så køre den jo funktion2() i stedet, og viderestiller til siden server2.htm i stedet.
fik den heller ikke loadet denne js fil, så skulle den jo gerne have loadet script3.js  som befinder sig på din ejen server, og derfor viderestille til din fejl side

Det lader til at køre rigtigt fint  c",)

faktisk virker det til at man kan fjerne tids forsinkelsen fra funktionerne, den priotere så den nederste funktion højrere end de funktioner der ligger over
men det ved jeg ikke rigtigt om man kan stole på
så måske er det bedst at beholde tids forsinkelsen.

nu her jeg sat tidsforsinkelsen ret lavt, eksempelvis >
setTimeout("function2();",1000);
hvor 1000 står for 1 sekund, det er muligt at du får brug for at sætte værdien op til lidt flere sekunder, men det finder du ud af  c",)

jeg har kun afprøvet det hvor hele molovitten lå på en´ og samme server
(jeg har kun en)
har så prøvet at rette i de 3 adresser som henter js filerne, lavet adresserne forkerte, så den ikke kunne hente eksempelvis script1.js og script2.js
og det ser ud til at køre som det skal.

du kan bare spørge hvis der er noget du er i tvivl om.
og ligeledes må du gerne lige fortælle hvordan du syntes det køre  c",)
Avatar billede gurly Praktikant
10. januar 2008 - 14:50 #20
PS
script1.js  skal så befinde sig på samme server som siden server1.htm
ligedan med scrip2.js og siden server2.js

script3.js og fejlsiden på din ejen server

du kan sagtens udbygge det, sørg blot for at i scriptet der kalder på funktionerne, at du ligger den med den længste forsinkelse øverst, og den uden forsinkelse nederst.
gør man det modsatte giver det nemlig problemer.
Avatar billede gurly Praktikant
10. januar 2008 - 14:57 #21
FEJL
der skulle selvfølgelig have stået >
ligedan med scrip2.js og siden server2.htm
Avatar billede gurly Praktikant
13. januar 2008 - 00:41 #22
Kunne du bruge det ?
Avatar billede gurly Praktikant
21. januar 2008 - 10:45 #23
men det var jo netop derfor jeg spurgte om du stadig fulgte med !
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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