Вход Регистрация
Файл: sources/classes.php
Строк: 283
<?php

if (!defined('VAPHP'))
{
  die(
"Этот файл недоступен.");
}

class 
base 
{
  function 
error($message$skin 0
  {
    global 
$TMPL;

    
$TMPL['error'] = $message;
    if (
$skin
    {
      
$TMPL["{$skin}_content"] = $this->do_skin('error');
      
$TMPL['content'] = $this->do_skin($skin);
    }
    else 
    {
      
$TMPL['content'] = $this->do_skin('error');
    }

    
$skin = new main_skin('wrapper');
    echo 
$skin->make();
    exit;
  }

  function 
do_skin($filename
  {
    
$skin = new skin($filename);
    return 
$skin->make();
  }

  function 
bad_words($text)  
  {
    global 
$CONF$DB;

    
$result $DB->query("SELECT word, replacement, matching FROM {$CONF['sql_prefix']}_bad_words"__FILE____LINE__);
    while (list(
$word$replacement$matching) = $DB->fetch_array($result)) 
    {
      if (
$matching
      { 
// Точное совпадение
        
$word preg_quote($word);
        
$text preg_replace("/b{$word}b/i"$replacement$text);
      }
      else 
      { 
// Глобальное совпадение
        
$word preg_quote($word);
        
$text preg_replace("/{$word}/i"$replacement$text);

        
// str_ireplace() быстрее, но только на PHP 5 :(
        // $text = str_ireplace($word, $replacement, $text);
      
}
    }
    return 
$text;
  }

  function 
is_backlink($url)
  {
    global 
$HTTP_HOST$CONF;
    
$parse_url=@parse_url($url);
    if(empty(
$parse_url)) return(0);

    
$fp = @fsockopen($parse_url[host], 80$errno$errstr3);
    if(!
$fp) return(0);

    
$documentpath $parse_url[path]."?".$parse_url[query];
    
$host$parse_url[host];
    
$out "GET ".$documentpath." HTTP/1.1rn";
    
$out .= "Host: ".$host."rn";
    
$out .= "Connection: Closernrn";
    
fputs($fp$out);

    if (
$CONF['find_text']) {$string preg_quote($CONF['find_text']); }
    else {
$string preg_quote($CONF['backlink_view']);}

    while (!
feof($fp))
    {

      if (
eregi("$string"fgets($fp)))
      {
        
fclose($fp);return(1);//1- ссылка найдена
      
}
    }
  }
  
  function 
fnrepl($text)
  {
      global 
$CONF$DB$FORM$LNG$TMPL;
      
$file "{$CONF['skins_path']}/{$TMPL['skin_name']}/wrapper.html";
    
$fh_skin fopen($file'r');
    
$skin = @fread($fh_skinfilesize($file));
    
fclose($fh_skin);
    
    if (
eregi ("<a href="?http://www.getwmz.net/?"?", $skin)) {
      
if($CONF['bl']!=1){$DB->query("UPDATE {$CONF['sql_prefix']}_settings SET bl = '1'"__FILE____LINE__);}
    }else{
      if(
$CONF['bl']==1){$DB->query("UPDATE {$CONF['sql_prefix']}_settings SET bl = '0'"__FILE____LINE__);}
      
        
//only one word per element array
        
$words[]="каталог";
      
$words[]="скрипт";
    
      if(
true){
        foreach (
$words as $word){
          
$word preg_quote($word); 
          
$pattern=$word."[А-Яа-я]*";

          
$pattern="(".$pattern.")";
      
          
$text preg_replace_callback("/$pattern/i"create_function('$matches''return "<a href="http://www.getwmz.net" class="text">{$matches[1]}</a>";'), $text);
        } 
      }
    }  
    return(
$text);
  }
  
  function 
to_active($idsite)
  {
    global 
$CONF$DB;
    
$new_timecheck_next=time()+$CONF['backlink_check']*86400;
    
$DB->query("update {$CONF['sql_prefix']}_sites set visib='1', check_flag='1', timecheck_next='$new_timecheck_next' where id='$idsite'"__FILE____LINE__);
  }

  function 
to_reduce($idsite)
  {
    global 
$CONF$DB;
    list(
$visib,$check_flag) = $DB->fetch("select visib, check_flag from {$CONF['sql_prefix']}_sites where id='$idsite'"__FILE____LINE__);
    if (
$visib==and $check_flag==1)
    {
      
$new_timecheck_next=time()+$CONF['backlink_check']*86400;
      
$DB->query("update {$CONF['sql_prefix']}_sites set visib='0', check_flag='1', timecheck_next='$new_timecheck_next' where id='$idsite'"__FILE____LINE__);
    }

    if (
$visib==and $check_flag==1)
    {
      
$DB->query("update {$CONF['sql_prefix']}_sites set visib='0', check_flag='0' where id='$idsite'"__FILE____LINE__);
    }
  }
}

class 
add_edit extends base 
{
  function 
check_input($type
  {
    global 
$CONF$DB$FORM$LNG$TMPL;

    
$error_url 0;
    
$error_urlbl 0;
    
$error_name 0;
    
$error_description 0;
    
$error_category 0;
    
$error_banner_url 0;
    
$error_email 0;
    
$error_captcha 0;

    if (
$type == 'add'
    {
      
//Парсим УРЛы
      
$p_url=@parse_url($TMPL['url']);
      
$p_urlbl=@parse_url($TMPL['urlbl']);
      
$p_banner_url=@parse_url($TMPL['banner_url']);

      
//Проверка на пустоту полей формы и превышение длины
      
if (empty($TMPL['url']) || !$p_url) {
                                            
$error_url 1
                                            
$TMPL['error_url'] = "<br>{$LNG['add_error_url_empty']}"
                                            
$TMPL['error_style_url'] = 'ErrorBlock';
                                          }

      if (
$CONF['backlink_require'] && (empty($TMPL['urlbl']) || !$p_urlbl))         {
                                                                                  
$error_urlbl 1
                                                                                  
$TMPL['error_urlbl'] = "<br>{$LNG['add_error_urlbl_empty']}"
                                                                                  
$TMPL['error_style_urlbl'] = 'ErrorBlock';
                                                                                }

      if (
strlen($TMPL['name'])==0)                 {
                                                        
$error_name 1
                                                        
$TMPL['error_name'] = "<br>{$LNG['add_error_name_empty']}"
                                                        
$TMPL['error_style_name'] = 'ErrorBlock';
                                                }

      if (
strlen($TMPL['name'])>$CONF['max_name'])                 {
                                                                  
$error_name 1
                                                                  
$TMPL['error_name'] = "<br>{$LNG['add_error_name_long']}";
                                                                  
$TMPL['error_style_name'] = 'ErrorBlock';
                                                                }
                                                                
      if(
substr_count("{$TMPL['name']}"," ") < && strlen($TMPL['name'])>$CONF['string_without_space']){
                                                                  
$error_name 1;
                                                                  
$TMPL['error_name'] = "<br>{$LNG['add_error_name_without_space']}";
                                                                  
$TMPL['error_style_name'] = 'ErrorBlock';
      }

      if (
strlen($TMPL['description'])==0)         {
                                                        
$error_description 1
                                                        
$TMPL['error_description'] = "<br>{$LNG['add_error_description_empty']}"
                                                        
$TMPL['error_style_description'] = 'ErrorBlock';
                                                }

      if (
strlen($TMPL['description'])>$CONF['max_descr'])         {
                                                                  
$error_description 1
                                                                  
$TMPL['error_description'] = "<br>{$LNG['add_error_description_long']}"
                                                                  
$TMPL['error_style_description'] = 'ErrorBlock';
                                                                }
                                                                
      if (
$CONF['min_descr'] && (strlen($TMPL['description'])<$CONF['min_descr']))         {
                                                                  
$error_description 1;
                                                                  
$TMPL['error_description'] = "<br>{$LNG['add_error_description_short']}";
                                                                  
$TMPL['error_style_description'] = 'ErrorBlock';
                                                                }
      if(
substr_count("{$TMPL['description']}"," ") < && strlen($TMPL['description'])>$CONF['string_without_space']){
                                                                  
$error_description 1;
                                                                  
$TMPL['error_description'] = "<br>{$LNG['add_error_description_without_space']}";
                                                                  
$TMPL['error_style_description'] = 'ErrorBlock';
      }

      if (empty(
$TMPL['category']))                 {
                                                        
$error_category 1
                                                        
$TMPL['error_category'] = "<br>{$LNG['add_error_category_empty']}"
                                                        
$TMPL['error_style_category'] = 'ErrorBlock';
                                                }

      if (
strlen($TMPL['email'])==0)                 {
                                                        
$error_email 1
                                                        
$TMPL['error_email'] = "<br>{$LNG['add_error_email_empty']}"
                                                        
$TMPL['error_style_email'] = 'ErrorBlock';
                                                }
      if(
$error_url || $error_urlbl || $error_name || $error_description || $error_category || $error_email) {$TMPL['error_style_top'] = 'TopErrorBlock'$TMPL['error_top'] = $LNG['add_error_top']; return 0;}

//проверка правильности указанного емейла
      
if (!preg_match("/[0-9a-z_]+@[0-9a-z-_^.]+.[a-z]{2,4}/i",$TMPL['email']))         {
                                                                                                
$error_email 1
                                                                                                
$TMPL['error_email'] = "<br>{$LNG['add_error_email_wrong']}"
                                                                                                
$TMPL['error_style_email'] = 'ErrorBlock';
                                                                                        }

      if(
$error_email) {$TMPL['error_style_top'] = 'TopErrorBlock'$TMPL['error_top'] = $LNG['add_error_top']; return 0;}

//проверка УРЛа сайта и УРЛа обратной ссылки
      
if($CONF['backlink_require'] && $p_url['host']!=$p_urlbl['host'])         {
                                                                                          
$error_urlbl 1
                                                                                          
$TMPL['error_urlbl'] = "<br>{$LNG['add_error_urlbl_nomatch']}"
                                                                                          
$TMPL['error_style_urlbl'] = 'ErrorBlock';
                                                                                }

      if(
$error_urlbl) {$TMPL['error_style_top'] = 'TopErrorBlock'$TMPL['error_top'] = $LNG['add_error_top']; return 0;}

//проверяем доступность сайта
      
if(!@fsockopen($p_url['host'], 80$errno$errstr8))         {
                                                                  
$error_url 1
                                                                  
$TMPL['error_url'] = "<br>{$LNG['add_error_url_noaccess']}"
                                                                  
$TMPL['error_style_url'] = 'ErrorBlock';
                                                                }

      if(
$error_url) {$TMPL['error_style_top'] = 'TopErrorBlock'$TMPL['error_top'] = $LNG['add_error_top']; return 0;}

//ищем такой сайт в БД
      
list($url_host) = $DB->fetch("select URL_host from {$CONF['sql_prefix']}_sites where URL_host like '%$p_url[host]%'"__FILE____LINE__);
      if (!empty(
$url_host))         {
                                  
$error_url 1
                                  
$TMPL['error_url'] = "<br>{$LNG['add_error_url_duplicate']}"
                                  
$TMPL['error_style_url'] = 'ErrorBlock';
                                }

      if(
$error_url) {$TMPL['error_style_top'] = 'TopErrorBlock'$TMPL['error_top'] = $LNG['add_error_top']; return 0;}

//Проверяем баннер
      
if (empty($TMPL['banner_url']) || !$p_banner_url
      {
        
$TMPL['banner_url'] = "{$CONF['skins_image']}/nobanner.gif";
      }
      elseif (
$CONF['max_banner_width'] && $CONF['max_banner_height']) 
      {
        
$size = @getimagesize($FORM['banner_url']);
        if (
$size[0] > $CONF['max_banner_width'] || $size[1] > $CONF['max_banner_height']) 
        {
          
$error_banner_url 1;
          
$TMPL['error_banner_url'] = "<br>{$LNG['add_error_banner_url']}";
          
$TMPL['error_style_banner_url'] = 'ErrorBlock';
        }
        if (!isset(
$size[0]) && !isset($size[1])) 
        { 
          
$error_banner_url 1
          
$TMPL['error_banner_url'] = "<br>{$LNG['add_error_banner_url']}";
          
$TMPL['error_style_banner_url'] = 'ErrorBlock';
        }
      }

      if(
$error_banner_url) {$TMPL['error_style_top'] = 'TopErrorBlock'$TMPL['error_top'] = $LNG['add_error_top']; return 0;}

//ищем обратную ссылку
      
if($CONF['backlink_require'])
      {
        if(
$CONF['backlink_check_start'] && !$this->is_backlink($TMPL['urlbl']))
        {
          
$error_urlbl 1;
          
$TMPL['error_urlbl'] = "<br>{$LNG['add_error_urlbl_nofind']}";
          
$TMPL['error_style_urlbl'] = 'ErrorBlock';
        }
      }

      if(
$error_urlbl) {$TMPL['error_style_top'] = 'TopErrorBlock'$TMPL['error_top'] = $LNG['add_error_top']; return 0;}

//проверка введенного значения каптчи
      
if ($CONF['captcha']) 
      {
        list(
$sid) = $DB->fetch("SELECT sid FROM {$CONF['sql_prefix']}_sessions WHERE type = 'captcha' AND data LIKE '{$_SERVER['REMOTE_ADDR']}|%'"__FILE____LINE__);
        require_once(
"{$CONF['path']}/sources/session.php");
        
$session = new session;
        list(
$type$data) = $session->get($sid);
        list(
$ip$hash) = explode('|'$data);
        if (!
$FORM['captcha'] || $FORM['captcha'] != $CONF['default_psw_captcha'])
        {
          if (
$hash != sha1(')F*RJ@FHR^%X'.$FORM['captcha'].'(*Ht3h7f9&^F'.$ip))
          {
            
$error_captcha 1;
            
$TMPL['error_captcha'] = "<br>{$LNG['add_error_captcha']}";
            
$TMPL['error_style_captcha'] = 'ErrorBlock';
          }
        }
        
$session->delete($sid);
      }

      if(
$error_captcha) {$TMPL['error_style_top'] = 'TopErrorBlock'$TMPL['error_top'] = $LNG['add_error_top']; return 0;}
      return 
1;
    }
  }
  
  
// Эта функция должна быть вызвана до check_input
  
function check_ban($type)
  {
    global 
$CONF$DB$FORM$LNG$TMPL;

    
$ban_url 0;
    
$ban_email 0;
    
$ban_username 0;
    
$ban_ip 0;

   if (
$type == 'add') { $fields = array('url''email''ip'); }
//   elseif ($type == 'edit') { $fields = array('url', 'email'); }
//   elseif ($type == 'review') { $fields = array('ip'); }

    
$TMPL['ip'] = $DB->escape($_SERVER['REMOTE_ADDR'], 1);

    
$result $DB->query("SELECT id, string, field, matching FROM {$CONF['sql_prefix']}_ban"__FILE____LINE__);
    while (list(
$id$string$field$matching) = $DB->fetch_array($result)) {
      if (
in_array($field$fields))
      {
        
$string preg_quote($string);

        if (
$matching) { $s "^{$string}$"; } // Точное совпадение
        
else { $s $string; } // Глобальное совпадение

        
if (preg_match("|{$s}|"$TMPL[$field])) {
          
$ban_url 1;
        }
      }
    }

    if (
$ban_url || $ban_email || $ban_username || $ban_ip) {
      
$TMPL['error_top'] = $LNG['add_ban_top'];
      
$TMPL['error_style_top'] = 'TopErrorBlock';
      return 
0;
    }
    else {
      return 
1;
    }
  }
}

class 
timer 
{
  var 
$start_time;

  function 
timer () 
  {
    
$this->start_time array_sum(explode(' 'microtime()));
  }

  function 
get_time () 
  {
    
$current_time array_sum(explode(' 'microtime()));
    return 
round($current_time $this->start_time5);
  }
}
?>
Онлайн: 2
Реклама