Это старая версия документа!
conn.php
conn.php
<? $mysqli = mysqli_connect('address','ReadOnlyLogin', 'ReadOnlyPass','DB') or die ("Connection error: ". mysqli_error($mysqli)); ?> <style> /* стили таблицы */ th { text-indent: 0px; border-collapse: collapse; background: #e8edfa; border-bottom: 1px solid #fff; color: #500; font-weight: 700; border-top: 0px solid transparent; padding: 2px; text-align:center; } td { text-indent: 0px; border-collapse: collapse; background: #e8edff; border-bottom: 1px solid #fff; color: #500; border-top: 0px solid transparent; padding: 2px; text-align:center; } tr:hover td {background: #eeddff;} tr{text-indent: 1px;} tr: </style> <? /* Проверка на соеденение с базой данных */ if (!$mysqli) { die ("Error!"); mysqli_close($mysqli); } else { /* подготовка запроса на получение данных для последних двадцати сессий передачи */ $query = 'SELECT sd.Num as Num,sd.Type as Type,sd.Value as Value,li.Date as Date,li.uid as Unit FROM save_data sd INNER JOIN ( SELECT Num_i as Num, Date, ul.uname as uid FROM info inf INNER JOIN ( SELECT uNum,uName as uname FROM units_list) as ul ON inf.Prib_id = ul.uNum ORDER BY inf.Num_i DESC LIMIT 20) as li ON li.Num = sd.Num'; /* Добавление к запросу фильтра */ if(isset($_GET['filter'])) { $query .= ' '.$_GET['filter']; } $query .= ' ORDER BY sd.Num ASC'; /* выполнение запроса и формирование из результата массива, по которому будет построена таблица */ $result = $mysqli->query("$query"); if(!$result) { die("Wrong query!"); } else { $t_mas = array(); while($myrow = mysqli_fetch_array($result,MYSQLI_ASSOC)) { if(!in_array($myrow['Type'], $t_mas)) { array_push($t_mas, $myrow['Type']); } } rsort($t_mas); array_unshift($t_mas, "Unit","Date"); mysqli_data_seek($result, 0); $i = 0; $ss = -1; while($infrow = mysqli_fetch_array($result,MYSQLI_ASSOC)) { $nob = $infrow['Num']; if($ss != $nob) { $i++; $ss = $nob; } $mass[$i][array_search($infrow['Type'], $t_mas)] = $infrow['Value']; $mass[$i][array_search("Unit", $t_mas)] = $infrow['Unit']; $mass[$i][array_search("Date", $t_mas)] = $infrow['Date']; } unset($i); $title .= '<thead><tr>'; for($i=0; $i<count($t_mas); $i++) { $title .= '<th>'.$t_mas[$i].'</th>'; } unset($i); for($i=1; $i<count($mass)+1; $i++) { $max .= '<tr>'; for($j=0; $j<count($t_mas); $j++) { $max .= '<td>'.$mass[$i][$j].'</td>'; } $max .= '</tr>'; } $list = $title.'</tr></thead><tbody>'.$max.'</tbody>'; echo '<table width="100%" style="font-size: 11px">'.$list.'</table>'; } } mysqli_close($mysqli); ?>
index.html
index.html
mainexport.html
mainexport.html
<!DOCTYPE html> <html> <head> <title> Export page </title> <meta charset="utf-8"> <!-- jQuery --> <script type="text/javascript" src="/core/lib/jquery.min.js"></script> <!-- Script for moment lib --> <script type="text/javascript" src="/core/lib/moment.js"></script> <!--Load Script and Stylesheet for DATETIMEPICKER --> <script type="text/javascript" src="core/lib/datetimepicker/jquery.simple-dtpicker.js"></script> <link type="text/css" href="core/lib/datetimepicker/jquery.simple-dtpicker.css" rel="stylesheet" /> <!----> <style type="text/css"> .hidden{ visibility: hidden; } </style> </head> <body> <form id="zmnx"> <b> Выберите как вы хотите получить результат </b> <p><input type="radio" name="how" value="json">JSON лог-файл</p> <p><input type="radio" name="how" value="table">Таблица данных</p> </form> <form id="jsonly" class="hidden"> <label for="firstt">Выберите начало временного интервала</label> <p><input id="firstt" type="text" name="firstt" value=" YYYY-MM-DD HH:mm "></p><br> <label for="secondt">Выберите конец временного интервала</label> <p><input id="secondt" type="text" name="secondt" value=" YYYY-MM-DD HH:mm "></p> <p id="point"><input type="submit" id="okey" value="Принять" onclick="event.preventDefault();getinfo();"></p> </form> <center><div id="outres"></div></center> </body> </html> <script type="text/javascript"> function getinfo() { var fdate = document.getElementById('firstt').value + ':00'; var sdate = document.getElementById('secondt').value + ':00'; if((moment(fdate, 'YYYY-MM-DD HH:mm:ss',true).isValid()) && (moment(sdate, 'YYYY-MM-DD HH:mm:ss',true).isValid())) { if($('#units').length && $('#units').val() != '') { $.get('core/deb.php',{fdate: fdate,sdate: sdate, manualmode: '1',unitid: $('#units').val()},function(back){document.getElementById('outres').innerHTML=back;}); $('#outres').html('<p>Загрузка ...<p>'); } else if(!($('#units').length)) { $.get('core/deb.php',{fdate: fdate,sdate: sdate,fileback: '1'},function(back){document.getElementById('outres').innerHTML=back;}); $('#outres').html('<p>Загрузка ...<p>'); } else { alert("Выберите прибор."); } } else { alert("Заполните все поля корректно."); } } $(function(){ $('#firstt').appendDtpicker({"locale": "ru","closeOnSelected": true,"autodateOnStart": false,"minuteInterval": 15, "dateFormat": "YYYY-MM-DD hh:mm"}); $('#secondt').appendDtpicker({"locale": "ru","closeOnSelected": true,"autodateOnStart": false,"minuteInterval": 15, "dateFormat": "YYYY-MM-DD hh:mm"}); var d = new Date(); $('#secondt').change(function() { $('#firstt').appendDtpicker({ maxDate: $('#secondt').val() // when the end time changes, update the maxDate on the start field }); }); $('#firstt').change(function() { $('#secondt').appendDtpicker({ minDate: $('#firstt').val() // when the start time changes, update the minDate on the end field }); }); $("[name='how']").change(function() { if($('input[name=how]:checked').val() == 'table') { var inp = document.createElement('select'); inp.id = 'units'; //jsonly.insertBefore(inp, jsonly.okey); $(inp).insertBefore('#point'); var url = 'core/backend.php'; $.get(url,"unitslist=1",function (result) { $('#units').html('<option value=""> -- Выберите прибор -- </option>'+result); }) } else { $('#units').remove(); } $('#jsonly').removeClass("hidden"); }); // trigger change event so datapickers get attached $('#secondt').trigger('change'); $('#firstt').trigger('change'); }); </script>
altread.php
altread.php
<? $str = $_POST; list($user, $pass, $inject) = explode(';', trim($str, ';')); $mysqli = mysqli_connect('address',$user, $pass,'DB'); if (!$mysqli) { die ("Error!"); mysqli_close($mysqli); } else { $result = $mysqli->query("$inject"); if(!$result) { die("Empty result!"); } else { $t_mas = []; $v_mas = []; $i = -1; $ind = -1; $test = mysqli_fetch_array($result,MYSQLI_ASSOC); mysqli_data_seek($result, 0); if ($test['Num'] != NULL) { while($myrow = mysqli_fetch_array($result,MYSQLI_ASSOC)) { if($myrow['Num'][0] != $ind) { $i++; $ind = $myrow['Num'][0]; $t_mas[$i] .= 'Session number'.';'.$myrow['Type'].';'; $v_mas[$i] .= $myrow['Num'][0].';'.$myrow['Value'].';'; } else { $t_mas[$i] .= $myrow['Type'].';'; $v_mas[$i] .= $myrow['Value'].';'; } } for($n=0; $n < count($t_mas); $n++) { $text .= $t_mas[$n]."\r\n".$v_mas[$n]."\r\n\r\n"; } } else { $cnt = 1; while($myrow = mysqli_fetch_array($result,MYSQLI_ASSOC)) { foreach ($myrow as $key => $value) { if($cnt = 1){$title .= $key.';';} $v_string .= $value.';'; } $v_string .= "\r\n"; } $text = $title."\r\n".$v_string."\r\n\r\n"; } echo $text; } } mysqli_close($mysqli); ?>
backend.php
backend.php
<? require_once 'baseinfo.php'; /* получение параметров для устройства с переданным ID */ if(isset($_GET['unitnow'])) { $id = $_GET['unitnow']; $buff = array(); $result = $mysqli->query("SELECT DISTINCT `Type` FROM `save_data` sd INNER JOIN (SELECT `Num_i` FROM `info` WHERE `Prib_id` = $id ORDER BY `Num_i` DESC LIMIT 1) inf ON inf.Num_i = sd.Num WHERE (`Type` NOT LIKE 'system_%') AND (`Type` NOT LIKE '%addr')"); if(mysqli_num_rows($result)) { while($row = mysqli_fetch_array($result)) { $buff[] = array('title'=>$row['Type']); } $away = array('back'=>'success','sens'=>$buff); } else { $away = array('back'=>'error'); } print json_encode($away); } /* получение списка устройств */ if(isset($_GET['unitslist'])) { $result = $mysqli->query("SELECT uNum,uName,Serial FROM units_list"); while($rows = mysqli_fetch_array($result)) { $back .= '<option value="'.$rows['uNum'].'">'.$rows['uName'].' ('.$rows['Serial'].')</option>'; } print_r($back); } /* изменение данных о адресе датчика */ if(isset($_POST['update'])) { $upd = $_POST['update']; $str = ''; foreach ($upd as $headkey => $headvalue) { $str = "UPDATE `Production`.`sensors_adr` SET `".$headvalue[1]."`='".$headvalue[2]."' WHERE id=".$headvalue[0]; $mysqli->query("$str"); } } /* внесение нового датчика */ elseif(isset($_POST['insert'])) { $ins = $_POST['insert']; $columns = '`timestamp`,'; $values = 'NOW(),'; foreach ($ins as $key => $value) { $columns .= '`'.$value[0].'`,'; $values .= "'".$value[1]."',"; } $str = "INSERT INTO `Production`.`sensors_adr` ($columns) VALUES ($values)"; $str = str_replace(',)', ')', $str); $mysqli->query("$str"); } /* проверка наличие параметра адреса датчика и его значения в передаваемых устройством данных */ elseif(isset($_GET['unit_addr_exist'])) { $unit = $_GET['unit_addr_exist']; $result_array = array(); $away = array(); $text = "SELECT `sd`.`Num`,`sd`.`type`,`sd`.`value` FROM `Production`.`save_data` as `sd` INNER JOIN (SELECT `Num_i` FROM `Production`.`info` WHERE `Prib_id`='$unit' ORDER BY `Num_i` DESC LIMIT 1) inf ON `sd`.`Num` = `inf`.`Num_i` WHERE `sd`.`Type` LIKE '%addr'"; $result = $mysqli->query("$text"); if($result->num_rows) { while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { $result_array[] = ['Type'=>str_replace('_addr','',$row['type']),'Val'=>$row['value']]; } $away = array('error'=>'false','data'=>$result_array); } else { $away = array('error'=>'true'); } echo json_encode($away); } ?>
baseinfo.php
baseinfo.php
<? $mysqli = mysqli_connect('address','login','pass','DB'); ?>
deb.php
deb.php
<? ini_set('memory_limit', '512M'); // изменение лимита памяти для скрипта header('Content-Type: text/html; charset=UTF-8'); require_once 'baseinfo.php'; // подключение файла хранящем информацию о соединение с базой данных /* функция формирование результатов калибровки в массив */ function finish($mysqli,$qur) { $result = $mysqli->query("$qur"); mysqli_close($mysqli); $mass = array(); $buff = array(); $alt = array(); $i = -1; $n = -1; $searchindex = 0; while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { $search = $row['uName'].','.$row['serial']; if(isset($mass[$search])) { $i = $mass[$search]; } else { ++$n; $i = $n; $mass[$search] = $i; } $buff[$i]['uName'] = $row['uName']; $buff[$i]['serial'] = $row['serial']; $alt[$i][$row['sensor']][] = ['datetime'=>$row['timestamp'],'data'=>json_decode($row['ratio'],false)]; $searchindex = array_search($row['sensor'], array_column($buff[$i]['sensors'],'sensor')); if ((false !== $searchindex) && isset($searchindex)) { $buff[$i]['sensors'][$searchindex] = ['sensor'=>$row['sensor'],'calibr'=>$alt[$i][$row['sensor']]]; } else { $buff[$i]['sensors'][] = ['sensor'=>$row['sensor'],'calibr'=>$alt[$i][$row['sensor']]]; } //$buff[$i]['sensors'][] = ['sensor'=>$row['sensor'],'calibr'=>['datetime'=>$row['timestamp'],'data'=>json_decode($row['ratio'],false)]]; } echo json_encode($buff,JSON_UNESCAPED_UNICODE); } /* --------------------------------------------------- */ /* Данные калибровки */ if(isset($_GET['calibration'])) { $line = 'SELECT mu.sensor,mu.timestamp,mu.ratio,li.uname as uName,li.Serial as serial FROM multiplier as mu INNER JOIN (SELECT uNum,uName as uname,Serial from units_list) as li ON li.uNum = mu.unit'; switch ($_GET['calibration']) { case 'full': // все данные break; case 'filtid': // данные устройства с указанным id $line .= ' WHERE mu.unit='.$_GET['id']; break; } finish($mysqli,$line); } /* --------------------------------------------------- */ /* Данные за интервал времени */ elseif (isset($_GET['manualmode'])) { $return = ''; $infile = ''; $t_mas = array(); $mass = array(); switch($_GET['manualmode']) { case 1: if((isset($_GET['fdate'])) && (isset($_GET['sdate'])) && (isset($_GET['unitid']))) { $fdate = $_GET['fdate']; $sdate = $_GET['sdate']; if(strtotime($sdate)>strtotime("now")): $sdate = date("Y-m-d H:i:s"); endif; if(strtotime($fdate)<strtotime('2019-01-24 17:31:43')): $fdate = '2019-01-24 17:31:43'; endif; $unit = $_GET['unitid']; $list = $mysqli->query("SELECT DISTINCT Type FROM save_data sd INNER JOIN (SELECT Num_i from info WHERE `Date` BETWEEN '$fdate' AND '$sdate' AND Prib_id = $unit) inf ON sd.Num = inf.Num_i WHERE (`Type` NOT LIKE 'system_%')"); $about = mysqli_fetch_array($mysqli->query("SELECT uName,Serial FROM units_list WHERE uNum = $unit")); $result = $mysqli->query(" SELECT sd.Type as Type,sd.Value as Value,li.Date as Date FROM `save_data` as sd INNER JOIN ( SELECT `Date`,`Num_i` FROM `info` WHERE (`Date` BETWEEN '$fdate' AND '$sdate') AND (Prib_id = $unit) ) as li ON sd.Num = li.Num_i WHERE (`Type` NOT LIKE 'system_%')",MYSQLI_USE_RESULT); $makeat = '../export/last_export.csv'; $fd = fopen($makeat, 'w'); $infile = 'Прибор: ;'.$about['uName'].' ('.$about['Serial'].'); ; Интервал: ;'.$fdate.'; / ;'.$sdate.";\n"; fwrite($fd,iconv('utf-8', 'windows-1251',$infile)); while($myrow = mysqli_fetch_array($list,MYSQLI_ASSOC)) // составление массива заголовков { if(!in_array($myrow['Type'], $t_mas)) { array_push($t_mas, $myrow['Type']); } } rsort($t_mas); array_unshift($t_mas,"Date"); unset($infile); for($i=0; $i<count($t_mas); $i++) { $infile .= $t_mas[$i].";"; // запись в файл из массива заголовков } $infile .= "\n"; fwrite($fd, iconv('utf-8', 'windows-1251', $infile)); // вносим заголовки в файл //mysqli_data_seek($result, 0); // возвращение указателя в начало результата unset($i); $i = 0; $ss = -1; while($infrow = mysqli_fetch_array($result,MYSQLI_ASSOC)) // заполнение массива значений { $nob = $infrow['Date']; if($ss != $nob) { $i++; $ss = $nob; } $mass[$i][array_search($infrow['Type'], $t_mas)] = $infrow['Value']; $mass[$i][array_search("Date", $t_mas)] = $infrow['Date']; } unset($i); unset($infile); $infile = ''; for($i=1; $i<count($mass)+1; $i++) { for($j=0; $j<count($t_mas); $j++) { $infile .= $mass[$i][$j].";"; } $infile .= "\n"; fwrite($fd, iconv('utf-8', 'windows-1251', $infile)); // построчное заполнение файла в цикле unset($infile); } $return = '<a href="'.$makeat.'" download>Скачать таблицу</a>'; } else { $return = 'Error'; } mysqli_close($mysqli); break; } echo $return; } elseif ((isset($_GET['fdate'])) && (isset($_GET['sdate']))) { $fdate = $_GET['fdate']; $sdate = $_GET['sdate']; if(strtotime($sdate)>strtotime("now")): $sdate = date("Y-m-d H:i:s"); endif; if(strtotime($fdate)>strtotime("now")): $fdate = '2019-01-24 17:31:43'; endif; $result = $mysqli->query("SELECT sd.Type,sd.Value,sd.Num,inf.Date,ul.uName,ul.Serial FROM save_data as sd INNER JOIN (SELECT `Num_i`, `date`, `Prib_id` FROM `info` WHERE `Date` BETWEEN '$fdate' AND '$sdate') as inf ON inf.Num_i = sd.Num INNER JOIN (SELECT DISTINCT `uName`,`uNum`,`Serial` FROM `units_list`) as ul ON ul.uNum = inf.Prib_id",MYSQLI_USE_RESULT); // выполнение запроса $first = mysqli_fetch_array($result,MYSQLI_ASSOC); $i = $first['Num']; /* формирование файла с результатом */ if(isset($_GET['fileback'])) { $makeat = '../export/log.txt'; $fd = fopen($makeat, 'w'); fwrite($fd, '{'); fwrite($fd,'"'.$i.'":{"Date":"'.$first['date'].'","uName":"'.$first['uName'].'","serial":"'.$first['Serial'].'","data":{"'.$first['Type'].'":"'.$first['Value'].'"'); while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { if($row['Num']!=$i) { $i = $row['Num']; fwrite($fd,'}},"'.$i.'":{"Date":"'.$row['date'].'","uName":"'.$row['uName'].'","serial":"'.$row['Serial'].'","data":{'); } else { fwrite($fd, ','); } fwrite($fd,'"'.$row['Type'].'":"'.$row['Value'].'"'); } fwrite($fd, '}}}'); echo '<a href="'.$makeat.'" download>Скачать log-файл</a>'; } else /* возвращение результата как текста */ { echo '{'; echo '"'.$i.'":{"Date":"'.$first['date'].'","uName":"'.$first['uName'].'","serial":"'.$first['Serial'].'","data":{"'.$first['Type'].'":"'.$first['Value'].'"'; while ($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { if($row['Num']!=$i) { $i = $row['Num']; echo '}},"'.$i.'":{"Date":"'.$row['date'].'","uName":"'.$row['uName'].'","serial":"'.$row['Serial'].'","data":{'; } else { echo ','; } echo '"'.$row['Type'].'":"'.$row['Value'].'"'; } echo '}}}'; } mysqli_free_result($result); mysqli_close($mysqli); } ?>
jsonadd.php
jsonadd.php
<? require_once '../core/baseinfo.php'; if (isset($_POST['fromtable'])) // если пришёл ПОСТ с содержимым экселя { $arr = json_decode(str_replace('][', ',', $_POST['fromtable']), true); $unit_num = $arr[0]['AKey']; $result = mysqli_fetch_array($mysqli->query("SELECT `OPid` FROM `units_list` WHERE `uNum`='$unit_num'")); if($result != NULL) { foreach ($arr as $key => $value) { $mysqli->query("INSERT `Info`(`Date`,`Prib_id`,`OpNum`) VALUES (NOW(),$unit_num,$result[OPid])"); $lastid = mysqli_insert_id($mysqli); foreach ($value as $got => $it) { if($got!='AKey') { $word .= "('$lastid','$got','$it')"; } } if($word!='') { $str = 'INSERT `Save_data`(`Num`,`Type`,`Value`) VALUES '.$word; $query_str = str_replace(')(', '),(', $str); $mysqli->query("$query_str"); } $word = ''; } mysqli_close($mysqli); } else{} } elseif(isset($_POST)) // если пришёл пост извне { $inmass = file_get_contents('php://input'); $arr = json_decode($inmass,true); if($arr['system']['Akey']!==NULL) // ищем ключ в массиве с вложенностями { $Key = $arr['system']['Akey']; $done = $mysqli->query("SELECT `uNum`,`OPid`,`IDob`,`x`,`y` FROM `units_list` WHERE `AKey`='$Key'"); // если ключ есть в базе, то получаем информацию о приборе $result = mysqli_fetch_array($done); if($result!=NULL) { $str = 'INSERT `Save_data`(`Num`,`Type`,`Value`) VALUES '; $unit_num = $result[uNum]; $mysqli->query("INSERT `Info`(`Date`,`Prib_id`,`OpNum`,`ObjectId`,`x`,`y`) VALUES (NOW(),$unit_num,$result[OPid],$result[IDob],$result[x],$result[y])"); $lastid = mysqli_insert_id($mysqli); /* формирование названия параметра с учётом иерархие вложенности */ $path = array(); $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr), RecursiveIteratorIterator::SELF_FIRST); foreach ($it as $key => $value) { $path = array(); if(!is_array($value) && $key != 'Akey') { for ($count = $it->getDepth()+1; $count && $count--;) { array_unshift($path, $it->getSubIterator($count)->key()); } $path = implode('_', $path); $str .= "('$lastid','$path','$value')"; } } $query_str = str_replace(')(', '),(', $str); $mysqli->query("$query_str"); mysqli_close($mysqli); } } else {} // если нет ключа, то игнорируем } ?>
read.php
read.php
<? $str = file_get_contents('php://input'); list($user, $pass, $inject) = explode(';', trim($str, ';')); // получение логина и пароля пользователя БД и SQL запроса $mysqli = mysqli_connect('localhost',$user, $pass,'production'); if (!$mysqli) { die ("Error!"); mysqli_close($mysqli); // проверка соединения с БД } else { $result = $mysqli->query("$inject"); if(!$result) { die("Wrong query!"); } else { $t_mas = []; $v_mas = []; $i = -1; $test = mysqli_fetch_array($result,MYSQLI_ASSOC); mysqli_data_seek($result, 0); if ($test['Num'] != NULL) { /* формирование строк CSV формата */ while($myrow = mysqli_fetch_array($result,MYSQLI_ASSOC)) { if($myrow['Num'][0] != $ind) { $i++; $ind = $myrow['Num'][0]; $t_mas[$i] .= 'Session number'.';'.$myrow['Type'].';'; $v_mas[$i] .= $myrow['Num'][0].';'.$myrow['Value'].';'; } else { $t_mas[$i] .= $myrow['Type'].';'; $v_mas[$i] .= $myrow['Value'].';'; } } for($n=0; $n < count($t_mas); $n++) { $text .= $t_mas[$n]."\r\n".$v_mas[$n]."\r\n\r\n"; } } else { $cnt = 1; while($myrow = mysqli_fetch_array($result,MYSQLI_ASSOC)) { foreach ($myrow as $key => $value) { if($cnt = 1){$title .= $key.';';} $v_string .= $value.';'; } $v_string .= "\r\n"; } $text = $title."\r\n".$v_string."\r\n\r\n"; } echo $text; } } mysqli_close($mysqli); ?>
admin.php
admin.php
<? session_start (); if (!$_SESSION['level'] || $_SESSION['level'] < 1) die ( '<center><a href=/admin/index.php>Пройдите авторизацию!</a><center>' ); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> Центральная панель управления </title> <style type="text/css"> A.admlink {color: red;} A.alllink { color: green;} #cen{ text-align: center; } .botexit{text-align: right; width: 280px; padding: 10px;} .all{border: solid 1px; text-align: center; width: 280px; padding: 10px;} .father{width: 500px; border-style: dotted; border-width: 2px; border-radius: 125px 125px 15px 125px;} .linf {border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover {box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } </style> </head> <body> <center><p><h3> Панель управления </h3></p></center> <center> <p> <div class="father"> <p> <div class="all"> <a href="/admin/edit/export.php" class="admlink">SQL запросы</a><div id="cen">(только для администраторов)</div><hr> <a href="/admin/edit/operator.php" class="admlink">Редактировать персонал </a><div id="cen"> (требуется доступ "moderator")</div><hr> <a href="/admin/edit/pribor.php" class="admlink">Редактировать приборы</a><div id="cen"> (требуется доступ "moderator")</div><hr> <a href="/admin/edit/object.php" class="admlink">Редактировать объекты</a><div id="cen"> (требуется доступ "moderator")</div><hr> <a href="/admin/edit/sensors.php" class="admlink">Редактировать данные датчиков</a><div id="cen">(требуется доступ "support")</div><hr> <a href="/admin/edit/calib.php" class="admlink">Внести данные калибровки</a><div id="cen">(требуется доступ "support")</div><hr> </div> </p> <p> <div class="all"> <a href="/admin/edit/makeurchoise.html" class="alllink">Внесение новых данных</a><hr> </div> </p> <br> <div class="botexit"> <a href="admin_logout.php" class="linf">Выйти?</a> </div> </div> </p> </center> </body> </html>
admin_logout.php
admin_logout.php
<? session_start (); if (!$_SESSION['level']) die ( '<center><p>Error!: Empty page</p></center>' ); session_destroy (); ?> <html> <head> <title>Панель управления</title> <style type= "text/css">#wrap{width: 100%;height: 100%;}.loginbox1{width: 300px;padding: 4px;border: 1px solid #777;background-color: #777;color: white;font-weight: bold;}.loginbox2{width: 300px;padding: 4px;border: 1px solid #777;color: #777;}</style> </head> <body> <center> <table cellpadding= "0" cellspacing= "0" id= "wrap"><tr><td align= "center"> <table cellpadding= "0" cellspacing= "0"><tr><td class= "loginbox1" align= "center">Выход выполнен</td></tr> <tr><td class= "loginbox2" align= "center"><a href=/admin/index.php>Вернуться</a></td></tr> </table></td></tr> </table> </center> </body> </html>
config.php
config.php
<?php <?php $buffer = array(); $buffer['login'] = ['password'=>'pass','level'=>255]; $buffer['anotherLogin'] = ['password'=>'pass','level'=>255]; // От 1 до 255. 0 - не авторизован, 1 - низший уровень. ?>
index.php
index.php
<? session_start (); if(!empty($_SESSION['level'])) { if($_SESSION['level'] > 1) { ?> <html><head> <title>Панель управления</title> <style type= text/css>#wrap{width: 100%;height: 100%;} .loginbox1{width: 300px;padding: 4px;border: 1px solid #777;background-color: #777;color: white;font-weight: bold;} .loginbox2{width: 300px;padding: 4px;border: 1px solid #777;color: #777;} .loginnow{width: 300px;padding: 4px;border: 1px solid #777;color: #777;} </style> </head> <body> <center> <table cellpadding=0 cellspacing= «0» id= «wrap»><tr><td align=center> <table cellpadding=0 cellspacing= «0»> <tr><td class=loginbox1 align=center>Вход выполнен</td></tr> <tr><td class=loginbox2 align=center> <a href=admin.php>Перейти к панели управления</a></td></tr> </table> </td></tr> </table> </center> </body> </html> <? exit; } } $_SESSION['level'] = 0; include ('config.php'); function not_logged_in () { echo ' <html> <head> <title>Вход в панель управления</title> <style type=text/css> #wrap{width: 100%;height: 100%;} #wraptd{padding: 20px;} .loginbox1{width: 300px;padding: 4px;border: 1px solid #777;background-color: #777;color: white;font-weight: bold;} .loginbox2{width: 300px;padding: 4px;border: 1px solid #777;color: #777;} .loginbox2 input{width: 200px;margin: 3px 0;border-color: #888;color: #777;} </style> </head> <body> <center> <table cellpadding=0 cellspacing=0 id=wrap><tr><td align=center id=wraptd> <table cellpadding=0 cellspacing=0> <tr><td class=loginbox1 align=center>Вход в панель</td></tr> <tr><td class=loginbox2 align=center><form action=index.php method=post><input type=text name=login value=Логин onclick=this.value=""><br><input type="password" name=password value=Пароль onclick=this.value=""><br><input type=submit value=Войти></form></td></tr> </table></td></tr> </table> </center> </body> </html>'; exit; } if (!$_POST) not_logged_in (); if (!$_POST['login']) not_logged_in (); if (!$_POST['password']) not_logged_in (); if($buffer[$_POST['login']]) { if($buffer[$_POST['login']]['password'] == $_POST['password']) { $_SESSION['level'] = $buffer[$_POST['login']]['level']; $loggednow = $_POST['login']; } } else { not_logged_in(); } ?> <html> <head> <title> Панель управления </title> <style type=text/css>#wrap{width: 100%;height: 100%;} .loginbox1{width: 300px;padding: 4px;border: 1px solid #777;background-color: #777;color: white;font-weight: bold;} .loginbox2{width: 300px;padding: 4px;border: 1px solid #777;color: #777;} .loginnow{width: 300px;padding: 4px;border: 1px solid #777;} </style> </head> <body> <center> <table cellpadding=0 cellspacing=0 id=wrap><tr> <td align=center> <table cellpadding=0 cellspacing=0> <tr> <td class=loginbox1 align=center>Вход выполнен</td> </tr> <tr> <td align=center class=loginnow>Вы зашли как<? echo ' "'.$loggednow.'"';?></td> </tr> <tr> <td class=loginbox2 align=center><a href=admin.php>Перейти к панели управления</a></td> </tr> </table> </td> </tr> </table> </center> </body> </html>
calib.php
calib.php
<? session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); if($_SESSION['level'] < 2) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); require_once '../../core/baseinfo.php'; /* скрипт внесения новых данных калибровки */ if ((isset($_POST['uid']))&&(isset($_POST['sensid']))&&(isset($_POST['n']))) { $str = '{"n":'.$_POST['n']; if($_POST['n']>0) { $str .= ',"ai":['; for($i=0;$i<$_POST['n']+1;$i++) { $str .= $_POST['ai'.$i].','; } $str .= ']}'; $str = str_replace(',]}', ']}', $str); } else { $str .= '}'; } $alias = '('; $unit = $_POST['uid']; $sensor = $_POST['sensid']; $arr = explode("_",$sensor); $buff = array(); for($i=0; $i<count($arr); ++$i) { for($j=0; $j < $i+1; ++$j) { $buff[$i][] = $arr[$j]; } } $buff = array_reverse($buff); foreach ($buff as $key => $value) { $alias .= "'".implode('_', $value)."',"; } $alias .= ')'; $alias = str_replace(',)', ')', $alias); /* если адрес для датчика устройства имеется в таблице адресов, то внести и в таблицу калибровки */ $check_exist = $mysqli->query("SELECT `adr` FROM `Production`.`sensors_adr` WHERE `sensor` IN $str AND `unit_id` = $unit ORDER BY `id` DESC LIMIT 1"); if($check_exist->num_rows) { $adr = mysqli_fetch_array($check_exist, MYSQLI_ASSOC); $adr = $adr['adr']; $mysqli->query("INSERT INTO `multiplier` (`unit`,`sensor`,`timestamp`,`ratio`,`adr`) VALUES ($unit,'$sensor',NOW(),'$str','$adr')"); } else { $mysqli->query("INSERT INTO `multiplier` (`unit`,`sensor`,`timestamp`,`ratio`) VALUES ($unit,'$sensor',NOW(),'$str')"); } } ?> <style> td { text-indent: 5px; border-collapse: collapse; color: #500; border-top: 0px solid transparent; padding: 2px; text-align:left; } tr{text-indent: 1px;} input[id=newinp] { -moz-appearance: textfield; width: 4em; } input[id=newinp]::-webkit-inner-spin-button { display: none; } </style> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Внесение данных калибровки</title> <script src="http://code.jquery.com/jquery-latest.js"></script> <style type="text/css"> .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } </style> </head> <body onload="elemt();"> <a href="/admin/admin.php" class="linf">Назад</a> <center><div style="width: 600px; text-align: left;"> <p><form id="ratform" onsubmit="alert('Данные успешно приняты!');" method="POST"> <div id="unitdiv"><p>Выберите устройство: <br><select id="unitid" name="uid" required> <option value="">---</option> <? $result = $mysqli->query("SELECT `uNum`,`uName`,`Serial` FROM `units_list`"); while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { echo "<option value=".$row['uNum'].">".$row['uName']."(".$row['Serial'].") </option>"; } ?> </select></p></div> <div id="sensordiv"> <p>Выберите название сенсора и калибровочный параметр<br> <select id="sensorid" name="sensid" required> <option value=""> Выберите прибор </option> </select></p></div> <div id="ndiv"> <p> Укажите n<br> <select id="nid" name="n" onchange="elemt();"> <option value=0>n=0</option> <option value=1>n=1</option> <option value=2>n=2</option> <option value=3>n=3</option> <option value=4>n=4</option> <option value=5>n=5</option> <option value=6>n=6</option> </select></p> </div> <p><div id="calibdiv"></div></p> <p><form id="butt"><input type="submit" id="buttonok" value="Готово"></form></p> </form></p> </body> </html> <script type="text/javascript"> /* создание форм в зависимости от степени точности калибровки */ function elemt() { var i = Number(document.getElementById('nid').value) + Number(1); $("#calibdiv").empty(); if(i != 1) { var cnt; for(cnt = 0; cnt < i; ++cnt) { var inp = document.createElement('input'); inp.type = 'number'; inp.step= '0.0001'; inp.name='ai'+cnt; inp.id = 'newinp'; inp.required = true; inp.placeholder='a'+cnt; calibdiv.appendChild(inp); } } } $(document).ready(function () { $('#unitid').change(function () { var unitid = $(this).val(); if (unitid == '') { $('#sensorid').html('<option value=""> Выберите прибор </option>'); return(false); } /* загрузка списка датчиков прибора */ $('#sensorid').html('<option value="">загрузка...</option>'); var url = '../../core/backend.php'; $.get(url,"unitnow=" + unitid,function (result) { if(result.back == 'error') { $('#sensorid').html('<option value=""> Нет данных </option>'); } else { var options = '<option value=""> Выберите датчик </option>'; $(result.sens).each(function() { options += '<option value="' + $(this).attr('title') + '">' + $(this).attr('title') + '</option>'; }); $('#sensorid').html(options); //$('#sensorid').attr('disabled', false); } },"json" ); }); }); </script> <? /* список уже внесённых данных калибровки */ $gg = $mysqli->query("SELECT mu.sensor,mu.timestamp,mu.ratio,mu.adr,CONCAT(li.uname,'(',li.Serial,')') as unit FROM multiplier as mu INNER JOIN (SELECT uNum,uName as uname,Serial from units_list) as li ON li.uNum = mu.unit ORDER BY unit,sensor"); echo '<details><summary>Список данных колибровки</summary><table>'; while ($grow = mysqli_fetch_array($gg,MYSQLI_ASSOC)) { echo '<tr><td>'.$grow['unit'].'</td><td>'.$grow['sensor'].'</td><td>'.$grow['timestamp'].'</td><td>'.$grow['ratio'].'</td><td>'.$grow['adr'].'</tr>'; } echo '</table></details></div></center>'; ?>
excel.php
excel.php
<? session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); if($_SESSION['level'] < 1) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); require_once '../../core/baseinfo.php'; $result = $mysqli->query("SELECT uNum, uName, Serial FROM units_list"); ?> <html> <head> <meta charset="utf-8"> <title>Выгрузка из excel</title> <script src="../../core/lib/xlsx.full.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.7.7/xlsx.core.min.js"></script> <script src="http://code.jquery.com/jquery-latest.js"></script> <style> .bl { display: none;} .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } .exclink{ border: 1px outset #333; /* Рамка */ border-radius: 15px; background:#eaeaea; display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; } .exclink:hover{ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); color: red; } </style> </head> <body> <center><div style="width: 600px; text-align: left; display: inline-block; vertical-align: middle;"> <form id="myForm"> Выберите устройство:<br> <select id="klop"> <option value=""> --- </option> <? while ($row = mysqli_fetch_array($result)) { echo "<option value=".$row['uNum'].">"; echo $row['uName'].'('.$row['Serial'].')'; echo "</option>"; } ?> </select> </form> <div id="toShow" class="variations_button bl"> <input accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel.sheet.macroEnabled.12" type="file" id="excel" name="files"/> <input type="submit" value="Готово" id="done"/> </div> </div></center> <center><div style="position: fixed; bottom: 5%;"><a href="../../export/Standart book.xlsx" class="exclink">Excel файл со списком</a><p style="font-size: 12px"><? $filename = '../../export/Standart book.xlsx'; if (file_exists($filename)) { echo "Обновлено: " . date ("d M y", filemtime($filename)); } ?></p></center></div> <script> function debug(inp) { $.ajax({ url:"../../core/jsonadd.php", dataType: 'json', type: 'POST', data: {fromtable: '[{"AKey":"'+document.getElementById('klop').value+'"}]'+JSON.stringify(inp) } , async: true}); } /* чтение файла эксель и формирование с помощью библиотеки JSON */ function handleFile(e) { var files = e.files; var i, f; var sus = ''; //Loop through files for (i = 0, f = files[i]; i != files.length; ++i) { var reader = new FileReader(); var name = f.name; reader.onload = function (e) { var data = e.target.result; var workbook = XLSX.read(data, { type: 'binary' }); var sheet_name_list = workbook.SheetNames; sheet_name_list.forEach(function (y) { var result = ''; /* iterate through sheets */ //Convert the cell value to Json var roa = XLSX.utils.sheet_to_json(workbook.Sheets[y]); if (roa.length > 0) { result = roa; debug(result); } }); }; reader.readAsArrayBuffer(f); } alert("Данные успешно обработаны!"); } //Change event to dropdownlist document.getElementById('done').addEventListener('click', updateSize, false); // preprocessing input data function updateSize() { var doc = document.getElementById("excel"); var listoftype = ['xlsx','xlsm']; // array of allowable formats if(($.inArray((doc.files[0].name.split('.')).pop(), listoftype)) == -1) { alert('Выбран файл не поддерживаемого формата!\r\nПоддерживаемые форматы: '+listoftype.join(', ')); } else // { var resultAction = confirm("Проверьте внесённые данные: \r\n Устройство: "+ $("#klop option:selected").text() + "\r\n Файл: "+doc.files[0].name); if(resultAction) { handleFile(doc); } } doc.value = ""; } /* show file-form if UNIT selected else hiden */ var sel = document.getElementById('klop'); sel.addEventListener('change', function (event) { if(this.value) { document.getElementById('toShow').classList.remove('bl'); } else { document.getElementById('toShow').classList.add('bl'); } }); </script> </body> </html>
export.php
export.php
<? session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); if($_SESSION['level'] < 255) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); $mysqli = mysqli_connect('address','ReadOnlyLogin', 'pass','DB') or die ("Connection error: ". mysqli_error($mysqli)); ?> <style type="text/css"> .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } </style> <a href="/admin/admin.php" class="linf">Назад</a> <center> <form method="POST" action=""> <label> Выполнить SQL запрос<br> </label> <textarea name="query" type="text" rows="20" style="width: 900px; height: 400px; border: 1px solid #008"/></textarea><br> <input type="submit" name="gotadd" value="Выполнить и скачать"/><br> </form></center> <? if(isset($_POST['query'])) { $path = $_SERVER['DOCUMENT_ROOT'].'/export/file.csv'; unlink($path); $inject = strip_tags($_POST['query']); if ($inject{strlen($inject)-1} == ';') { $inject = substr($inject,0,-1); } $result = $mysqli->query("$inject INTO OUTFILE '$path' CHARACTER SET cp1251 FIELDS TERMINATED BY ';'LINES TERMINATED BY '\r\n'") or die ("Query error: ". mysqli_error($mysqli)); if (!mysqli_error()) { echo '<br><center><a href="http://188.35.161.31/export/file.csv">Скачать</a></center>'; } mysqli_close($mysqli); } ?>
index.php
index.php
<?php session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); header('Location:/admin/admin.php'); exit; ?>
makeurchoise.html
makeurchoise.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Выбор способа внесения данных</title> <script src="http://code.jquery.com/jquery-latest.js"></script> <style type="text/css"> .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } .container { width: 90%; } img { max-width: 45%; display: inline-block; height: auto; } @media screen and (max-width: 1000px) { img { max-width: 100%; } } .image { opacity: 0.7; } .image:not(:hover) { transition: 0.5s; } .image:hover { transition: 1s; -webkit-transform: translateX(30px) translateY(-30px); transform: translateX(30px) translateY(-30px); opacity: 1; } .excel:hover { -webkit-box-shadow:-30px 30px 50px 25px #6bbd6c ; -moz-box-shadow:-30px 30px 50px 25px #6bbd6c ; box-shadow:-30px 30px 50px 25px #6bbd6c ; } .simple:hover { -webkit-box-shadow:-30px 30px 50px 25px #404040 ; -moz-box-shadow:-30px 30px 50px 25px #404040 ; box-shadow:-30px 30px 50px 25px #404040 ; } html, body, iframe { height: 100%; overflow: hidden;} </style> </head> <body> <a href="/admin/admin.php" class="linf">Назад</a> <center><p> <div id="choise" class="container"> <img class="excel image" id="excel" src="../../core/img/excel.png" width="1025" height="550"> <img class="simple image" id="simple" src="../../core/img/form.png" width="1025" height="550"> </div> <div id="frame" style="width: 100%; height: auto;" hidden> </div></p> </center> </body> </html> <script type="text/javascript"> /* Создание фрейма с выбранной страницей */ $('img').on('click',function() { var page = $(this).prop('id'); $('#frame').html('<iframe allowtransparency="true" allowfullscreen allowscriptaccess="always" frameborder="0" scrolling="yes" style="width: 100%; height: 90vh;" src="' + page + '.php"></iframe>'); $('#frame').removeAttr('hidden'); $('#choise').attr('hidden','true'); }); </script>
object.php
object.php
<?php session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); if($_SESSION['level'] < 127) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); require_once '../../core/baseinfo.php'; ?> <style> td { text-indent: 0px; width:200px; border-collapse: collapse; color: #500; border-top: 0px solid transparent; padding: 2px; text-align:center; } tr{text-indent: 1px;} .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } </style> <a href="/admin/admin.php" class="linf">Назад</a> <center> <div style="display: inline-block; margin-left: 0px; vertical-align: middle;"> <form method="POST" action=""> <label> Добавить новый объект<br> </label> <input name="addobj" type="text" placeholder="Введите наименование"/><br> <input type="submit" name="gotadd" value="Добавить"/><br> </form> </div> <div style="display: inline-block; margin-left: 45px; vertical-align: middle;"> <form method="POST" action=""> <label> Удалить объект из базы<br> </label> <input name="delobj" type="text" placeholder="Введите ID"/><br> <input type="submit" name="gotdel" value="Удалить"/><br> </form> </div> </center> <? /* обработка удаления и внесения объектов */ if(isset($_POST['addobj']) && ($_POST['addobj']!=='')) { $name=strip_tags($_POST['addobj']); $addyet = $mysqli->query("INSERT INTO `Objects` (`NameOb`) VALUES ('$name')"); header("Refresh:0"); } elseif(isset($_POST['delobj']) && ($_POST['delobj']!=='')) { $delid=strip_tags($_POST['delobj']); $delyet = $mysqli->query("UPDATE `Objects` SET `NameOb`='DELETED' WHERE NumOb=$delid"); header("Refresh:0"); } else{} Echo "<center>Список объектов:<br>"; $result = $mysqli->query("SELECT * FROM `Objects` WHERE `NameOb`!='DELETED'"); Echo '<table><tr><td><P><center> ID </center></td><td><center> Object </center></P></td></tr>'; do{ Echo '<tr>'; Echo '<td>'.$myrow['NumOb'].'</td>'; Echo '<td>'.$myrow['NameOb'].'</td>'; Echo '</tr>'; }while ($myrow = mysqli_fetch_array($result)); Echo '</table></center><br>'; ?>
operator.php
operator.php
<? session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); if($_SESSION['level'] < 127) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); require_once '../../core/baseinfo.php'; ?> <style> td { text-indent: 0px; width:200px; border-collapse: collapse; color: #500; border-top: 0px solid transparent; padding: 2px; text-align:center; } tr{text-indent: 1px;} .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } </style> <a href="/admin/admin.php" class="linf">Назад</a> <center> <div style="display: inline-block; margin-left: 0px; vertical-align: middle;"> <form method="POST" action=""> <label> Добавить нового оператора<br> </label> <input name="addoperator" type="text" placeholder="Введите имя"/><br> <input type="submit" name="gotadd" value="Добавить"/><br> </form> </div> <div style="display: inline-block; margin-left: 50px; vertical-align: middle;"> <form method="POST" action=""> <label> Удалить оператора из базы<br> </label> <input name="deloperator" type="text" placeholder="Введите ID"/><br> <input type="submit" name="gotdel" value="Удалить"/><br> </form> </div> </center> <? /* Обработчик добавление и удаления операторов */ if(isset($_POST['addoperator']) && ($_POST['addoperator']!=='')) { $name=strip_tags($_POST['addoperator']); $addyet = $mysqli->query("INSERT INTO `OPR_list` (`Name`) VALUES ('$name')"); header("Refresh:0"); } elseif(isset($_POST['deloperator']) && ($_POST['deloperator']!=='')) { $delid=strip_tags($_POST['deloperator']); $delyet = $mysqli->query("UPDATE `OPR_list` SET `Name`='REMOVED' WHERE N=$delid"); header("Refresh:0"); } else{} Echo "<center>Список операторов:<br>"; $result = $mysqli->query("SELECT * FROM `OPR_list` WHERE `Name`!='REMOVED'"); Echo '<table><tr><td><P><center> ID </center></td><td><center> Name </center></P></td></tr>'; do{ Echo '<tr>'; Echo '<td>'.$myrow['N'].'</td>'; Echo '<td>'.$myrow['Name'].'</td>'; Echo '</tr>'; }while ($myrow = mysqli_fetch_array($result)); Echo '</table></center><br>'; ?>
pribor.php
pribor.php
<?php session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); if($_SESSION['level'] < 127) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); require_once '../../core/baseinfo.php'; ?> <style type="text/css"> .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } </style> <a href="/admin/admin.php" class="linf">Назад</a> <center> <p> <div style="display: inline-block; margin-left: 0px; vertical-align: middle;"> <form method="POST" action=""> <label> Добавить новый прибор<br> </label> <input name="uname" type="text" placeholder="Введите наименование" required/><br> <input name="userial" type="text" placeholder="Введите серийный ключ" required/><br> <input name="uakey" type="text" placeholder="Введите ключ доступа" required/><br> <input name="ux" type="text" placeholder="Введите координату X" required/><br> <input name="uy" type="text" placeholder="Введите координату Y" required/><br> <input name="uidobj" type="text" placeholder="Введите ID объекта" required/><br> <input name="uidop" type="text" placeholder="Введите ID оператора" required/><br> <input type="submit" name="gotadd" value="Добавить"/><br> </form> </div> <div style="display: inline-block; margin-left: 45px; vertical-align: middle;"> <form method="POST" action=""> <label> Обновить данные<br> </label> <input name="updid" type="text" placeholder="Введите ID прибора" required/><br> <input name="updname" type="text" placeholder="Введите новое имя"/><br> <input name="updx" type="text" placeholder="Введите новую координату X"/><br> <input name="updy" type="text" placeholder="Введите новую координату Y"/><br> <input name="updobj" type="text" placeholder="Введите ID нового объекта"/><br> <input name="updop" type="text" placeholder="Введите ID нового оператора"/><br> <input type="submit" name="gotdel" value="Обновить"/><br> </form> </div> <div style="display: inline-block; margin-left: 45px; vertical-align: middle;"> <form method="POST" action=""> <label> Удалить прибор из базы<br> </label> <input name="udel" type="text" placeholder="Введите ID"/><br> <input type="submit" name="gotdel" value="Удалить"/><br> </form> </div> </p> </center> <? /* внесение нового устройства */ if(isset($_POST['uname']) && isset($_POST['userial']) && isset($_POST['uakey']) && isset($_POST['ux']) && isset($_POST['uy']) && isset($_POST['uidobj']) &&(isset($_POST['uidop'])) && ($_POST['uname'] !== '') && ($_POST['userial'] !== '') && ($_POST['uakey'] !== '') && ($_POST['ux'] !== '') && ($_POST['uy']!=='') && ($_POST['uidobj'] !=='') && ($_POST['uidop']!=='')) { $name=strip_tags($_POST['uname']); $serial=strip_tags($_POST['userial']); $akey=strip_tags($_POST['uakey']); $x=strip_tags($_POST['ux']); $y=strip_tags($_POST['uy']); $idobj=strip_tags($_POST['uidobj']); $opid=strip_tags($_POST['uidop']); $addyet = $mysqli->query("INSERT INTO `units_list` (`uName`,`Serial`,`Akey`,`OPid`,`x`,`y`,`IDob`) VALUES ('$name','$serial','$akey','$opid','$x','$y','$idobj')"); header("Refresh:0"); } /* удаление устройства */ elseif(isset($_POST['udel'])) { $delid=strip_tags($_POST['udel']); $delyet = $mysqli->query("UPDATE `units_list` SET `remove`='1' WHERE uNum=$delid"); header("Refresh:0"); } /* обновление информации о устройстве */ elseif (isset($_POST['updid']) && isset($_POST['updop']) && isset($_POST['updname']) && isset($_POST['updx']) && isset($_POST['updy']) && isset($_POST['updobj']) && ($_POST['updid'] !== '') && ($_POST['updname'] !== '') && ($_POST['updy'] !== '') && ($_POST['updobj']!=='') && ($_POST['updop']!=='')) { $updid=strip_tags($_POST['updid']); $updname=strip_tags($_POST['updname']); $updx=strip_tags($_POST['updx']); $updy=strip_tags($_POST['updy']); $updobj=strip_tags($_POST['updobj']); $updop=strip_tags($_POST['updop']); $addyet = $mysqli->query("UPDATE `units_list` SET `uName`='$updname',`x`='$updx',`y`='$updy',`IDob`='$updobj',`OPid`='$updop' WHERE `uNum`='$updid'"); header("Refresh:0"); } else{} Echo '<center><div class="absolute">Список приборов:<br>'; $result = $mysqli->query("SELECT * FROM `units_list`"); Echo '<center><table><tr><td><P><center> ID </center></td><td><center> Name </center></td><td><center> Serial </center></td><td><center> Access Key </center></td><td><center> Operator </center></td><td><center> Operator ID </center></td><td><center> X </center></td><td><center> Y </center></td><td><center> Object </center></td><td><center>Object ID</center></td><td><center>Removed</center></td></p></tr>'; do{ $objectt = $myrow['IDob']; $operators = $myrow['OPid']; $operator = $mysqli->query("SELECT `Name` FROM `OPR_list` WHERE `N`='$operators'"); $object = $mysqli->query("SELECT `NameOb` FROM `Objects` WHERE `NumOb`='$objectt'"); $objectt = mysqli_fetch_array($object); $operators = mysqli_fetch_array($operator); Echo '<tr>'; Echo '<td><center>'.$myrow['uNum'].'</center></td>'; Echo '<td><center>'.$myrow['uName'].'</center></td>'; Echo '<td><center>'.$myrow['Serial'].'</center></td>'; Echo '<td><center>'.$myrow['AKey'].'</center></td>'; Echo '<td><center>'.$operators['Name'].'</center></td>'; Echo '<td><center>'.$myrow['OPid'].'</td>'; Echo '<td><center>'.$myrow['x'].'</td>'; Echo '<td><center>'.$myrow['y'].'</td>'; Echo '<td><center>'.$objectt['NameOb'].'</td>'; Echo '<td><center>'.$myrow['IDob'].'</td>'; Echo '<td><center>'.$myrow['remove'].'</td>'; Echo '</tr>'; }while ($myrow = mysqli_fetch_array($result)); Echo "</table></center><br></div></center>"; ?>
sensors.php
sensors.php
<? session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); if($_SESSION['level'] < 2) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); require_once '../../core/baseinfo.php'; $result = $mysqli->query("SELECT `uNum`,`uName`,`Serial` FROM `Production`.`units_list` WHERE `remove` != 1"); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://code.jquery.com/jquery-latest.js"></script> <title> Add Sensor Page </title> <style type="text/css"> th{ text-align:center; } .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } input[type=number] { -moz-appearance: textfield; width: 4em; } input[type=number]::-webkit-inner-spin-button { display: none; } .notvalid { background-color:rgb(245, 211, 174); } #insert_form:focus-within input:valid { border-color: green; } #insert_form:focus-within input:invalid { border-color: red; } #insert_form:focus-within select:valid { border-color: green; } #insert_form:focus-within select:invalid { border-color: red; } #update_form:focus-within .changed { border-color:#aaf2e9; } input:read-only { background:none repeat 0 0 rgb(145, 145, 147); } </style> </head> <body> <a href="/admin/admin.php" class="linf">Назад</a> <!-- HEADER DIV --> <center><div style="text-align: left; display: table; border-top:4px double #000000; border-right:4px double #000000; border-bottom:4px double #000000; border-left:4px double #000000;"> <!-- ADD NEW DIV --> <div style=" text-align: left; padding: 5px;"> <form id="insert_form"> <p> <b>Устройство</b> <select id="unitid" class="new" name="unit_id" required> <option value="">---</option> <? $list = ''; while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { $list .= "<option value=".$row['uNum'].">".$row['uName']."(".$row['Serial'].") </option>"; } echo $list; unset($result); ?> </select></p> <div id="input_frame"> <table><tr><th>Название</th><th>Адрес сенсора</th><th>Краткое название</th><th>Заметка</th></tr> <tr> <td><input type="text" autocomplete="off" class="new" name="sensor" id="sensor_fullname" required></td> <td><input type="text" autocomplete="off" class="new" name="adr" id="fill_adr"></td> <td><input type="text" autocomplete="off" class="new" name="sensor_name" id="sensor_shortname" required></td> <td><input type="text" autocomplete="off" class="new" name="note" id="fill_note"></td> </tr> </table> </div> <br> <input type="button" onclick="insert_value()" name="insert_button" value="Добавить"><div id="text"> <br> </div> </form> </div> <div style=" text-align: left; border-top:2px dashed #000000; padding: 5px;"> <form id="update_form"> <? $actual_data = $mysqli->query("SELECT `id`,`unit_id`,`sensor`,`adr`,`timestamp`,`sensor_name`,`note` FROM `Production`.`sensors_adr`"); if($actual_data->num_rows) { echo '<table><tr><th>ID</th><th>ID Прибора</th><th>Название</th><th>Адрес</th><th>Дата-время</th><th>Краткое название</th><th>Заметка</th></tr>'; while($actual = mysqli_fetch_array($actual_data, MYSQLI_ASSOC)) { $search = '<option value='.$actual['unit_id'].'>'; $edit = '<option value='.$actual['unit_id'].' selected>'; $now = str_replace($search, $edit , $list); echo '<tr>'; echo '<td><input type="text" autocomplete="off" class="def" name="ID" readonly id="'.$actual['id'].'" value="'.$actual['id'].'"></td>'; //echo '<td><input type="number" autocomplete="off" class="def" name="unit_id" id="'.$actual['id'].'" value="'.$actual['unit_id'].'"></td>'; echo '<td><select class="def" name="unit_id" id="'.$actual['id'].'">'.$now.'</select></td>'; echo '<td><input type="text" autocomplete="off" class="def" name="sensor" id="'.$actual['id'].'" value="'.$actual['sensor'].'"></td>'; echo '<td><input type="text" autocomplete="off" class="def" name="adr" id="'.$actual['id'].'" value="'.$actual['adr'].'"></td>'; echo '<td><input type="text" autocomplete="off" class="def" name="timestamp" readonly id="'.$actual['id'].'" value="'.$actual['timestamp'].'"></td>'; echo '<td><input type="text" autocomplete="off" class="def" name="sensor_name" id="'.$actual['id'].'" value="'.$actual['sensor_name'].'"></td>'; echo '<td><input type="text" autocomplete="off" class="def" name="note" id="'.$actual['id'].'" value="'.$actual['note'].'"></td>'; echo '</tr>'; } } else { echo '<center><h3>Данных пока нет</h3></center>'; } ?> </table> <br> <button type="button" name="update_button" onclick="update_value()">Изменить</button> <button type="button" name="defualt_value_set" onclick="default_update_value()">Сбросить</button> <br> </form> </div></center> </body> </html> <script type="text/javascript"> /* Загрузка списка параметров прибора и заполнение форм, если среди параметров есть адрес датчиков */ var array_of_addr = []; $('#unitid').on('change', function() { $.get("../../core/backend.php","unit_addr_exist=" + $('#unitid').val(), function (back) { back = JSON.parse(back); if(back.error == 'true') { $('#sensor_fullname').replaceWith('<input type="text" autocomplete="off" class="new" name="sensor" id="sensor_fullname" required>'); } else { var options = '<select class="new" name="sensor" id="sensor_fullname" required><option value=""> --- </option>'; $(back.data).each(function(){ options += '<option value="' + $(this).attr('Type') + '">' + $(this).attr('Type') + '</option>'; array_of_addr[$(this).attr('Type')] = $(this).attr('Val'); }); options += '</select>'; $('#sensor_fullname').replaceWith(options); $('#sensor_fullname').prop('defaultValue', "").toggleClass('entered',true); return array_of_addr; } }); }); $('body').on('change','#sensor_fullname', function() { $('#fill_adr').val(array_of_addr[$('#sensor_fullname').val()]).toggleClass('entered',true); }); /* Нажатие на кнопку */ function default_update_value() { $('#update_form').find('.changed').each(function() { this.value = $(this).prop('defaultValue'); }); } function update_value() { var data = []; var id = 0; var name = ''; var value = 0; $('#update_form').find('.changed').each(function() { id = this.id; value = this.value; name = this.name; data[data.length] = [id,name,value]; }); if(data.lenght > 1) { $.post("../../core/backend.php", { update:data }); alert("Данные обновлены"); location.reload(); } } function insert_value() { var data = []; var name = ''; var value = 0; var validate = true; $('#insert_form').find('[required]').each(function() { if(this.value === '') { $(this).toggleClass('notvalid',true); validate = false; } else { $(this).toggleClass('notvalid',false); } }); if(validate) { $('#text').empty(); $('#insert_form').find('.entered').each(function() { value = this.value; name = this.name; data[data.length] = [name,value]; }); $.post("../../core/backend.php", { insert:data }); alert("Данные внесены"); location.reload(); } else { $('#text').html('Исправьте ошибки заполнения'); } } /* изменение класса для изменённых форм */ $('.new').on('change', function() { if($(this).prop('defaultValue') == $(this).val()) { $(this).toggleClass('entered',false); } else { $(this).toggleClass('entered',true); } }); $('.def').on('change', function() { if($(this).prop('defaultValue') == $(this).val()) { $(this).toggleClass('changed',false); } else { $(this).toggleClass('changed',true); } }); $('select[class=def]').each(function(index,ele) { var origvalue = $(this).val(), defaultvalue = $(this).prop('defaultValue'); if(!defaultvalue) { $(this).prop('defaultValue', origvalue); } }); </script>
simple.php
simple.php
<? session_start (); if (!$_SESSION['level']) die ( '<center><a href=/admin/index.php>Пройдите авторизацию</a><center>' ); if($_SESSION['level'] < 1) die ('<center><a href=/admin/index.php>Недостаточно полномочий</a><center>'); require_once '../../core/baseinfo.php'; ?> <style> td { text-indent: 5px; border-collapse: collapse; color: #500; border-top: 0px solid transparent; padding: 2px; text-align:left; } tr{text-indent: 1px;} input[id=newinp] { -moz-appearance: textfield; width: 4em; } input[id=newinp]::-webkit-inner-spin-button { display: none; } </style> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Внесение замера</title> <script src="http://code.jquery.com/jquery-latest.js"></script> <style type="text/css"> .bl { display: none;} .linf { border: 1px solid #333; /* Рамка */ display: inline-block; padding: 5px 15px; /* Поля */ text-decoration: none; /* Убираем подчёркивание */ color: #000; /* Цвет текста */ } .linf:hover { box-shadow: 0 0 5px rgba(0,0,0,0.3); /* Тень */ background: linear-gradient(to bottom, #fcfff4, #e9e9ce); /* Градиент */ color: #a00; } input[type=number] { -moz-appearance: textfield; width: 4em; } input[type=number]::-webkit-inner-spin-button { display: none; } input:valid { border-color: green; } input:invalid { border-color: red; } select:valid { border-color: green; } select:invalid { border-color: red; } </style> </head> <body> <center><div style="width: 600px; text-align: left;"> <div id="unitdiv"> Выберите устройство: <br> <select id="unitid" name="uid" required onchange="getparams();"> <option value="">---</option> <? $result = $mysqli->query("SELECT `uNum`,`uName`,`Serial` FROM `units_list`"); while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { echo "<option value=".$row['uNum'].">".$row['uName']."(".$row['Serial'].") </option>"; } ?> </select> </div> <form id="ratform"> <div id="objdiv" hidden="true"> <p> <tr><td>object</td> <td> <select name="object" required="true"> <option value="">---</option> <? $result = $mysqli->query("SELECT `NumOb`,`NameOb` FROM `objects`"); while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { echo "<option value=".$row['NumOb'].">".$row['NameOb']."</option>"; } ?> </select> </td> </tr> </p> </div> <div id="textpart" hidden="true"></div> </form> <button type="sumbit" hidden="true" id="suc"> Готово </button> <button type="button" hidden="true" id="res" onclick="reset();"> Сбросить </button> <div id="baddiv"></div> </div></center> </body> </html> <script type="text/javascript"> /* сброс формы */ function reset() { $('#unitid').attr('disabled', false); $('#baddiv').empty(); $('#textpart').empty(); $('select[name="object"]').val(""); $('#unitid').val(""); document.getElementById('suc').hidden = true; document.getElementById('res').hidden = true; document.getElementById('textpart').hidden = true; document.getElementById('objdiv').hidden = true; } /* форма стандартного набора данных */ function defpar() { $('#baddiv').empty(); $('#textpart').empty(); $('select[name="object"]').val(""); var altoptions = '<tr><td>x</td><td><input type="number" step="0.0001" autocomplete="off" name="x" required value="0"></td></tr>'; altoptions += '<tr><td>y</td><td><input type="number" step="0.0001" autocomplete="off" required name="y" value="0"></td></tr>'; altoptions += '<tr><td>temp</td><td><input type="number" step="0.0001" autocomplete="off" required name="temp"></td></tr>'; altoptions += '<tr><td>humidity</td><td><input type="number" step="0.0001" autocomplete="off" required name="humidity"></td></tr>'; altoptions += '<tr><td>pressure</td><td><input type="number" step="0.0001" autocomplete="off" required name="pressure"></td></tr>'; altoptions += '<tr><td>date</td><td><input type="date" min="2019-01-24" required autocomplete="off" name="date"></td></tr>'; altoptions += '<tr><td>time</td><td><input type="time" autocomplete="off" required name="time"></td></tr>'; $('#textpart').html(altoptions); document.getElementById('suc').hidden = false; document.getElementById('res').hidden = false; document.getElementById('textpart').hidden = false; document.getElementById('objdiv').hidden = false; } /* создание форм параметров устройства */ function getparams() { var forma = document.getElementById('unitid').value; if(forma != '') { $('#unitid').attr('disabled', true); var url = '../../core/backend.php'; $.get(url,"unitnow=" + forma,function (result) { if(result.back == 'error') { $('#baddiv').html('<p><h1> Нет данных </h1></p><p> Внести стандартный набор параметров? </p><p> <button id="yesdef" type="button" onclick="defpar();">Да</button> <button id="nodef" type="button" onclick="reset();">Нет</button></p>'); } else { var options = '<tr><td>x</td><td><input type="number" step="0.0001" autocomplete="off" name="x" value="0"></td></tr>'; options += '<tr><td>y</td><td><input type="number" step="0.0001" autocomplete="off" name="y" value="0"></td></tr>'; $(result.sens).each(function() { if($(this).attr('title') == 'date' || $(this).attr('title') == 'RTC_date') { options += '<tr><td>' + $(this).attr('title') + '</td><td><input type="date" min="2019-01-24" autocomplete="off" required name="' + $(this).attr('title') + '"></td></tr>'; } else if($(this).attr('title') == 'time' || $(this).attr('title') == 'RTC_time') { options += '<tr><td>' + $(this).attr('title') + '</td><td><input type="time" autocomplete="off" required name="' + $(this).attr('title') + '"></td></tr>'; } else { options += '<tr><td>' + $(this).attr('title') + '</td><td><input type="number" step="0.0001" autocomplete="off" required name="' + $(this).attr('title') + '"></td></tr>'; } }); $('#textpart').html(options); document.getElementById('suc').hidden = false; document.getElementById('res').hidden = false; document.getElementById('textpart').hidden = false; document.getElementById('objdiv').hidden = false; } },"json" ); } else { $('#textpart').empty(); } } /* проверка верности заполнения форм и формирование JSON с передачей скрипту внесения данных */ $('#suc').on('click', function (form) { form.preventDefault(); var form_box = document.getElementById('ratform'); var unit = document.getElementById('unitid'); $('#unitid').attr('disabled', false); var arr = $(this).prev('form').serializeArray(); $('#unitid').attr('disabled', true); var new_obj = {}; $.each(arr, function(i, obj) { if(obj.value != '') { new_obj[obj.name] = obj.value; } }); if(form_box.checkValidity() && unit.checkValidity()) { $.ajax({ url:"../../core/jsonadd.php", dataType: 'json', type: 'POST', data: {fromtable: '[{"AKey":"'+unit.value+'"}][' + JSON.stringify(new_obj) + ']' } , async: true}); reset(); } else { alert('Пожалуйста, заполните все поля корректно.'); } }); </script>