<?PHP
//die(phpinfo());
//// СТАРТ /////////////////////////////////////////////////////////////////
//начинаем подсчет скорости генерации страницы
$timerStart=microtime();
//конфигурация
require("includes/config.php");
require(MYROOT."/includes/common.php");
require(MYROOT."/includes/funcs.php");
//соеденяемся с сервером MySQL
if ( (!@mysql_connect(DB_SERVER,DB_LOGIN,DB_PASSWORD)) or
(!@mysql_select_db(DB_DATABASE)) )
{
require(MYROOT."/includes/suspended.php");
die();
}
//считываем конфигурацию
$config=array();
$result=mysql_query("SELECT * FROM config");
while($row=mysql_fetch_array($result)) $config[$row["param"]]=$row["value"];
//приостановить работу сайта?
if($config["PARAM_SUSPEND"])
{
require(MYROOT."/includes/mysuspended.php");
die();
}
//считываем используемый шаблон и его конфигурацию
$template=getRow("templates","def='1'");
$result=mysql_query("SELECT * FROM templates_config WHERE template_id='{$template["id"]}' OR template_id='0'");
while($row=mysql_fetch_array($result)) $config[$row["param"]]=$row["value"];
//// ОПРЕДЕЛЕНИЕ РЕЖИМА РАБОТЫ ПО ТИПУ ЗАПРОСА //////////////////////////////
//обработка запроса
while(TRUE)
{
if (substr($script,-1,1)!="/")
{//видимо запрос файла
//файл из шаблона?
$filename=searchSharedFile($script,array(MYROOT."/templates/{$template["dir"]}/shared",
MYROOT."/templates/shared"));
if(($filename)&&(file_exists($filename)))
{
header("Content-Type: ".mimeContentType($filename));
header("Content-Length: ".filesize($filename));
readfile($filename);
die();
}else{
//отправляем на главную
header("HTTP/1.1 404 Not Found");
header("Location: /");
die();
}
}else{//видимо запрос страницы
//// ПОДГОТОВКА /////////////////////////////////////////////////////
//инициализация
mt_srand();
//деинициализация переменных окружения
unset($client);
unset($session);
//отдаем заголовки (если установлен "быстроустаревающий контент")
if($config["PARAM_HEADERS"]) outputHeaders();
//// РАБОТАЕМ ///////////////////////////////////////////////////////
//извлекаем переменные из окружения
$env=array();
$autovars="user pass ".
"name org email tel fax addr subject text ".
"orderby method";
foreach (explode(" ",$autovars) as $k=>$v)
if (isset($_POST[$v])) $env[$v]=htmlspecialchars(strip_tags(trim($_POST[$v])));
else if (isset($_GET[$v])) $env[$v]=htmlspecialchars(strip_tags(trim($_GET[$v])));
else if (isset($_COOKIE[$v])) $env[$v]=htmlspecialchars(strip_tags(trim($_COOKIE[$v])));
else $env[$v]="";
$autovars="page payment delivery ".
"product_id count delcart ".
"vote voteid";
foreach (explode(" ",$autovars) as $k=>$v)
if (isset($_POST[$v])) $env[$v]=(int)$_POST[$v];
else if (isset($_GET[$v])) $env[$v]=(int)$_GET[$v];
else if (isset($_COOKIE[$v])) $env[$v]=(int)$_COOKIE[$v];
else $env[$v]=0;
$autovars="PostPrices recart incart clearcart proceed";
foreach (explode(" ",$autovars) as $k=>$v)
if(isset($_POST[$v])) $$v=TRUE;
else if(isset($_GET[$v])) $$v=TRUE;
//// РАБОТА С 1С ///////////////////////////////////////////////////////////
//постинг данных?
if(isset($PostPrices))
{
$env["pass"]=md5($env["pass"]);
$where="login='{$env["user"]}' AND psw='{$env["pass"]}'";
if(isExists("clients",$where))
{
if(in_array(getValue("clients","class",$where),
array("admin","advanced","manager")))
{
$xml=@$GLOBALS["HTTP_RAW_POST_DATA"];
$f1c=new Funcs1C();
$res=$f1c->import1C(stripcslashes($xml),"update");
//вывод результата
if($res===FALSE)
$res="* Возникла не опознанная ошибка!";
else $res="Импорт успешно завершен:\n".strip_tags($res);
} else $res="Пользователю {$user}/{$pass} не достаточно прав для выгрузки данных!";
} else $res="Ошибка авторизации при попытке выгрузки данных!";
//отправляем уведомление
$subject="Результат выгрузки данных из 1С:Предприятие";
$subject="=?koi8-r?B?".base64_encode(convert_cyr_string($subject, "w","k"))."?=";
$header="Content-Type: text/plain; charset=Windows-1251";
mail($config["PARAM_GENERAL_EMAIL"],$subject,$res,$header);
//все
die("OK");
}
//// СЕССИИ И АВТОРИЗАЦИЯ //////////////////////////////////////////////////
//учет сессий
$isSpider=FALSE;
$ssid=""; //$ssid - это для cookies-сессий
$sess=""; //$sess - это для url-сессий
//проверка браузер-сканер
$spiders=file(MYROOT."/includes/spiders.txt");
for($i=0;$i<sizeof($spiders);$i++) $isSpider=($isSpider||(is_integer(strpos($userAgent,trim($spiders[$i])))));
//установка сессий только для браузеров!!!
if(!$isSpider)
{
if(isset($_COOKIE["ssid"])) $ssid=$_COOKIE["ssid"];
if(isset($HTTP_GET_VARS["sess"])) $sess=$HTTP_GET_VARS["sess"];
//фильтр
$ssid=substr(htmlspecialchars(strip_tags(trim($ssid))),0,32);
$sess=substr(htmlspecialchars(strip_tags(trim($sess))),0,32);
//обработка url-сессий
if(($ssid=="")&&($sess!="")&&(isExists("sessions","ssid='{$sess}'")))
{
//старт сессии
session_name("sess");
session_id($sess);
session_start();
//переустановка
$ssid=$sess;
}
//а такая сессия зарегистрирована?
if(($ssid=="")||(!isExists("sessions","ssid='{$ssid}'")))
{
//=>создаем новую сессию
//регистрируем сессию
$ssid=generatePsw(32,"QWERTYUIOPASDFGHJKLZXCVBNM1234567890");
$price_id=getValue("price_groups","id","def='1'");
$currency_id=getValue("currency","id","def='1'");
mysql_query("INSERT INTO sessions (ssid,lastclick,lasturl)
VALUES ('{$ssid}','{$time}','{$request}')");
//перезагрузка
SetCookie("ssid",$ssid,mktime(0,0,0, 1,1,2035),"/");
header("Location: {$script}?sess={$ssid}");
die();
}
//работа
SetCookie("ssid",$ssid,mktime(0,0,0, 1,1,2035),"/");
mysql_query("UPDATE sessions
SET lastclick='{$time}',
lasturl='{$request}',
hints=hints+1
WHERE ssid='{$ssid}'
LIMIT 1");
//сессия
$session=getRow("sessions","ssid='{$ssid}'");
$session["price_id"]=getValue("price_groups","id","def='1'");
$session["currency_id"]=getValue("currency","id","def='1'");
//если не клиент, то робот.....
}else{
$ssid="";
}
//// ФУНКЦИИ МАГАЗИНА ///////////////////////////////////////////////
require(MYROOT."/includes/funcs.index.php");
//// РАБОТА СО СТРАНИЦАМИ ///////////////////////////////////////////
$TITLE="";
$SUBTITLE="";
$HTML="";
//начинаем сжатие
compressStart();
//разбираем запрос
@list($p,$sid,$id)=explode("/",trim($script,"/"));
@$p=htmlspecialchars(strip_tags(trim($p)));
@$sid=htmlspecialchars(strip_tags(trim($sid)));
@$id=(int)$id;
if(($sid)&&(!$id)) @$id=(int)$sid;
$env["id"]=$id;
//получаем стандартные блоки для верстки
$HTML_CATALOG=getContent(MYROOT."/includes/template.catalog.php",TRUE);
$HTML_CART=getContent(MYROOT."/includes/template.cart.php",TRUE);
$HTML_NEWS=getContent(MYROOT."/includes/template.news.php",TRUE);
$HTML_VOTES=getContent(MYROOT."/includes/template.votes.php",TRUE);
$HTML_BANNERS=getContent(MYROOT."/includes/template.banners.php",TRUE);
//запрашиваем страницу
ob_start();
ob_implicit_flush(0);
while(TRUE)
{
//шаблонная страница?
$filename=searchFile(MYROOT."/templates/{$template["dir"]}/{$p}.htm");
if(file_exists($filename))
{
echo getContent($filename);
break;
}
//добавленная страница?
$where="shared='1' AND sid='{$p}'";
if(isExists("pages",$where))
{
$TITLE=$SUBTITLE=getValue("pages","title",$where);
echo getValue("pages","html",$where);
break;
}
//стандартная страница?
$filename=searchFile(MYROOT."/pages/{$p}.php");
if(file_exists($filename))
{
echo getContent($filename,TRUE);
break;
}
//страница по умолчанию - главная
$p="main";
}
$HTML=ob_get_contents();
ob_end_clean();
//страница с заголовоком?
if($SUBTITLE)
$HTML=str_replace(array('{TITLE}','{HTML}'),
array($SUBTITLE,$HTML),
getContent(searchSharedFile("/format.pageheader.htm",
array(MYROOT."/templates/{$template["dir"]}",
MYROOT."/templates")))
);
//считываем шаблон страницы и кладем в нее "фарш" ;)
$HTML=str_replace('{HTML}',
$HTML,
getContent(MYROOT."/templates/{$template["dir"]}/template.htm")
);
//подготовка заголовка страницы
if($TITLE) $config["HTML_TITLE"]="{$TITLE} - {$config["HTML_TITLE"]}";
//вставляем в шаблон блоки
$HTML=str_replace(array('{HTML_TITLE}','{HTML_DESCRIPTION}','{HTML_KEYWORDS}','{HTML_COPYRIGHTS}',
'{HTML_CATALOG}','{HTML_CART}','{HTML_BANNERS}',
'{HTML_NEWS}','{HTML_VOTES}'),
array($config["HTML_TITLE"],$config["HTML_DESCRIPTION"],$config["HTML_KEYWORDS"],$config["HTML_COPYRIGHTS"],
$HTML_CATALOG,$HTML_CART,$HTML_BANNERS,
$HTML_NEWS,$HTML_VOTES),
$HTML);
//оптимизация кода страницы
if($config["PARAM_HTML_OPTIMIZE"])
{
$HTML=preg_replace("/\n([\s]*)/","",$HTML);
//$HTML=preg_replace("/([\r]*)/","",$HTML);//долго!
}
//// ОТДАЕМ РЕЗУЛЬТАТ ////////////////////////////////////////////
echo $HTML;
//обработка скорости генерации страницы
echo "<!-- ".getTimerTime($timerStart)." -->";
//отдаем страницу
compressDone();
//все!
die();
}
//не определено!
$request="/";//главная
}
?>