Територия

Discussion in 'PHP' started by Tem, 7 Oct 2006.

  1. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Значить так ст авлю у себя на локалке територию всё ок , но когда вхожу даётся такая ошибка:

    PHP Parse error: syntax error, unexpected T_THROW, expecting T_STRING in C:\\Program Files\\Apache Group\\Apache2\\htdocs\\include\\common_small.inc on line 47, referer: http://localhost/project.php

    вот содиржания файла common_small.inc

    PHP:
    <?php
      
    include_once(dirname(__FILE__)."/config.inc");
      include_once(
    dirname(__FILE__)."/constant.inc");
      include_once(
    dirname(__FILE__)."/ipcookie.inc");
      include_once(
    dirname(__FILE__)."/debug.inc");
      
    /* include_once(dirname(__FILE__)."/cache.inc"); */
      
    include_once(dirname(__FILE__)."/database_small.inc");

      
    $container = new Database(HOST_NAMEDATABASE_NAMEDATABASE_USERDATABASE_PASSWORD);
      
    $container_session = new Database(SESSION_HOST_NAMESESSION_DATABASE_NAMESESSION_DATABASE_USER

    SESSION_DATABASE_PASSWORD);
      
    $container_fight = new Database(FIGHT_HOST_NAMEFIGHT_DATABASE_NAMEFIGHT_DATABASE_USER

    FIGHT_DATABASE_PASSWORD);

      include_once(
    dirname(__FILE__)."/cgi.inc");
      include_once(
    dirname(__FILE__)."/theme.inc");
      include_once(
    dirname(__FILE__)."/module_small.inc");

      
    include_module(array('session''personage''area''file'));

      function 
    include_module($arr) {
        if (
    is_array($arr))
        foreach (
    $arr as $itemmodule_include($item);
      }


      function 
    print_r1($data) {
        print 
    "<pre>"print_r($data); print "</pre>";
      }

      function 
    make_seed() {
          list(
    $usec,$sec) = explode(" "microtime());
          return ((float)
    $sec+(float)$usec) * 100000;
      }

      function 
    print_r2($data) {
        global 
    $DOCUMENT_ROOT;

        
    ob_start();
        
    print_r($data);
        
    $s ob_get_contents();
        
    ob_end_clean();
        
    $f fopen($DOCUMENT_ROOT."/dbg.log""a+");
        
    fwrite($f$s);
        
    fclose($f);
      }


    function throw(
    $exception) {
        global 
    $DOCUMENT_ROOT;
        if (
    EXCEPTION_STREAM == 1) {
          
    ob_start();
          
    trigger_error($exceptionE_USER_WARNING);
          
    $s ob_get_contents();
          
    ob_end_clean();
          
    $f fopen($DOCUMENT_ROOT."/exception.log""a+");
          
    fwrite($fdate("H:i:s").": ".$s.'\n');
          
    fclose($f);
        } elseif (
    EXCEPTION_STREAM == 0) {
          if (
    EXCEPTION_LEVEL == 0) {
          } elseif (
    EXCEPTION_LEVEL == 1) {
    //        $theme = new BaseTheme();
    //        print $theme->error($exception);
    //        trigger_error($exception, E_USER_WARNING);
          
    } elseif (EXCEPTION_LEVEL == 2) {
    //        trigger_error($exception, E_USER_ERROR);
          
    }
        }
        if (
    EXCEPTION_STOP) die;
      }

      function 
    moneyFormat($amount 0)
      {
        return 
    sprintf("%.2f"$amount);
      }

      function 
    moneyValue($amount 0)
      {
        return 
    abs(floatval($amount));
      }

      function 
    _pages($total$offset$limit) {
        
    $result = array();

        if (
    $limit $total) {
          
    $result[0] = array();
          
    $result[0]["OFFSET"] = 0;

          
    $index 0;
          for (
    $i 0$i $total$i += $limit) {
            
    $result[$index] = array();
            
    $result[$index]["OFFSET"] = $i;
            if (
    $i == $offset) {
              
    $result[$index]["SELECTED"] = 1;
              
    $result["NEXT"] = array();
              
    $result["NEXT"]["OFFSET"] = (($i+$limit) > $total)? $i $i+$limit;
              
    $result["PREV"] = array();
              
    $result["PREV"]["OFFSET"] = ($i == 0)? $i-$limit;
            } else {
              
    $result[$index]["SELECTED"] = 0;
            }
            
    $index++;
          }
        }

        return 
    $result;
      }

      function 
    getContainerChat($area_id) {
        global 
    $container$container_chat;

        if (!
    $area_id) return $container;

        
    $arr getContainerParam($area_id);
        if (
    $arr['HOST'] == '') {
          
    $container_chat = &$container;
        } else
        if ((
    $container->host_name != '') && ($container->host_name == $arr['HOST']) && ($container->database_name == $arr['DATABASE']) && 

    (
    $container->database_user == $arr['USER'])) {
          
    $container_chat = &$container;
    //      $container_chat = new Database($arr['HOST'], $arr['DATABASE'], $arr['USER'], $arr['PASSWORD']);
        
    } else {
          
    $container_chat = new Database($arr['HOST'], $arr['DATABASE'], $arr['USER'], $arr['PASSWORD']);
        }


        return 
    $container_chat;
      }

      function 
    getContainerParam($area_id) {
        global 
    $container$container_chat$servers;

    /*
      для скорости берем напрямую из global $servers    
      
        $list = module_invoke('server', 'list_chat', false, 0, $area_id);
        if (!$list || (count($list) == 0)) return false; # если не определены серверы для чата, то считаем, что чат не разделяется на сервера!

        $area = area_get($area_id);
        $container_array = array('HOST' => $area['CHAT_HOST'], 'DATABASE' => $area['CHAT_DATABASE'], 'USER' => $area['CHAT_USER'], 

    'PASSWORD' => $area['CHAT_PASSWORD']);
        if (!$container_array['HOST']) {
          $container_array['HOST'] = $list[0]['HOST_NAME'];
          $container_array['DATABASE'] = $list[0]['DATABASE_NAME'];
          $container_array['USER'] = $list[0]['USER'];
          $container_array['PASSWORD'] = $list[0]['PASSWORD'];
        }
    */
        
    $container_array['HOST'] = $servers[0]['HOST_NAME'];
        
    $container_array['DATABASE'] = $servers[0]['DATABASE_NAME'];
        
    $container_array['USER'] = $servers[0]['USER'];
        
    $container_array['PASSWORD'] = $servers[0]['PASSWORD'];
        
        return 
    $container_array;
      }


      
    /**
      * Посылка специального сообщения. Функцию можно вызывать откуда угодно, даже оттуда, где нет залогиненной
      * сессии (например из кронов). Также фукнцию можно вызывать для посылки сообщения игроку, находящемуся
      * где угодно, не обязательно в той же точке местоположения, что и текущий залогиненный игрок
      * @param integer $recipient_id - код персонажа, которому посылать сообщение
      * @param string $text - текст сообщение
      */
      
    function send_chat_special($recipient_id,
                                 
    $text,
                                 
    $recipient_nick '',
                                 
    $area_id 0,
                                 
    $service 100) {
        global 
    $container_chat;

        
    $tmp_container_chat $container_chat;

        if (!
    $recipient_nick || !$area_id) {
          
    $recipient module_invoke('personage''get'$recipient_id);
          if (!
    $recipient_nick$recipient_nick $recipient['LOGIN'];

          if (!
    $area_id) {
            
    $container_chat getContainerChat($recipient['AREA_ID']); # так как chat_save_system() использует глобальную $container_chat
            
    $area_id $recipient['AREA_ID'];
          }
        }

        
    $res module_invoke('chat''save_special', array(
          
    "AREA_ID" => $area_id,
          
    "PERSONAGE_ID" => 0,
          
    "PERSONAGE_LOGIN" => '',
          
    "RECIPIENT_ID" => $recipient_id,
          
    "RECIPIENT_LOGIN" => $recipient_nick,
          
    "SERVICE" => $service,
          
    "MESSAGE" => "private [".$recipient_nick."]: ".$text,
        ));

        
    $container_chat $tmp_container_chat;

        return 
    $res;
      }

      
    /**
      * Посылка системного сообщения сообщения. Аналог send_chat_special()
      * @param string $text - текст сообщение
      * @param integer $recipient_id - код персонажа, которому посылать сообщение
      */
      
    function send_chat_system($recipient_id,
                                
    $text,
                                
    $service,
                                
    $recipient_nick '',
                                
    $area_id 0) {
        global 
    $container_chat;

        
    $tmp_container_chat $container_chat;

        if (!
    $recipient_nick || !$area_id) {
          
    $recipient module_invoke('personage''get'$recipient_id);
          if (!
    $recipient_nick$recipient_nick $recipient['LOGIN'];

          if (!
    $area_id) {
            
    $container_chat getContainerChat($recipient['AREA_ID']); # так как chat_save_system() использует глобальную $container_chat
            
    $area_id $recipient['AREA_ID'];
          }
        }

        
    $res module_invoke('chat''save_system', array(
          
    "AREA_ID" => $area_id,
          
    "PERSONAGE_ID" => 0,
          
    "PERSONAGE_LOGIN" => '',
          
    "RECIPIENT_ID" => $recipient_id,
          
    "RECIPIENT_LOGIN" => $recipient_nick,
          
    "SERVICE" => $service,
          
    "MESSAGE" => $text,
        ));

        
    $container_chat $tmp_container_chat;

        return 
    $res;
      }

      function 
    areInTheSameDistrict($area1_id$area2_id) {

        
    $parents1 module_invoke('area''list_parent'false$area1_id" AND A.TYPE_ID=1");
        
    #print_r2($parents1);
        
    $parents2 module_invoke('area''list_parent'false$area2_id" AND A.TYPE_ID=1");
        
    #print_r2($parents2);

        
    return ($parents1[0]['ID'] && $parents2[0]['ID'] && ($parents1[0]['ID'] == $parents2[0]['ID'])) ? true false;
      }

      
    /**
      * Посылка простого сообщения. Функцию "настигает" получателя приватного сообщения в пределах района
      * @param integer $area_id - в какую комнату нужно отправлять сообщение
      * @param integer $sender_id - код персонажа - отправителя сообщения
      * @param string $sender_nick - ник персонажа - отправителя сообщения
      * @param string $sender_color - цвет сообщения персонажа - отправителя сообщения
      * @param integer $recipient_id - код персонажа, которому посылать сообщение
      * @param string $recipient_nick - ник персонажа, которому посылать сообщение
      * @param integer $service - 100 - private, 101 - to
      * @param string $full_msg_text - само сообщение полностью
      * @param string $ip - ip-адрес отправителя
      */
      
    function send_chat_message($area_id,
                                 
    $sender_id,
                                 
    $sender_nick,
                                 
    $sender_color,
                                 
    $recipient_id,
                                 
    $recipient_nick,
                                 
    $service,
                                 
    $full_msg_text,
                                 
    $ip '') {
        global 
    $container_chat$session_personage;

        
    # код отправителя должен быть задан всегда!
        
    if (!$sender_id$sender_id $session_personage['ID'];

        
    # код комнаты назначения и сервис должны быть установлены всегда!
        # if (!isset($area_id) || !isset($service))
        #  return false;
        # текст сообщения должен быть задан всегда! (если код отправителя 0 - значит, посылает администратор)
        
    if (!trim(strval($full_msg_text)))
          return 
    false;

        
    # если не задан ник отправителя, вычисляем его здесь!
        
    if (!$sender_nick && $sender_id) {
          
    $sender module_invoke('personage''get'$sender_id);
          
    $sender_nick $sender['LOGIN'];
        }
        
    # если не задан ник получателя, пытаемся вычислить его здесь; может оказаться пустым, если не задан код получателя - это 

    нормальная ситуация
        
    if (!$recipient_nick && !$recipient_id) {
          
    $recipient module_invoke('personage''get'$recipient_id);
          
    $recipient_nick $recipient['LOGIN'];
        }

        
    $tmp_container_chat $container_chat;
        
    $ip $ip $ip getIP();

        
    $full_msg_text '<font color="'.$sender_color.'">'.$full_msg_text.'</font>';

        
    # специальная обработка для приватных сообщений - они должны "настигать" получателя в пределах района!
        
    if ($service == 100) {
          if (!
    $sender)
            
    $sender module_invoke('personage''get'$sender_id);

          if (
    $sender['AREA_ID'] != $area_id) {
            if (!
    areInTheSameDistrict($sender['AREA_ID'], $area_id)) {

              return 
    module_invoke('chat''save_message', array( # дубль отправителю привата идет всегда!
                
    "AREA_ID" => intval($sender['AREA_ID']),
                
    "PERSONAGE_ID" => intval($sender_id),
                
    "PERSONAGE_LOGIN" => strval($sender_nick),
                
    # "PERSONAGE_COLOR" => strval($sender_color),
                
    "RECIPIENT_ID" => intval($recipient_id),
                
    "RECIPIENT_LOGIN" => strval($recipient_nick),
                
    "SERVICE" => intval($service),
                
    "MESSAGE" => strval($full_msg_text),
                
    "IP" => strval($ip),
              ));
            }

            
    $container_chat getContainerChat($area_id);
          }
        }

        
    $res module_invoke('chat''save_message', array(
          
    "AREA_ID" => intval($area_id),
          
    "PERSONAGE_ID" => intval($sender_id),
          
    "PERSONAGE_LOGIN" => strval($sender_nick),
          
    # "PERSONAGE_COLOR" => strval($sender_color),
          
    "RECIPIENT_ID" => intval($recipient_id),
          
    "RECIPIENT_LOGIN" => strval($recipient_nick),
          
    "SERVICE" => intval($service),
          
    "MESSAGE" => strval($full_msg_text),
          
    "IP" => strval($ip),
        ));

        
    $container_chat $tmp_container_chat;

        if (
    $service == 100 && $sender['AREA_ID'] != $area_id) { # дубль отправителю привата
          
    module_invoke('chat''save_message', array(
            
    "AREA_ID" => intval($sender['AREA_ID']),
            
    "PERSONAGE_ID" => intval($sender_id),
            
    "PERSONAGE_LOGIN" => strval($sender_nick),
            
    # "PERSONAGE_COLOR" => strval($sender_color),
            
    "RECIPIENT_ID" => 0,
            
    "RECIPIENT_LOGIN" => '',
            
    "SERVICE" => intval($service),
            
    "MESSAGE" => strval($full_msg_text),
            
    "IP" => strval($ip),
          ));
        }

        return 
    $res;
      }

      function 
    check_html_msg($msg) {
        return 
    $msg;
      }

      
    /**
      * Печатает 5 input полей - день, месяц, год, час, минуты
      * @param string $name - база для имен input полей
      * @param string $value - дата, отдельные части которой подставляются в качестве значений input-полей
      * @return string - результат
      */
      
    function _form_date($name$value) {
        if (
    $value) { # value = date("Y-m-d h:m");
          
    $day1 substr($value8);
          
    $month1 substr($value52);
          
    $year1 substr($value04);
          
    $hour1 substr($value112);
          
    $min1 substr($value142);
        }
        
    $result .= "<select name=\"".$name."_day\">\n";
        for (
    $i 1$i 32$i++) {
          
    $result .= "<option value=\"$i\" ".(($day1 == $i)? "SELECTED" "").">$i\n";
        }
        
    $result .= "</select>\n";
        
    $result .= ".&nbsp;<select name=\"".$name."_month\">\n";
        
    $result .= "<option value=\"01\" ".((intval($month1) == 1)? "SELECTED" "").">Январь\n";
        
    $result .= "<option value=\"02\" ".((intval($month1) == 2)? "SELECTED" "").">Февраль\n";
        
    $result .= "<option value=\"03\" ".((intval($month1) == 3)? "SELECTED" "").">Март\n";
        
    $result .= "<option value=\"04\" ".((intval($month1) == 4)? "SELECTED" "").">Апрель\n";
        
    $result .= "<option value=\"05\" ".((intval($month1) == 5)? "SELECTED" "").">Май\n";
        
    $result .= "<option value=\"06\" ".((intval($month1) == 6)? "SELECTED" "").">Июнь\n";
        
    $result .= "<option value=\"07\" ".((intval($month1) == 7)? "SELECTED" "").">Июль\n";
        
    $result .= "<option value=\"08\" ".((intval($month1) == 8)? "SELECTED" "").">Авгутс\n";
        
    $result .= "<option value=\"09\" ".((intval($month1) == 9)? "SELECTED" "").">Сентябрь\n";
        
    $result .= "<option value=\"10\" ".((intval($month1) == 10)? "SELECTED" "").">Октябрь\n";
        
    $result .= "<option value=\"11\" ".((intval($month1) == 11)? "SELECTED" "").">Ноябрь\n";
        
    $result .= "<option value=\"12\" ".((intval($month1) == 12)? "SELECTED" "").">Декабрь\n";
        
    $result .= "</select>\n";
        
    $result .= ".&nbsp;<select name=\"".$name."_year\">\n";
        
    $y date("Y");
        for (
    $i $y$i < ($y+4); $i++) {
          
    $result .= "<option value=\"$i\" ".(($year1 == $i)? "SELECTED" "").">$i\n";
        }
        
    $result .= "</select>\n";
        
    $result .= "&nbsp;<select name=\"".$name."_hour\">\n";
        for (
    $i 0$i 24$i++) {
          
    $result .= "<option value=\"$i\" ".(($hour1 == $i)? "SELECTED" "").">$i\n";
        }
        
    $result .= "</select>\n";
        
    $result .= ":&nbsp;<select name=\"".$name."_min\">\n";
        for (
    $i 0$i 60$i++) {
          
    $result .= "<option value=\"$i\" ".(($min1 == $i)? "SELECTED" "").">$i\n";
        }
        
    $result .= "</select>\n";

        return 
    $result;
      }

      function 
    initGlobalVariables($sid) { # используется также в ботах
        
    global $session$session_user$session_personage$session_area$container_chat$session_position;

        if (
    $sid) {
          
    $session module_invoke("session""get"$sid);
          
    $session_user module_invoke("session""get_user"$session["UID"]);
          
    $session_personage module_invoke("personage""get"$session["UID"]);
          
    $session_area module_invoke("area""get"$session_user["AREA_ID"]);
          
    $session_position module_invoke("area""get_position"$session_user["AREA_ID"]);

          
    $container_chat getContainerChat($session['AREA_ID']);
        }
      }

      function 
    varSet($varName false)
      {
        global 
    $_GET$_POST;
        if (!
    $varName)
        {
          return 
    false;
        };
        return isset(
    $_GET[$varName]) || isset($_POST[$varName]) ? true false;
      }

      function 
    getVar($varName false)
      {
        global 
    $_GET$_POST;
        if (!
    $varName)
        {
          return 
    false;
        };
        if (isset(
    $_GET[$varName]))
        {
          return 
    $_GET[$varName];
        };
        if(isset(
    $_POST[$varName]))
        {
          return 
    $_POST[$varName];
        };
        return 
    false;
      }

      function 
    nick2html($nick) {
        return 
    str_replace('"''&quot;'$nick);
      }
      
      global 
    $cronTag$activeCookie;
      if (!isset(
    $cronTag) || ($cronTag == false))
      {
        
    $ipaddr ip2long(getIP());
        if (!isset(
    $_COOKIE["active"]) ||
            (!
    checkActiveCookie($_COOKIE["active"], $ipaddr)))
        {
        
    $cookie generateActiveCookie($ipaddr);                                                                                 
        
    setcookie("active"$cookie);
        
    $activeCookie $cookie;
        }
        else
        {
        
    $activeCookie $_COOKIE["active"];
        };
      };
      
    $cgi = new CGI();
      
    $theme = new BaseTheme();
      
    $cache false;
    /*  $cache = new Cache(); */
      
    $cache false;
      
    initGlobalVariables($sid);
      if (
    $session_user['LOGIN'] == 'root') {
        
    $container->is_debug true;
        
    $container_fight->is_debug true;
        
    $container_session->is_debug true;
        
    $container_chat->is_debug true;
      }
    ?>
    Вот не разберусь в чём тама проблема, кто поможит в проблеме подкину 3 WMZ, жду ответов.
     
  2. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    используешь Php5?
     
  3. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    да пхп 5 версия.
     
  4. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    попробуй пхп четверку
     
  5. Tem

    Tem -

    Joined:
    5 Oct 2005
    Messages:
    557
    Likes Received:
    157
    Reputations:
    179
    Так проверить я проверю проблем нет, если всё заработает в пм тебе постучюсь, ешё есть придложения ?
     
  6. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418
    я так понял, что у тебя переменная уже занята либо невозможно ее инициализировать) попробуй изменить ее на чтолибо другое
     
    #6 darky, 8 Oct 2006
    Last edited: 8 Oct 2006
  7. SMiX

    SMiX Elder - Старейшина

    Joined:
    25 Jul 2005
    Messages:
    227
    Likes Received:
    55
    Reputations:
    29
    Ошибка в этой строке:
    PHP:
    function throw($exception) { 
    В пятом php нельзя использовать throw как название функции.
    Читай здесь:
    http://ru.php.net/throw
     
    1 person likes this.
  8. GOOFY

    GOOFY Banned

    Joined:
    31 Oct 2006
    Messages:
    77
    Likes Received:
    33
    Reputations:
    23
    раз тема зашла о территории, то вопрос такой - как можно сделать бэкап баз на денвер? а то 12 метров он не тянят, подкиньте идею...