Файл: top/inc/functions.inc.php
Строк: 180
<?php
function connect_to_db()
{
    // настройка доступа к базе
    $dbh = mysql_connect ("localhost", "softmob_top", "7700") or die ('Sorry!!!');
}
### Запрос
function query ()
{
    return (!empty($_SERVER['QUERY_STRING'])? '?'.str_replace("&", "&", $_SERVER['QUERY_STRING']) : '?');
}
// функция посыла нужного заголовка
function send_wap_header($wap_version = 1)
{
    if ($wap_version == 1)
        header("Content-type: text/vnd.wap.wml; charset=UTF-8");
    else
        header("Content-type: application/vnd.wap.xhtml+xml; charset=UTF-8");
}
// функция обработки буфера страницы
function make_page ($page)
{
    global $wap_tags, $PAGE_TITLE;
    // замена собственных тегов на нужные версии (wml или xhtml)
    foreach ($wap_tags[$_SESSION['wap_version']] as $meta_tag => $real_tag)
        $page = str_replace ($meta_tag, $real_tag, $page);
    // подстановка титла страницы
    if (isset($PAGE_TITLE))
        $page = str_replace ('[page_title]', $PAGE_TITLE, $page);
    else
        $page = str_replace ('[page_title]', DEFAUL_PAGE_TITLE, $page);
    // пополнительня замена для вап1
    if ($_SESSION['wap_version'] == 1)
    {
        $page = str_replace("&", "&", $page);
        $page = str_replace("&amp;", "&", $page);
        $page = str_replace("&gt;", ">", $page);
        $page = str_replace("&lt;", "<", $page);
        $page = str_replace("&quot;", """, $page);
        $page = str_replace("&copy;", "©", $page);
        $page = str_replace("&#", "&#", $page);
    }
    return $page;
}
// определение параметров вапа
function define_wap ()
{
    /*
    // если сессия открыта, берем данные из нее
    if (!empty($_SESSION['wap_version']) && 
        !empty($_SESSION['vendor']) &&
        !empty($_SESSION['model']) )
    {
        $_SESSION['wap_version'] = $_SESSION['wap_version'];
        return true;
    }else
        {
            $ua = $_SERVER['HTTP_USER_AGENT'];
            $model_phone = explode ("/",$ua);
            $model_phone = $model_phone[0];
                
            $result = mysql_query("SELECT `vendor`, `model`, `wap_ver`, `user_agent` FROM `user_agents` WHERE 1;");
            $count_ua = mysql_num_rows ($result);
            for ($i=0; $i<$count_ua; $i++)
            {
                $row = mysql_fetch_array($result);
                $model_data = explode ("/",$row['user_agent']);
                if ($model_phone == $model_data[0])
                {
                    $_SESSION['wap_version'] = $row['wap_ver'];
                    return true;
                }
            }
        }
        // если телефон не определен
        if (empty($_GET['v']))
        {
            // выбор производителя
            send_wap_header($_SESSION['wap_version']);
            echo '[meta]';
            echo '[body]';
            echo "Ваш телефон не определен! <br/> n";
            echo "Выберете марку Вашего телефона: <br/> n";
            $result = mysql_query("SELECT DISTINCT `vendor` FROM `user_agents` WHERE 1;");
            $count_vendor = mysql_num_rows ($result);
            for ($i=0; $i<$count_vendor; $i++)
            {
                $row = mysql_fetch_array($result);
                echo "<a href="index.php?v=".$row['vendor']."">".$row['vendor']."</a> <br/>n";
            }
            echo '[/body]';
            return false;
        } else
            {
                    if (empty($_GET['m']))
                    {
                        // выбор модели
                        send_wap_header($_SESSION['wap_version']);
                        echo '[meta]';
                        echo '[body]';
                        echo "Выбирете модель: <br/> n";
                        $vendor = $_GET['v'];
                        $result = mysql_query("SELECT `model` FROM `user_agents` WHERE `vendor`='$vendor' ORDER BY `model` ASC;");
                        $count_models = mysql_num_rows ($result);
                        for ($i=0; $i<$count_models; $i++)
                        {
                            $row = mysql_fetch_array($result);
                            echo "<a href="index.php?v=$vendor&m=".$row['model']."">".$row['model']."</a> <br/>n";
                        }
                        echo '[/body]';
                        return false;
                     } else
                        {
                            $vendor = $_GET['v'];
                            $model = $_GET['m'];
                            $result = mysql_query("SELECT `wap_ver` FROM `user_agents` WHERE `vendor`='$vendor' AND `model`='$model' LIMIT 1;");
                            $row = mysql_fetch_array($result);
                            $_SESSION['wap_version'] = $row['wap_ver'];
                            $_SESSION['wap_version'] = $_SESSION['wap_version'];
                            $_SESSION['vendor'] = $vendor;
                            $_SESSION['model'] = $model;
                            return true;
                        }
            }
    */
    ### Определение версии вапа
    $browser    = explode('/', $_SERVER['HTTP_USER_AGENT']);
    $browser    = $browser[0];
    if (!empty($_GET['wap']))
    {
        $_SESSION['wap_version'] = ($_GET['wap'] == 'xhtml')? 2 : 1;
        return true;
    }
    elseif (empty($_SESSION['wap_version']) || ($_SESSION['wap_version'] != 2 && $_SESSION['wap_version'] != 1))
    {
        $sql_result = mysql_query ("
            SELECT `wap` FROM `user_agents`
            WHERE `ua` = '$browser'
            LIMIT 1;
        ");
        if (mysql_num_rows($sql_result))
        {
            $result                     = mysql_fetch_assoc ($sql_result);
            $_SESSION['wap_version']     = ($result['wap'] == 2) ? 2 : 1;
            return true;
        }
        else
        {
            $_SESSION['wap_version']    = 1;
            send_wap_header(1);
            echo '[meta]';
            echo '[body]';
            echo 'Выберите версию отображения страниц <a href="'.query().'&wap=wml">wml</a>/<a href="'.query().'&wap=xhtml">xHTML</a>';
            echo '[/body]';
            return false;
        }
    }
    return true;
}
// функция отпереления поддержки Реалтонов по марке и можели телефона 
function realton_supported($vendor, $model)
{
    $support_phone = array(
    'Alcatel'         => array ('556', '557', '715', '735i', '735', '756'),
    'LG'             => array ('B2000', 'M4410' ),
    'Motorola'         => array ('C380', 'C390', 'C650', 'E398', 'Mpx220', 'V180', 'V3', 'V300', 'V400', 'V500', 'V525', 'V535', 'V547', 'V600', 'V620', 'V635' ),
    'Nokia'         => array ('3220', '3230', '3300', '3650', '3660', '5140i', '6021', '6060', '6170', '6220', '6230', '6230i', '6260', '6600', '6670', '6680', '6681', '6822', '6822a', '7260', '7270', '7610', '8800', 'N70' ),
    'Pantech'         => array ('PG3200' ),
    'Sagem'         => array ('MyC5-2', 'MyV-55' ),
    'Samsung'         => array ('D500', 'D500e', 'E350', 'E350e', 'E530', 'E620', 'E720', 'E730', 'E760', 'X480', 'Z130' ),
    'Siemens'         => array ('С65', 'С75', 'СF75', 'CL75', 'CX65', 'CX70', 'CX75', 'M65', 'M75', 'S65', 'Sk65', 'SL65', 'SX1' ),
    'Sony Ericsson' => array ('J300i', 'K300i', 'K500i', 'K600i', 'K700i', 'K750i', 'P800', 'P900', 'S700i', 'T290i', 'T610', 'T630', 'Z800i')
    );
    foreach ($support_phone as $phone_vendor => $models_array)
    {
        if (strtoupper($phone_vendor) == strtoupper($vendor))
            foreach ($models_array as $phone_model)
                if (strtoupper($phone_model) == strtoupper($model))
                    return true;
    }
    return false;
}
// функция отпереления поддержки ВИДЕО по марке и можели телефона 
function video_supported($vendor, $model)
{
    $support_phone = array(
    'Alcatel'         => array ('556', '557', '565', '756', '757', 'C651'),
    'Motorola'         => array ('A1000', 'A780', 'A830', 'A835', 'C975', 'E1000', 'E398', 'E680', 'V3', 'V600', 'V620', 'V635' ),
    'Nokia'         => array ('3220', '3230', '3650', '3660', '5140', '6101', '6170', '6230', '6230i', '6255', '6260', '6600', '6620', '6630', '6670', '6680', '6681', '6820', '7200', '7600', '7610', '7700', '9300', '9500', 'N-Gage', 'N-Gage QD', 'N70', 'N90', 'N91', 'N92' ),
    'Pantech'         => array ('PG3500', 'PG3600', 'PG8000' ),
    'Sharp'         => array ('GX-25', 'V-902' ),
    'Samsung'         => array ('SGH-D500', 'SGH-E720', 'SGH-i700' ),
    'SIEMENS'         => array ('CX65', 'CXT65', 'CXT70', 'CX75', 'S75', 'CXV65', 'M65', 'MT65', 'S65', 'S65V', 'SK65', 'SL65', 'SX1' ),
    'Sony Ericsson' => array ('F500i', 'K300', 'K300i', 'K500', 'K500i', 'K600', 'K600i', 'K600c', 'K700', 'K700i', 'K750i', 'K750', 'P800', 'P900', 'P910', 'P910i', 'S700', 'S700i', 'V800', 'W800i' )
    );
    foreach ($support_phone as $phone_vendor => $models_array)
    {
        if (strtoupper($phone_vendor) == strtoupper($vendor))
            foreach ($models_array as $phone_model)
                if (strtoupper($phone_model) == strtoupper($model))
                    return true;
    }
    return false;
}
// функция определения папки с поддерживаемым контентом для бесплат игр
function free_game_group($tel_data)
{
    global $vendor, $model;
                                        
    $rows = explode("n", $tel_data);
    foreach ($rows as $row_data)
    {
        $tel_group_data = explode("::", $row_data);
        if ( strtoupper($tel_group_data[1]) == strtoupper($vendor) )
        {
            $group_models = explode(" ", $tel_group_data[2]);
            foreach ($group_models as $group_model)
            {
                if ( strtoupper($group_model) == strtoupper($model) )
                    return $tel_group_data[0];
            }
        }
    }
    return false;
}
### функция перекодировки
function utf8_win ($s)
{
    $out="";
    $c1="";
    $byte2=false;
    for ($c=0;$c<strlen($s);$c++){
    $i=ord($s[$c]);
    if ($i<=127) $out.=$s[$c];
    if ($byte2){
    $new_c2=($c1&3)*64+($i&63);
    $new_c1=($c1>>2)&5;
    $new_i=$new_c1*256+$new_c2;
    if ($new_i==1025){
    $out_i=168;
    }else{
    if ($new_i==1105){
    $out_i=184;
    }else {
    $out_i=$new_i-848;
    }
    }
    $out.=chr($out_i);
    $byte2=false;
    }
    if (($i>>5)==6) {
    $c1=$i;
    $byte2=true;
    }
    }
    return $out;
}
### функция проверки мыла
function verify_addr ($address) {
   $return = false;
   if (preg_match ('/^[w.-]+@([w.-]+).[a-z]{2,6}$/i', $address, $domain)) {
     $domain = explode ('.', $domain[0]);
     // Split the domain into sections wherein the last element is either 'co', 'org', or the likes, or the primary domain name
     foreach ($domain as $part) { // Iterate through the parts
         if (substr ($part, 0, 1) == '_' || substr ($part, strlen ($part) - 1, 1) == '_')
           $return = false; // The first or last character is _
         else
           $return = true; // The parts are fine. The address seems syntactically valid
     }
   }
   return $return;
}
?>