Помогите разобраться со скриптом

poxa

Новичок
Помогите разобраться со скриптом

Есть скрипт

PHP:
<?php

// Адрес страницы
define('PAGE_NAME', 'Tovary_i_uslugi');
// Имя скрипта
define('SCRIPT_NAME', 'getNews.php');
// Title по умолчанию
define('TITLE', 'Товары и услуги');


@ini_set('max_execution_time', 600);
@ini_set('display_errors', 0);
// Путь до скриптов
define('DOC_ROOT', $_SERVER['DOCUMENT_ROOT'].'/');
// Адрес сервера
define('SERVER', 'wsproject.ru');
// Код портала
define('CODE', '92cb1599c6faecb88ffc9c2de22906b1');
// Хронилище статей
define('DB_FILE', 'getNews.db');
// Пораметр
define('PARAM_NAME', 'path');
// Расширение
define('EXT', '.html');
// Статус mod_rewrite
define('REWRITE', true);
// Количество новостей на странице
define('ARTICLE_ON_PAGE', 999);
// Количество ссылок на другие новости
define('RELINK_NEWS_COUNT', 5);
// Keywords по умолчанию
define('KEYWORDS', ' ');
// Description по умолчанию
define('DESCRIPTION', ' ');

if(isset($_GET['update'])) { print portal::Update(); }
elseif(isset($_GET['get'])) { switch ($_GET['get']) { case 'config': print serialize(array( 'code'=>CODE, 'level2'=>PAGE_NAME, 'title'=>TITLE, 'keywords'=>KEYWORDS, 'desctiptipn'=>DESCRIPTION )); break; } }
elseif(isset($_GET['page']) && isset($_GET['level']) && is_numeric($_GET['page'])) { $portal = new portal(); $level = $_GET['level']; if($level == 2) { foreach ($portal->getLevel($level) as $link => $cur) { if($cur['id'] == $_GET['page']) { header('Location: '.PAGE_NAME.'/'.$link.'.html'); die(); } } } header("HTTP/1.0 404 Not found"); print '<h1>Статья не найдена</h1>'; }
else
{
	$portal = new portal();
    ?>



	
<--Начало шаблона сайта-->
   

<!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>
  <title><?=isset($portal->Title)?$portal->Title:TITLE;?></title>
<meta name="keywords" content="<?=isset($portal->Keywords)?$portal->Keywords:KEYWORDS;?>" />
<meta name="description" content="<?=isset($portal->Description)?$portal->Description:DESCRIPTION;?>" />



</head>
<body>

	   <!--content-->
       		   
			   <div class="content"><div class="page_content"><div>
			  <?php 
	if($portal->News['date']) { 
$today = getdate(strtotime($portal->News['date']));
$portal->News['date'] = $today['year']."-".$today['mon']."-".$today['mday'];}  
 
	if($_SERVER['REQUEST_URI'] == '/'.PAGE_NAME.'/'){
	print '<h2>Товары и услуги</h2>';
		foreach($portal->News as $item){
				print '<h3><a href="'.(!empty($item['link_only']) ? $item['link_only'] : $item['link']).'">'.$item['name'].'</a></h3>';
				if (!empty($item['p'])){
					print '<p>'.$item['p'].'</p>';
				}
		}
	}else{
			print '<span>'. $portal->News['date'].'</span>'."\n";
		 	print '<h1>'.$portal->News['h1'].'</h1>'."\n";
			print $portal->News['text']."\n";
	}
	
	?>
		<!--/content-->

</body>
</html>

<--Конец шаблона сайта-->




 <?php
	
}

