Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > сделать скрипт из DLE автономным


Автор: jone31 10.1.2009, 21:10
Есть скрипт для DLE который определяет подключен ли комп к интернету:
Код

<?php
if(!defined('DATALIFEENGINE'))
{
  die("Доступ запрещен!");
}


$fp = @fsockopen("www.mail.ru", 80, $errno, $errstr, 30);

if (!$fp) {
    $tinet = 'В данный момент интернет неподключен';
} else {
$tinet = 'В данный момент интернет подключен';
}
?>


Помогите его переделать что бы он работал без DLE.

Автор: awers 10.1.2009, 21:19
удали

Код

if(!defined('DATALIFEENGINE'))
{
  die("Доступ запрещен!");
}

Автор: jone31 10.1.2009, 21:19
Кстати вот в прикрепленном архиве есть инструкции по его установке в DLE(если это конечно нужно!)

Автор: jone31 10.1.2009, 21:49
нет. это не помогает! Все равно не пашет! 

Автор: awers 10.1.2009, 21:51
убери собаку @fsockopen


и вообще DATALIFEENGINE то тут причем. скрипт вполне самостоятельный

Автор: jone31 10.1.2009, 22:14
Цитата(awers @  10.1.2009,  21:51 Найти цитируемый пост)
DATALIFEENGINE то тут причем. скрипт вполне самостоятельный

ну я скачал его на сайте в категории модули для DLE.

Цитата(awers @  10.1.2009,  21:51 Найти цитируемый пост)
убери собаку @fsockopen

Убрал. Вот что получилось!
Код

<?php
$fp = ("www.yandex.ru", 80, $errno, $errstr, 30);

if (!$fp) {
    $tinet = 'В данный момент интернет неподключен';
} else {
$tinet = 'В данный момент интернет подключен';
}
?>


Теперь пишет "Parse error: syntax error, unexpected ',' in T:\home\users\test\index.php on line 2"

Автор: awers 10.1.2009, 22:37
товарисч! я сказал убрать собаку оттуда а не функцию ))))  smile 

Автор: jone31 10.1.2009, 22:38
.Вот что написано в файле справки к скрипту:
Код

откроем index.php, найдём код:

require_once ROOT_DIR.'/engine/init.php';

Ниже добавим:

require_once ROOT_DIR.'/engine/modules/testinet.php';

Найдём код:

$tpl->set('{topnews}',$topnews);

Ниже добавим:

$tpl->set('{inetstatus}',$tinet);

Сохраним и закроем.

Теперь в шаблоне главной страницы в нужном месте добавим {inetstatus}. Все скрипт работает!


Я предпоглагаю что все дело в - $tinet. Походу его надо как то вытаскивать с этого скрипта. Типа как в инструкции по установке. Что вы об этом думаете?

Добавлено через 3 минуты и 8 секунд
Цитата(awers @  10.1.2009,  22:37 Найти цитируемый пост)
товарисч! я сказал убрать собаку оттуда а не функцию ))))   


 smile  smile  smile 

Исправил:

Код

<?php
$fp = fsockopen("www.yandex.ru", 80, $errno, $errstr, 30);

if (!$fp) {
    $tinet = 'В данный момент интернет неподключен';
} else {
$tinet = 'В данный момент интернет подключен';
}
?>


Теперь просто белый лист! smile 

Автор: SneG0K 10.1.2009, 23:19
Цитата(jone31 @  10.1.2009,  21:38 Найти цитируемый пост)
Теперь просто белый лист!

А что ты от этого ожидаешь? На чем тестируеш? Денвер?

Автор: jone31 10.1.2009, 23:24
Нет. TopServer(STPServer)

Добавлено через 3 минуты и 5 секунд
Этот скрипт в составе с DLE 7.5 у меня работал!

Автор: theworldcreator 11.1.2009, 07:37
Цитата

Теперь просто белый лист! smile  

Иии? У тебя ничего на экран не выводится, вот лист и белый. Напиши в конце 
Код

echo $tinet;
 и заработает

Автор: jone31 11.1.2009, 10:38
Спасибо работает!  Только в коде все же "собачку"(@) у функции fsockopen отбирать не надо было!! Без нее идут одни ошибки!

Добавлено через 8 минут и 49 секунд
А можно ли в пхп задавать приоритет скриптов, ну что бы этот скрипт выполнился раньше чем другие пхп скрипты???

Автор: awers 11.1.2009, 12:24
Ты все перепутал. Ошибки надо не глушить а исправлять.

Автор: jone31 11.1.2009, 13:33
Цитата(awers @  11.1.2009,  12:24 Найти цитируемый пост)
Ты все перепутал. Ошибки надо не глушить а исправлять.

ну я собаку поставил и ошибки не стало!

А что с моим вопросом по поводу проритета выполнения скрипта??? Мне нужно чтобы скрипт теста инета  выполнился раньше других!!! 

Автор: gta4kv 11.1.2009, 13:50
Цитата

ну я собаку поставил и ошибки не стало!

)))), собака просто прячет ошибки. но они не пропадают.

Автор: skyboy 11.1.2009, 13:55
Цитата(jone31 @  11.1.2009,  09:38 Найти цитируемый пост)
ну что бы этот скрипт выполнился раньше чем другие пхп скрипты??? 

"раньше" - это как? вот я обращаюсь к адресу http://mydomain.com/index.php и выполняется содержимое файла index.php. как можно заставить "раньше" index.php выполнится содержимому myfirst.php? прописать в самом начале index.php строчку "require 'myfirst.php';" или "include 'myfirst.php';". вопрос вообще неясен, что тебе нужно - тоже.
Цитата(jone31 @  11.1.2009,  12:33 Найти цитируемый пост)
ну я собаку поставил и ошибки не стало!

угу. почти. ошибка осталась, просто она не выводится и все. и даже в лог не пишется(насколько мне известно). если не хочешь, чтоб выводились ошибки, ставишь директиву http://ua.php.net/manual/en/errorfunc.configuration.php#ini.display-errors в php.ini или в .htaccess, но ошибки должны где-то фиксироваться. хотя бы в логе. 

Автор: jone31 11.1.2009, 14:14
Цитата(gta4kv @  11.1.2009,  13:50 Найти цитируемый пост)
собака просто прячет ошибки. но они не пропадают.

А я и не писал что ошибки пропали!   smile

Так никто и не ответил на мой вопрос:

Можно ли в php задавать приоритет скриптов, ну что бы скрипт теста инета выполнился раньше чем другие php скрипты???

Автор: SneG0K 11.1.2009, 14:17
Цитата(jone31 @  11.1.2009,  13:14 Найти цитируемый пост)
Можно ли в php задавать приоритет скриптов

Да... Запустить этот скрипт раньше другого.

Автор: StachelDraht 11.1.2009, 14:58
Цитата

Так никто и не ответил на мой вопрос:

тебе ответил skyboy:

Цитата

прописать в самом начале index.php строчку "require 'myfirst.php';" или "include 'myfirst.php';". вопрос вообще неясен, что тебе нужно - тоже.


Автор: jone31 11.1.2009, 15:02
Цитата(SneG0K @  11.1.2009,  14:17 Найти цитируемый пост)
Да... Запустить этот скрипт раньше другого.

 smile 

У меня на одной странице 4 скрипта!

Они работают последующей цепочке:

Проверка доступа в инет(скрипт №1), если Да то, ожидание 15сек (скрипт №2), показ скрипта №3.
                                                               ели Нет то, вывод ошибки

А у меня получается что сначала загружается скрипт №3, потом №1 и потом №2. И толку от этого некакого! Вот мне и нужно установить порядок выполнения скриптов. Но я незнаю ка??? 

Как выглядит на самом деле:

Проверка доступа в инет, Если да то начинается загрузка страницы, на экране показывается 15 сек лоад бар и потом сам скрипт!

Автор: awers 11.1.2009, 15:14
Раз уж пошли разговоры о таких фундаментальных вещах, то я бы посоветовал изучить литературу по пхп. 

Автор: jone31 11.1.2009, 15:45
А что без лит-ры нельзя сказать как???

Добавлено через 11 минут и 35 секунд
Цитата(skyboy @  11.1.2009,  13:55 Найти цитируемый пост)
"раньше" - это как? вот я обращаюсь к адресу http://mydomain.com/index.php и выполняется содержимое файла index.php. как можно заставить "раньше" index.php выполнится содержимому myfirst.php? прописать в самом начале index.php строчку "require 'myfirst.php';" или "include 'myfirst.php';". вопрос вообще неясен, что тебе нужно - тоже.


У меня все скрипты на одной странице, и расположены по порядку, но выполняются не в том порядке в каком расположены! Вот о чем речь, все три скрипта в ОДНОМ файле.

Я же писал:

"Проверка доступа в инет(скрипт №1), если Да то, ожидание 15сек (скрипт №2), показ скрипта №3.
                                                               ели Нет то, вывод ошибки

А у меня получается что сначала загружается скрипт №3, потом №1 и потом №2. И толку от этого некакого! Вот мне и нужно установить порядок выполнения скриптов. Но я незнаю ка??? "

Вопрос в том как сделать чтоб на странице скрипты выполнялись в том порядке в каком расположены в файле!!! 
А так получается что еще до загрузки лоад бара страница уже загружена!!! Ведь по нормальному  сначала должен отобразится лоад бар а потом тока страница!!!

Автор: awers 11.1.2009, 16:03
ну мы же не знаем что у тебя там за "лоэд бары" и что у тебя и где по порядку.

мы нихт телепатиш  smile 

Автор: QaaZ 11.1.2009, 17:33
Цитата

"раньше" - это как? вот я обращаюсь к адресу http://mydomain.com/index.php и выполняется содержимое файла index.php. как можно заставить "раньше" index.php выполнится содержимому myfirst.php? прописать в самом начале index.php строчку "require 'myfirst.php';" или "include 'myfirst.php';". вопрос вообще неясен, что тебе нужно - тоже.


Что-то вроде этого в самый верх index.php

Код

<?php
if (@!include(myfirst.php))
    {
        echo "myfirst.php не открылся.";
        die();
    }

?>

Автор: awers 11.1.2009, 17:35
Цитата

<?php
if (@!include(myfirst.php))
    {
        echo "myfirst.php не открылся.";
        die();
    }

?>


Это шо еще за извращенный способ? )))))
А file_exists поюзать никак?

Добавлено через 29 секунд
цобаки использовать это вообще муветон.

Автор: QaaZ 11.1.2009, 17:38
Цитата

Это шо еще за извращенный способ? )))))
А file_exists поюзать никак?

Добавлено через 29 секунд
цобаки использовать это вообще муветон.


Я же как пример написал, а не как руководство к копи-пасту. ))
А  file_exists разве не проверяет _существование_ файла? о_О

Добавлено @ 17:42
Ааа...я понял, что ты имел ввиду)) 

Вот:

Код

if (!file_exists(myfirst.php)) {
    echo "myfirst.php не существует.";
} else {
    require_once(myfirst.php);
}



P.S. А почему код не подсвечивается? о_О

Автор: jone31 11.1.2009, 17:42
Вы не знаете что таоке лоад бар(loading bar)??? Это то что например показывается при добавлении ответа, создании темы на этом форуме. (надпись Загрузка и loading.gif)

Хорошо, объясняю что за скрипты:
Скрпит №1 это скрипт который обсуждали в начале темы.
Скрипт №2 это обычный лоад бар как на этом форуме только закрывает собой весь экран, пока выполнение  скрипта №3 не завершится. 
Скрипт № 3 это обычный прогноз погоды на 14 дней. Если нет доступа в инет до там появится не очень краивая ошибка, а с помощью скрипта №1 эту ошибку можно избежать!

