Autor Zpráva
JiriSko
Profil *
Situace je následující:

Mám určitý server www.example.com. Server není stále připojen k internetu.

Jak pomocí PHP či JavaScriptu zjistit z cizího (free)webu, zda server je z internetu dostupný nebo ne?

Ať zkouším, co zkouším, tak ve stavu online cíle dosáhnu, ale jakmile je offline, tak se mi nic nenačte (úplně prázdná stránka, žádny offline) :-(
Matty
Profil
JiriSko
Jednoduše. Třeba: z cizího webu si otevřeš html kód stránky a dáš najít třeba <title>. Když bude nalezen - je online, když ne tak offline.
Matty
Profil
JiriSko
Můžeš zkusit tenhle kód:
<?php
$kod_serveru = htmlspecialchars(file_get_contents ("http://www.example.com/"));
if (preg_match("/\btitle\b/i", $kod_serveru)) {
    echo "ON-LINE";
} else {
    echo "OFF-LINE";
}
?>

Chce to ještě doladit - při off-line se to sice vypíše, ale zároveň to ukáže warning(to se dá vypnout). Na tom freewebu ale musíš mít allow_url_fopen.
Taps
Profil
Matty
JiriSko
a není lepší toto http://kaspy.cz/scripty/79/jak-jednoduse-overit-funkcnost-stranky
JiriSko
Profil *
Furt to samy, jakmile to ten server nenajde, tak se stránka vůbec nenačte.
JiriSko
Profil *
Abyste rozuměli.

Mám modem s veřejnou IP, jsem za NATem a veřejnou IP nemám. Tak v nastavení modemu nechávám přesměrovávat port 80 na můj PC s Apache. Jde mi o to, aby ten skript zjistil, zda mám pc zapnuty (pak přesměroval na můj server), nebo ne (pak přesměrování kamsi jinam).
Problém je v tom, že jakmile je modem vypnut (nebo nepřesměrovává), tak se stránka vůbec nenačte :(
Leo
Profil
"jakmile to ten server nenajde, tak se stránka vůbec nenačte"

To je logicky, ne? Leo
JiriSko
Profil *
Ale já nemyslím tu stránku na mym PC, ale nenačte se vůbec stránka, kde je ten skript na zjištění stavu. Když do něj dám odkaz na neexistující stránku, tak skript v pohodě jde (ukáže se offline a chyba), ale na moji nic (vůbec se nenačte ta stránka se skriptem). Chápeš?
JiriSko
Profil *
Jediné, co mě napadá, je udělat to asi takto:

Ten skript hodím do iframu. Když budu mít server zapnutej, tak se iframe načte, pokud bude vypnut, tak v iframe bude prázdná stránka. Teď by stačil JavaScript, který by zjistil, jestli je obsah iframu prázdný nebo ne.
Zkoušel jsem ho udělat, ale nepodařilo se. Poradíte?
Matty
Profil
JiriSko
ale nenačte se vůbec stránka, kde je ten skript
Tahle stránka je snad nezávislá na tom, zda je server on-line nebo ne. Když máš ten server off, tak ti to vypíše co?
JiriSko
Profil *
Já už nevím, jak bych to popsal, tak nechám server vypnut a zkus si to sám.
http://jiri-sko.wz.cz/tester/
V 10:00 ho zapnu.
Matty
Profil
JiriSko
Tady v tom testeru používáš který script? A jaká je adresa serveru?
JiriSko
Profil *
Ono je to jedno, který skript používám, výsledek je vždy stejný. V tuto chvíli je tam skript nahoře z odkazu od Tapse.
Teď jsem ho zapl.
JiriSko
Profil *
Sakra, teď to háže chybu.
JiriSko
Profil *
Stačil by mi skript, kterej by zjistil obsah stránky v iframe a podle toho by napsal online (načteno) nebo offline (prázdná stránka).
JiriSko
Profil *
Tak už jsem to vyřešil. Kdyby někdo řešil podobný problém, tak přikládám zdroják:

<?php
if (!$_GET['stav']){
 echo "Čekejte, prosím, testuji připojení...";
 echo '<script language="JavaScript">';
 echo 'window.location.href="index.php?stav=online";'; // Přesměrování zkoušku, zda je online
 echo 'setTimeout("window.location.href=\"index.php?stav=offline\"",10000)';  // Když se stránka do 10 sekund nenačte (offline), přesměruje se na stránku s hlášením OFFLINE
 echo '</script>';
}
elseif ($_GET['stav'] == "online"){
 $server = htmlspecialchars(file_get_contents ("http://www.example.com/"));
 if (preg_match("/\btitle\b/i", $server)) {
  echo "ONLINE";
 }
}
elseif ($_GET['stav'] == "offline"){
 echo "OFFLINE";
}
?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: