как реализовать проверку версии скрипта?

Тема в разделе "PHP", создана пользователем avgaz, 10 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    В общем суть в следующем есть скрипт который распространяется под версиями нужно реализовать проверку версии с актуальной(номер версии на сервере где скачивается скрипт) как лучше сделать??
    Для примера у пользователя установлена версия 0.1 а для скачивания уже доступна 0.3 как уведомить пользователя в админке об этом?
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    ты наверное удивишься )
    PHP:
    <?php
    echo ' Обновите версию скрипта, актуальная версия доступна по адресу http:/// ';
    ?>
    в чем вопрос то ?

    Заводишь в теле скрипта константу с номером версии и константу с скриптом- выдающим актуальную версию.
    Периодически скачиваешь файл с номером актуальной версии - сравнваешь, при неообходимости выводишь сообщение.
     
  3. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Вопрос в том как сделать как в IPB в админке что установлена и доступна ужу актуальная понятно как получить текущею установленную, как получить актуальную с сервера и сравнить их??
     
  4. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    я админку ipb не видел =)

    1) как получить текущую?

    заведи в теле скрипта константу
    define(CURRENT_VER,123);
    2) как получить актуальную ?
    скрипт сервера отдает например
    PHP:
    <?php
    echo serialize(array('ver'=>'125'));
    ?>
    ты у себя соответственно
    PHP:
    $txt=file_get_contents('http://урл скрипта');
    $arr=unserialize($txt);
    $actual_ver=$arr['ver'];
    3) как сравнить ?

    PHP:
    if ($actual_ver>CURRENT_VER) echo '...';

    я так и не понял в чем траблы ?

    PS расстановка знаком препинания - как свежее дыхание = облегчает понимание
     
  5. a1ien.n3t

    a1ien.n3t Постоялец

    Регистр.:
    12 июл 2008
    Сообщения:
    52
    Симпатии:
    7
    PHP:
    $data = @file_get_contents("http://site/updates.php?version_id=".$_REQUEST['versionid']);

    if (!
    strlen($data)) echo "Вы используете последнюю версию"; else echo $data;
     
  6. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Сделал через @fsockopen читается файл ver.txt

    Теперь встал вопрос как реализовать учет с каких сайтов запрашивается этот файл??
     
  7. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    Варианта два
    1) при запросе номера версии передавать параметр в котором содержится урл сайта
    2) а вдминке создать например картинку с адресом скрипта учета на твоем сервере - тогда при каждом запросе ты по рефереру сможешь отслежитьвать по по какому урлу находится админка и сайт
     
  8. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Если не сложно можно примеры обоих вариантов у меня реализовано так запрос версии
    PHP:
    if ($fsock = @fsockopen($host$port$errno$errstr$timeout))
        {
            @
    fputs($fsock"GET $directory/$filename HTTP/1.1\r\n");
            @
    fputs($fsock"HOST: $host\r\n");
            @
    fputs($fsock"Connection: close\r\n\r\n");

            
    $file_info '';
            
    $get_info false;

            while (!@
    feof($fsock))
            {
                if (
    $get_info)
                {
                    
    $file_info .= @fread($fsock1024);
                }
                else
                {
                    
    $line = @fgets($fsock1024);
                    if (
    $line == "\r\n")
                    {
                        
    $get_info true;
                    }
                    else if (
    stripos($line'404 not found') !== false)
                    {
                        
    $errstr "Error $filename";
                        return 
    false;
                    }
                }
            }
            @
    fclose($fsock);
        }
     
  9. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    1)
    вместо ver.txt читай вывод скрипт ver.php который будет выводить тебе содержимое ver.txt

    а обращение при чтении актуальной версии:
    Код:
    $url='http://...../ver.php?host='.base64_encode('SCRIPT_NAME');
    
    и уже по этому урлу читай актуальную версию
    А твой скрипт ver.php - анализирует метр и записывает в лог

    2) примерно тоже самое
    создай картинку в коде
    Код:
     
    <img src='http:// твой сервер / скрипт учета .php'>
    
    можешь зануть в низ страницы и задать размер 1x1

    а в скрипте учета проверяй $_SERVER['HTTP_REFERER'] - тамбудет адрес админки
     
    avgaz нравится это.
  10. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Что то я в обще не догнал как это реализовать можно пример содержания этого ver.php
     
Статус темы:
Закрыта.