Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запрос на Ip (https://javascript.ru/forum/misc/6932-zapros-na-ip.html)

mycoding 06.01.2010 20:07

Запрос на Ip
 
Задача такая заходит человек на сайт на народе скрипт проверяет есть ли
ip в сети если есть то отсылет на него если нет то загружает страницу
index.htm
Цель этого обойтись без хостинга )))
На данный момент используют во такой вариант

<html>
<head>
<script>
mike="offline";
</script>
<script src="http://94.233.4.22/testonline.js" id=script1>
</script>

<script>
function $(id) { return document.getElementById(id);}
window.onload = function()
{
$("ch").style.display="none";
$("bn").style.display="none";
$("bt").style.display="none";

if(mike=='online') {alert("online");alert("mike="+mike);window.location.href = "http://94.233.4.22";}
else {alert("offline");window.location.href = "index.htm";}

}
</script>
</head>

<body>

</body>
</html>


в testonline.js
mike="online";


Проблема втом что он кэширует скрипт и если я выключаю сервак он всё равно загружает скрипт из кэша и направляет на мой ip....
Подскажите что можно сделать?

Gvozd 06.01.2010 20:22

загружайте скрипт с помощью http://javascript.ru/ajax/transport/script
а для избежания кеширования, добавляйте к имени скрипта случайное число, чтобы ссылка была вида
http://94.233.4.22/testonline.js?15863452
на заметку: http://www.no-ip.com/
PS также можно сделать проверку активности IP, расположив на нем рисунок, и выполнив такой код:
(function(){
var img=new Image();
var onload=function(available){
alert(available);
/*
проверяем available, и в зависимости от него выполняем переход или еще что-то
*/
}
img.onload=function(){
onload(true);
}
img.onerror=function(){
onload(false);
}
img.src="http://ya.ru/logo.png";
})();

mycoding 06.01.2010 21:37

НЕ получается, в первом случае надо ещё dojo подклучать, можно без него
а во втором как его сгенирировать? если
<script src="http://94.233.4.22/testonline.js" id=script1>
</script>
туда не впихнешь функцию даты или рандома, а если потом менять src Тоже не пашет

mycoding 06.01.2010 22:32

Первый вариант запахал если dojo выкинуть и заменить на document
и добавил random
<html>
<head>
<script>
mike="offline";

function attachScript(id, src){
var element = document.createElement("script")
element.type = "text/javascript";
element.src = src;
element.id = id;
document.getElementsByTagName("head")[0].appendChild(element)
}

attachScript('script1','http://94.233.4.22/testonline.js?date='+Math.random());


function $(id) { return document.getElementById(id);}
window.onload = function()
{
$("ch").style.display="none";
$("bn").style.display="none";
$("bt").style.display="none";

if(mike=='online') {alert("online");window.location.href = "http://94.233.4.22";}
else {alert("offline");window.location.href = "index.htm";}

}
</script>
</head>

<body>

</body>
</html>

mycoding 06.01.2010 22:39

А способ с картинкой , не всегда работает правильно

Gvozd 06.01.2010 22:42

Цитата:

Сообщение от mycoding
Первый вариант запахал если dojo выкинуть и заменить на document

да, есть такое дело.
молодец, что разобрались самостоятельно)))))
Цитата:

Сообщение от mycoding
А способ с картинкой , не всегда работает правильно

разве?
приведите пример, или условия, когда не работает

mycoding 07.01.2010 11:32

Он сначала не работал потом заработал, так что наверное работает))))
Просто я думал, что картинки браузер тоже должен кэшировать.
А вообще задача такая, есть 5 ну или более Ip он проверяет по порядку какой online и перенаправляет на первый который онлайн, но надо будет ещё как то сделать, что бы ну например будет форум, как то надо , чтобы обновления с других ip загружал, вот думая как это чисто технически можно сделать???

Gvozd 07.01.2010 13:06

Цитата:

Сообщение от mycoding
Просто я думал, что картинки браузер тоже должен кэшировать.

решается рповно также как и в случае со скриптом
Цитата:

Сообщение от mycoding
Он сначала не работал потом заработал, так что наверное работает))))

мой пример сначала не работал, а потом заработал?
или ваш не работал, а потом заработал?
просто в этом коде очень важен порядок, и именно надо обработчики выставлять до смены src
Цитата:

Сообщение от mycoding
чтобы обновления с других ip загружал, вот думая как это чисто технически можно сделать???

сливание 5 независимых БД со своими автоинкрементами-задача достаточно нетривиальная, и требует большого количества геморного кода
лучше бы вы разместили форум в одном месте все-таки
PS только щаз заметил глупость фразы
Цитата:

Сообщение от mycoding
Цель этого обойтись без хостинга )))

зачем?зачем делать решение через жопу в попытках обойтись без хостинга?
и чем вас использование хостинга не устраивает?они же копейки стоят.вы больше с девушкой в кафе потратите, чем хостинг на месяц!
по качеству и удобству также можно что-то подобрать .
в общем, если вас не что-то другое сподвигло на такие манипуляции, то ваша проблема из разряда "сами придумываем себе проблемы, а потом мужественно их решаем"

mycoding 07.01.2010 14:42

Дело в том , что я не работаю, если бы работал купил, а так получаю опят, чтобы на работу приняли, спросят а что вы умеете, да вот например .... ))))

mycoding 07.01.2010 14:43

А вообще я уже 1.5 года пытаюсь работу найти......)))


Часовой пояс GMT +3, время: 18:22.