Как должна работать цепочка скриптов:
1) Скрипт №1 Проверяет есть ли доступ инет: если нет то ошибка, если да то выполняет скрипт с лоад баром и скрипт №3. 

Как она работает на самом деле:
1) Выполняется скрипт №3, пользователь уже увидел его на экране, и тут появляется лоад бар, закрывая собой весь экран. 

Вот и вопрос:
Мне нужно сделать так чтобы все скрипты выполнялись строго в заданном порядке! сначала 1, потом 2, и 3. И никак не наоборот! 

Автор: awers 11.1.2009, 17:46
 smile  
jone31, повеселил. все знают что такое лоэд бар, только совершенно никто из нас не знает как и что у тебя там работает. то что ты дал описание фалов никак не поможет в расследовании причин "не поочередного" выполнения кода. хотя мне кажется что 99% это твое недопонимание, а не трабла с пхп 

Автор: QaaZ 11.1.2009, 17:55
Скрипт №2 - делается с помощью JS

Вот примерный код, того что требуется, вроде как, если я правильно понял:

Код

<?php
// ПРОВЕРЯЕМ, ЕСТЬ ЛИ ДОСТУП В ИНТЕРНЕТ
if (!file_exists(myfirst.php)) {
    echo "myfirst.php не существует.";
    die(); # завершаем работу скрипта
} else {
    require_once(myfirst.php); # подключаем файл проверки инета
    
    if ($tinet == "В данный момент интернет подключен")
    {
        echo "Выводим погоду"; # выполняем третий скрипт скрипт
    }
    else 
    {
        echo "Интернета net. =(";
        die();  # если я правильно понял что требуется о_О
    }
}

?>

Автор: awers 11.1.2009, 17:57
Короче. Пока товарисч топикстартер не приведет листинги своих скриптов - я умываю руки. Гадалки сидят во флейме  smile 

Автор: jone31 11.1.2009, 18:10

Цитата(awers @  11.1.2009,  16:03 Найти цитируемый пост)
ну мы же не знаем что у тебя там за "лоэд бары"

твои слова:
Цитата(awers @  11.1.2009,  17:46 Найти цитируемый пост)
jone31, повеселил. все знают что такое лоэд бар, т


Автор: awers 11.1.2009, 18:14

Офтоп
Цитата

ну мы же не знаем что у тебя там за "лоэд бары"


разбираю по смыслу:
Мы - форумчане
не знаем - не знаем
что у тебя - значит не у нас, а у тебя
за "лоэд бары" - подразумевает бесчисленное множество вариаций на эту тему. 

в целом никто не знает какого рода у тебя реализация онного.

Автор: jone31 11.1.2009, 18:23
Вот полностью код цепи скриптов:

Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<?php
$fp = fsockopen("www.yandex.ru", 80, $errno, $errstr, 30);

if (!$fp) {
    $tinet = 'Интернет неподключен';
} else {
$tinet = '<script src="load_nwt_bar.js"></script>'; # Если инет есть то подключаем лоад бар
}
echo $tinet;
?>
<style>
.txt{width:100%;background-color:#ffdead;} /*Стиль лоад бара*/
</style>
</head>
<script>function lo2(){lo();setTimeout("lo2();","1000")}lo2();</script> <!--запуск лоад бара-->
<body>
<!--скрипт экспорта погоды-->
<iframe src="weather.php" style="border:none" scrolling="no" width=900 height="1800"></iframe> 
</body>
</html>

Автор: awers 11.1.2009, 18:29
ну теперь ошибка очевидна. как я и говорил. это непонимание. теперь вот с этим листингом в форум JS и там тебе расскажут как на лету воткнуть src в iframe

Добавлено через 52 секунды
А вообще это жесть ) Проще сам weather.php переделать.

Автор: jone31 12.1.2009, 22:00
Вот так надо было сразу сказать что вам нужен полностью код страницы!!! А не эту всю чепуху. Все тема закрыта! Пойду на JS форум слажу! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)