// Класс портала
class portal { var $path; var $page; var $Content = array(); var $News = array(); var $shortList = array(); var $Title; var $Keywords; var $Description; var $Header; var $curNews = 0; var $curShort = 0; var $newsCount = 0; function __construct() { if(isset($_GET[PARAM_NAME]) && sizeof(explode('/', $_GET[PARAM_NAME])) == 1) { if(ereg('^'.PAGE_NAME.'[0-9]{0,3}$', $_GET[PARAM_NAME])) { preg_match('/[0-9]{0,3}$/', $_GET[PARAM_NAME], $match); $_GET['page'] = $match[0]; $_GET[PARAM_NAME] = substr($_GET[PARAM_NAME], 0, strlen(PAGE_NAME)); } } $this->path = explode('/', isset($_GET[PARAM_NAME]) ? $_GET[PARAM_NAME] : PAGE_NAME); $this->page = (int) (empty($_GET['page']) ? 0 : $_GET['page']); $this->levelWatch(); $this->botLogs(); } function portal() { $this->__construct(); } function getLevel() { $file = DOC_ROOT . DB_FILE; if( is_file($file) ) { $level = file_get_contents($file); $result = unserialize($level); $this->newsCount = sizeof($result); return $result; } else { return false; } } function getShortList($count) { $result = array(); $id = 0; foreach($this->shortList as $key=>$val) { if($this->curShort <= $id && $id < $this->curShort + $count) { $result[$key] = $val; } $id++; } $this->curShort += $count; return $result; } function getNewsList($count, $from = false) { if($from !== false) { $this->curNews = $from; } $result = array(); $id = 0; foreach($this->News as $key=>$val) { if($this->curNews <= $id && $id < $this->curNews + $count) { $result[$key] = $val; } $id++; } $this->curNews += $count; return $result; } function shortList($newsArr, $lev, $from = '', $count = RELINK_NEWS_COUNT, $pagenation = false) { $short = array(); $onpage = $count; $check = empty($from) ? true : false; foreach($newsArr as $key=>$item) { if( $key != $from && ( ($pagenation!==false && (int)($pagenation / $onpage) >= $this->page ) || $pagenation === false) ) { if($count != 0 && $check) { $short[] = array( 'link_only' => 0, 'link'=>(REWRITE ? '/' : '/'.SCRIPT_NAME.'?'.PARAM_NAME.'=').$lev.'/'.$key.EXT, 'name'=>$item['title'], 'text'=>$item['desc'], 'date'=>$item['date'], 'p'=>$item['p'] ); $count--; } } else { $check = true; } if($pagenation) { $pagenation = $pagenation + 1; } } return $short; } function levelWatch($pagenation = 1) { if( $this->path[0] == PAGE_NAME ) { $this->Content = $this->getLevel(); if( isset($this->path[1]) ) { $this->News = $this->Content[$this->path[1]]; $this->News['title'] .= isset($this->News['textis'][0]) ? ' - '.$this->News['textis'][0]['text'] : ''; $this->shortList = $this->shortList($this->Content, PAGE_NAME, $this->path[1]); } else { $this->News = $this->shortList($this->Content, PAGE_NAME, '', ARTICLE_ON_PAGE, $pagenation); } } $this->Title = isset($this->News['title']) ? $this->News['title'] : TITLE; unset($this->News['title']); $this->Keywords = isset($this->News['keys']) ? $this->News['keys'] : KEYWORDS; unset($this->News['keys']); $this->Description = isset($this->News['desc']) ? $this->News['desc'] : DESCRIPTION; unset($this->News['desc']); $this->Header = isset($this->News['h1']) ? $this->News['h1'] : false; } 	
	function Update()
	{
		$result = '';
		$Responce = file_get_contents('http://'.SERVER.'/pool/'.CODE);
		if($Responce == '') {
			$Responce = dn_get_contents();
			if ($Responce == '')
				return "get_contents - error;\n";
		}
		$newsArr = unserialize($Responce);

		if( portal::fileWrite( DOC_ROOT . DB_FILE, serialize($newsArr[2]) ) )
		{
			$result .= "level 2 - ok;\n";
		}
		else
		{
			$result .= "level 2 - error;\n";
		}
		return $result;
	}
	
