Autor | Zpráva | ||
---|---|---|---|
JiriSko Profil * |
#1 · Zasláno: 8. 3. 2008, 17:10:29
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 |
#2 · Zasláno: 8. 3. 2008, 17:19:05
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 |
#3 · Zasláno: 8. 3. 2008, 17:41:47
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 |
#4 · Zasláno: 8. 3. 2008, 17:44:24
|
||
JiriSko Profil * |
#5 · Zasláno: 8. 3. 2008, 17:59:41
Furt to samy, jakmile to ten server nenajde, tak se stránka vůbec nenačte.
|
||
JiriSko Profil * |
#6 · Zasláno: 8. 3. 2008, 19:12:06
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 |
#7 · Zasláno: 8. 3. 2008, 20:49:18
"jakmile to ten server nenajde, tak se stránka vůbec nenačte"
To je logicky, ne? Leo |
||
JiriSko Profil * |
#8 · Zasláno: 9. 3. 2008, 09:04:03
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 * |
#9 · Zasláno: 9. 3. 2008, 09:08:13
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 |
#10 · Zasláno: 9. 3. 2008, 09:30:15
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 * |
#11 · Zasláno: 9. 3. 2008, 09:33:14
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 |
#12 · Zasláno: 9. 3. 2008, 09:41:37
JiriSko
Tady v tom testeru používáš který script? A jaká je adresa serveru? |
||
JiriSko Profil * |
#13 · Zasláno: 9. 3. 2008, 09:47:10
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 * |
#14 · Zasláno: 9. 3. 2008, 09:48:29
Sakra, teď to háže chybu.
|
||
JiriSko Profil * |
#15 · Zasláno: 9. 3. 2008, 10:02:49
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 * |
#16 · Zasláno: 11. 3. 2008, 17:10:38
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"; } ?> |
||
Časová prodleva: 16 let
|
0