From 7797b141bf05ca11af3688a7450a3ce4335c6a26 Mon Sep 17 00:00:00 2001 From: Igor I Date: Wed, 20 Dec 2023 20:05:51 +0600 Subject: [PATCH] =?UTF-8?q?+=20=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4?= =?UTF-8?q?=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=B0=20=D0=BD=D0=B0=20=D0=BA?= =?UTF-8?q?=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B5,=20=D1=84=D1=83=D0=BD?= =?UTF-8?q?=D0=BA=D1=86=D0=B8=D1=8F:=20trts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- metadata/dbms/records.php | 79 ++---------------------------------- metadata/dbms/session.php | 2 +- metadata/dbms/tools.js | 36 ++++++++++++++-- metadata/include/captcha.php | 2 +- metadata/tree/tree.php | 2 +- metadata/update/set.php | 2 +- 6 files changed, 41 insertions(+), 82 deletions(-) diff --git a/metadata/dbms/records.php b/metadata/dbms/records.php index a7dcb14..7ba1e5c 100644 --- a/metadata/dbms/records.php +++ b/metadata/dbms/records.php @@ -208,20 +208,9 @@ $idType="object"; } - try - { - if(strpos($db_connection, 'sqlite')!==false) - { - $db = new PDO($db_connection); - }else - { - $db = new PDO($db_connection, $db_login, $db_password); - $db->exec("SET timezone TO 'UTC';"); //Пользователь должен сам передавать свою зону или она должна быть в настройках - } - $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - } catch (Exception $e) - { sendError(1,'Connect error '.$_SERVER['HTTP_HOST'].': "'.$e->getMessage().'"!'); - } + $db = connectToDB(); + if($db==null) + sendError(1,trt('Error_connection_to_DB')); //Пытаемся автоматически залогинется по GUID из COOKIE (TODO авторизация должна быть в отдельном файле! Смотри директорию password ) /*if($_SESSION['USER_ID']==null && $_COOKIE['GUID']!=null) @@ -633,7 +622,7 @@ $sql_query=str_replace('${_user_id}',getSQLValue(gettype($_SESSION['USER_ID']),$_SESSION['USER_ID']),$sql_query); if($objListR!=null && $objListR->getAttribute('order')!='' && $objListR->getAttribute('order')!=null && $objListR->getAttribute('order')!='null') { - $sql_query=str_replace('${_order}',findNodeOnAttribute(findFirstNode($currNode,'objects-list'), "column","n",$objListR->getAttribute("order"))->getAttribute("order"),$sql_query); + $sql_query=str_replace('${_order}',getSQLValue('i4',findNodeOnAttribute(findFirstNode($currNode,'objects-list'), "column","n",$objListR->getAttribute("order"))->getAttribute("order")),$sql_query); }else $sql_query=str_replace('${_order}','1',$sql_query); //sendError(1,$sql_query); @@ -677,66 +666,6 @@ } //перебираем RS и строим XML только из тех столбцов которые записанны в секци objects-list поля column в не зависимости от их видимости -/* - $xmlstring=''; - $xmlstring.=''."\n"; - $xmlstring.=''."\n"; - //Перечисляю название выбираемых столбцов через запятую - $xmlstring.=''; - $nextnode=findNode($currNode,'objects-list')->firstChild; - while ($nextnode) - { - if ($nextnode->nodeName=='column') - { - $xmlstring.=''; - } - $nextnode = $nextnode->nextSibling; - } - $xmlstring.=''; - - $node=findFirstNode($reqNode,'objects-list'); - $pos=-1; - while ($row = $res->fetch(PDO::FETCH_ASSOC))// $row - ассоциативный массив значений, ключи - названия столбцов - { - $pos++; - if (($pagepos!=-1)&&(($pos<($pagepos*$rowspagecount))||($pos>=$pagepos*$rowspagecount+$rowspagecount))) { continue; } - - //разрешать или запрещять редактировать запись надо проверять в хранимке а также запрещять либо разрешать редактировать колонку - //для каждой записи формируеться строка настроек со значениями что нужно запретить в таком виде "iuds" - //$access=$row["access"]; - $access=''; //u = enable update field, d = enable delete field - if(!array_key_exists("_u",$row)) { $access.="u"; } else { $access.=$row["_u"]; } - if(!array_key_exists("_d",$row)) { $access.="d"; } else { $access.=$row["_d"]; } - - if(array_key_exists($currNode->getAttribute("ObjectID"),$row)) - $xmlstring.=' '; - else - $xmlstring.=' '; - $nextnode=findNode($currNode,'objects-list')->firstChild; - while ($nextnode) - { - if ($nextnode->nodeName=='column') - { - if(array_key_exists($nextnode->getAttribute("n"),$row)) - { - $field = $nextnode->getAttribute("n"); - $xmlstring.=''; - }else - { - sendError(1,"Column \"".$nextnode->getAttribute("n")."\" not exists in \"$typename\" for select!"); - } - } - $nextnode = $nextnode->nextSibling; - } - $xmlstring.=''."\n"; - } - $res->closeCursor(); - $xmlstring.=''."\n"; - - header('Content-type: text/xml'); - echo $xmlstring; -*/ - $obj = new StdClass(); $obj->errorCode=0; $obj->errorMessage = ''; diff --git a/metadata/dbms/session.php b/metadata/dbms/session.php index 1b1f4ec..6863dd6 100644 --- a/metadata/dbms/session.php +++ b/metadata/dbms/session.php @@ -22,7 +22,7 @@ }else if($fn=='1') { - @session_start(); + @session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]); echo session_id(); exit; }else diff --git a/metadata/dbms/tools.js b/metadata/dbms/tools.js index e237003..99b6411 100644 --- a/metadata/dbms/tools.js +++ b/metadata/dbms/tools.js @@ -20,6 +20,35 @@ function trt(key) else return val; } +function trts(text) +{ + let result=''; + let pLen=4; //Длина преамбулы trt( + let cut=0; + let from = 0; // Позиция поиска для итерации + while (true) + { + let pos1 = text.indexOf('trt(', from); + if(pos1 >= 0) + { + from = pos1+pLen+1; + let pos2 = -1; + if(text[pos1+pLen] == '"') pos2 = text.indexOf('")', from); + if(text[pos1+pLen] == "'") pos2 = text.indexOf("')", from); + if(pos2 > 0) + { + result+=text.substring(cut, pos1); + let toTranslate=text.substring(pos1+pLen+1, pos2 ); + result+=trt(toTranslate); + cut=pos2+2; + from = pos2; + } + }else break; + } + result+=text.substring(cut); //Копируем остатки + return result; +} + function deleteOption(sel,id){ if(typeof sel == 'string') sel=document.getElementById(sel); let i=0; @@ -1680,7 +1709,7 @@ class TWin //Подгрузить содержимое окна из указаного места //json - объект который передастца в виде JSON строки по URL //func - функция которая выполниться после загрузки данных в форму - load(url,json,func) + load(url,json,func,tr) { this.showProgressBar(); var r=createRequestObject(); @@ -1688,7 +1717,8 @@ class TWin { return function(){ if(r.readyState == 4){ - w.innerHTML=r.responseText; + if(tr) w.innerHTML=trts(r.responseText); + else w.innerHTML=r.responseText; thiz.hideProgressBar(); if(func !== undefined && func!=null) func(); @@ -1699,7 +1729,7 @@ class TWin thiz.setCenter(); } } - }(r,this.co,this,func) + }(r,this.co,this,func,tr) r.open( "POST", url, true ); if(json!=null) r.send(JSON.stringify(json)); diff --git a/metadata/include/captcha.php b/metadata/include/captcha.php index da90e84..322fbee 100644 --- a/metadata/include/captcha.php +++ b/metadata/include/captcha.php @@ -1,5 +1,5 @@ 43200,'cookie_secure' => true,'cookie_httponly' => true]); //if(isset($_SESSION['REMOTE_ADDR']) && $_SESSION['REMOTE_ADDR'] != $_SERVER['REMOTE_ADDR']) unset($_SESSION["USER_ID"]); //Делаемся не авторизованным если зашли с другого ip адреса if (isset($_REQUEST['id'])) $id = $_REQUEST['id']; else $id = ''; diff --git a/metadata/tree/tree.php b/metadata/tree/tree.php index ed074e0..ac250a0 100644 --- a/metadata/tree/tree.php +++ b/metadata/tree/tree.php @@ -6,7 +6,7 @@ */ if(isset($_GET[session_name()]) && $_GET[session_name()]!='') //Чтоб ID сессии переданная гетом был главней а не создавался заново session_id($_GET[session_name()]); - @session_start(); + @session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]); if(isset($_SESSION['REMOTE_ADDR']) && $_SESSION['REMOTE_ADDR'] != $_SERVER['REMOTE_ADDR']) unset($_SESSION["USER_ID"]); //Делаемся не авторизованным если зашли с другого ip адреса //sleep(1); //Тестирование с задержкой diff --git a/metadata/update/set.php b/metadata/update/set.php index ac7ef87..fc947f7 100644 --- a/metadata/update/set.php +++ b/metadata/update/set.php @@ -6,7 +6,7 @@ */ if(isset($_GET[session_name()]) && $_GET[session_name()]!='') //Чтоб сессия переданная гетом была главней session_id($_GET[session_name()]); - @session_start(); + @session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]); if(isset($_SESSION['REMOTE_ADDR']) && $_SESSION['REMOTE_ADDR'] != $_SERVER['REMOTE_ADDR']) unset($_SESSION["USER_ID"]); //Делаемся не авторизованным если зашли с другого ip адреса require_once("../include/zip.lib.php");