 function fileWrite($file, $con) { if(!function_exists('file_put_contents')) { if (!$handle = fopen($file, 'w+')) { return false; } if (fwrite($handle, $con) === FALSE) { return false; } return true; } else { return file_put_contents($file, $con); } } function botLogs() { $logFile = DOC_ROOT . 'botLogs.log'; $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; $agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; if(substr_count($agent, 'Googlebot') || substr_count($agent, 'Yandex') || substr_count($agent, 'Rambler') ) { $log = date("Y-m-d H:j:s") . "\t{$agent} ({$ip})\t{$url}\t{$ref}\n"; if ($handle = fopen($logFile, 'a+')) { fwrite($handle, $log); } } } function getNavigationString($countPage = false, $curPage = false, $linkBase = false, $echo = false) { $countPage = $countPage !== false ? $countPage : (int) ($this->newsCount / ARTICLE_ON_PAGE); $curPage = $curPage !== false ? $curPage : $this->page; $linkBase = $linkBase !== false ? $linkBase : (REWRITE ? '/' : '/'.SCRIPT_NAME.'?'.PARAM_NAME.'=').PAGE_NAME; if(!function_exists('b')) { function b($p, $curPage) { if($curPage == ($p-1)) { return '<b>'.$p.'</b>'; } else { return $p; } } } $nav = ''; $countPage = ceil($countPage); if($countPage <= 1) { return $nav; } $nav .= '<p class="navstring">Страницы : '; $nav .= $curPage!=0 ? ' <a href="'.$linkBase.($curPage-1).EXT.'" class="arrowback">«</a>  ' : ''; if($countPage < 10) { for ($p = 0; $p < $countPage; $p++) { $nav .= ' <a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>  '; } } elseif($curPage < 9) { for ($p = 0; $p < 10; $p++) { $nav .= ' <a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>  '; } $nav .= ' ... '; $nav .= ' <a href="'.$linkBase.($countPage-1).EXT.'">'.b($countPage, $curPage).'</a>  '; } elseif( ($countPage - $curPage) < 9) { $nav .= ' <a href="'.$linkBase.'.html">1</a>  '; $nav .= ' ... '; for ($p = ($countPage - 10); $p < ($countPage ); $p++) { $nav .= ' <a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>  '; } } else { for ($p = 0; $p < 3; $p++) { $nav .= ' <a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>  '; } $nav .= ' ... '; for ($p = $curPage -2 ; $p < $curPage +3; $p++) { $nav .= ' <a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>  '; } $nav .= ' ... '; for ($p = ($countPage - 3); $p < ($countPage); $p++) { $nav .= ' <a href="'.$linkBase.$p.EXT.'">'.b($p+1, $curPage).'</a>  '; } } $nav .= $curPage!=($countPage-1) ? ' <a href="'.$linkBase.($curPage+1).EXT.'" class="arrownext">»</a>  ' : ''; $nav .= '</p>'; if($echo) { print $nav; return true; } else { return $nav; } }
	 }
	 
	  	 		function dn_get_contents()
	{
		$fp = @fsockopen(SERVER,80);
		if(!$fp) return '';
		$out = 'GET /pool/'. CODE ." HTTP/1.0\r\nHost: ". SERVER ."\r\nConnection: Close\r\n\r\n";
		fwrite($fp, $out);
		while (!feof($fp))
		{
			@$val .= @fgets($fp, 128);
		}
		fclose($fp);
		$val = explode("\r\n\r\n", $val);
		$val = $val[1];
		return $val;
	} ?>
Помогите разобраться как им управлять
 

damngood

Мозг был, но ушел...
@$val .= @fgets($fp, 128); Это чо?) Собачек тут как на выставке...
 

poxa

Новичок
Короче, скрипт полностью рабочий, могу если хотите выслать по e-mail. Скрипт организовывает показ статей на сайте, при этом всего 2-мя файлами getNews.php и getNews.db, плюс поколдовать в .htacsess. Вот хочу сделать чтобы можно было управлять этим скриптом, т.е. обновлять инфу в getNews.db
 

baev

‹°°¬•
Команда форума
poxa, а почему автор скрипта Вам не помогает?
 

poxa

Новичок
Автор скрипта какая-то компания,
она использует подобные скрипты для размещения статей для раскрутки. Я подобной реализации ещё не встречал, при этом сайтов у них много, т.е. есть система управления статьями, которую я хочу реализовать, но пока знаний маловато.
Возможно скрипт не только мне поможет
 

A1x

Новичок
poxa
для начала помоги себе сам, хотя бы отформатируй нормально скрипт. Поставь себе нормальную IDE, например Netbeans, - там это можно делать автоматом

class portal { var $path; var $page; var $Content = array(); var $News = array(); var $shortList = array(); var $Title; var $Keywords; var $Description; var $Header; var $curNews = 0; var $curShort = 0; var $newsCount = 0; function __construct() { if(isset($_GET[PARAM_NAME]) && sizeof(explode('/', $_GET[PARAM_NAME])) == 1) { if(ereg('^'.PAGE_NAME.'[0-9]{0,3}$', $_GET[PARAM_NAME])) { preg_match('/[0-9]

по-твоему это кто-то будет читать? Индусы блин отдыхают и нервно курят свою индусскую дурь
 

fixxxer

К.О.
Партнер клуба
>> Возможно скрипт не только мне поможет

такой говнокод поможет разве что повеситься
 

damngood

Мозг был, но ушел...
Имхо помогать ему писать админку для дорвея это умножать киберсквоттерство и спам.
 
Сверху