Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //require_once('utils2.php');
- function get_users($filename) {
- $i=0;
- $lines_us = file($filename);
- foreach($lines_us as $idx => $line) {
- if (preg_match('/^user:([\A-Za-z0-9А-Яа-я]+)/', $line, $matches)) {
- $result[$i]['user'] = $matches[1];
- $u = true;
- continue;
- }
- if ($u && preg_match('/^pass:([\А-Яа-яA-Za-z0-9]+)/', $line, $matches)) {
- $result[$i]['pass'] = $matches[1];
- $u = false;
- $i++;
- }
- }
- return $result;
- }
- function check_users($array,$user,$pass){
- foreach($array as $idx => $str) {
- if ($str['user'] == $user && $str['pass'] == $pass)
- return true;
- }
- return false;
- }
- //функция для работы с БД
- function db(){
- $db_host = 'localhost';
- $db_name = 'db1';
- $db_username = 'root';
- $db_password = '';
- $db_conn_str = "mysql:host=$db_host;dbname=$db_name";
- $dbh = new PDO($db_conn_str, $db_username, $db_password, array(
- PDO::ATTR_AUTOCOMMIT => false,
- PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
- PDO::ATTR_CASE => PDO::CASE_LOWER,
- PDO::MYSQL_ATTR_INIT_COMMAND => 'set names cp1251',
- ));
- return $dbh;
- }//db
- //функция возвращает всю информацию о всех имеющихся студентах
- function getStudents(){
- if (is_dir("labs")) {
- $dir='labs';
- $i=0;
- $files_and_dirs = scandir($dir);}
- foreach ($files_and_dirs as $idx=>$dir_or_file){
- if (is_dir("labs/".$dir_or_file)&&$dir_or_file!='.'&&$dir_or_file!='..'){
- $dirs[$i]=$dir_or_file;
- $i++;
- //echo $dir_or_file;
- }
- }
- return $dirs;
- }//getStudents()
- function getStudentResults($login){
- // $students[$id]['name']=$login;
- $i=0;
- $labs=[];
- $get=[];
- $sql=false;
- $lines = file("labs/$login/".$login.'.txt');
- foreach($lines as $idx => $line) {
- if (preg_match('/^Лабораторная ([\a-zA-Z0-9#]+):([\sА-Яа-яA-Za-z0-9#]+)/u', $line, $matches)) {
- if ($sql) {$sql=false;$i++;}
- $get[$i]['lab']=trim($matches[1]);
- $get[$i]['name']=trim($matches[2]);
- }
- if (preg_match('/^Задание №([\0-9#]+)/', $line, $matches)) {
- $get[$i]['task']=$matches[1];
- $get[$i]['date']=$lines[$idx+1];
- $get[$i]['status']=$lines[$idx+2];
- }
- if (preg_match('/^\s*select/', $line)) $sql=true;
- //if ($sql&&preg_match('/^Лабораторная №/',$line)) {$sql=false;$i++;};
- if ($sql) $get[$i]['sql'].=$line;
- }
- for ($i=0;$i<sizeof($get);$i++){
- if ($get[$i]['name']=='') $labs[$i]=$get[$i]['lab'];
- else $labs[$i]=$get[$i]['name'];
- }
- if ($labs!=NULL) sort($labs);
- $labs=array_unique($labs);
- $student['labs']=$labs;
- $student['lab_with_tasks']=$get;
- return $student;
- }//getStudentResults
- //возвращает настройки
- function getSettings(){
- require_once('settings.php');
- $s=new settings;
- $s->get_file("settings.txt");
- $color_sovpav=$s->color_sovpav;
- $color_your=$s->color_your;
- $color_true=$s->color_true;
- $max_count_sovpav=$s->max_count_sovpav;
- $settings['color_matched']=$color_sovpav;
- $settings['color_wrong']=$color_your;
- $settings['color_right']=$color_true;
- $settings['max_count_matched']=$max_count_sovpav;
- $settings['width_query']=$s->width_query;
- $settings['height_query']=$s->height_query;
- return $settings;
- }
- //Возвращает данные для compareRows
- function checkTask(){
- $dbh=db();
- $rows[1]=getRows($dbh,$_REQUEST['query']);
- $rows[2]=getRows($dbh,get_right_sql($_REQUEST['lab'],$_REQUEST['task']));
- //$rows[1]=getRows($dbh,"select * from countries");
- //$rows[2]=getRows($dbh,"select * from countries");
- /*$rows[1]=getRows($dbh,"select P.PRODUCT_ID,
- P.PRODUCT_NAME,
- P.WARRANTY_PERIOD as \"WARRANTY_MONTHS\",
- P.LIST_PRICE,
- P.CATALOG_URL
- from PRODUCT_INFORMATION P
- where P.PRODUCT_NAME rlike '^.*([0-9]+)\s*(mb|gb).*$' and
- P.PRODUCT_NAME not rlike '^hd' and
- P.PRODUCT_DESCRIPTION not rlike '^.{0,30}(disk|hard|drive)'
- order by P.LIST_PRICE
- ;
- ");
- $rows[2]=getRows($dbh,"select P.PRODUCT_ID,
- P.PRODUCT_NAME,
- P.WARRANTY_PERIOD as \"WARRANTY_MONTHS\",
- P.LIST_PRICE,
- P.CATALOG_URL
- from PRODUCT_INFORMATION P
- where P.PRODUCT_NAME rlike '^.*([0-9]+)\s*(mb|gb).*$' and
- P.PRODUCT_NAME not rlike '^hd' and
- P.PRODUCT_DESCRIPTION not rlike '^.{0,30}(disk|hard|drive)'
- order by P.LIST_PRICE
- ;
- ");*/
- //$r=array_pop($rows[1]['rows']);
- //$r=array_pop($rows[1]['rows']);
- /*$r=array_pop($rows[1]['rows']);
- $r=array_pop($rows[1]['rows']);
- $r=array_pop($rows[1]['rows']);
- $r=array_pop($rows[1]['rows']);*/
- /*$r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);
- $r=array_pop($rows[2]['rows']);*/
- // $r=array_pop($rows[2]['rows']);
- // $r=array_pop($rows[2]['rows']);
- // $r=array_pop($rows[2]['rows']);
- //$rows[1]['columns'][0]='code';
- // $rows[1]['rows'][3][1]='wrong';
- //$rows[1]['rows']=array_slice($rows[1]['rows'],0,-1);
- return compareRows($rows[1],$rows[2]);
- }//checkTask
- $act=$_REQUEST['action'];
- //$act_post=$_POST['action'];
- if ($act=='getAuth'){
- $arr_us = get_users('users.txt');
- session_start();
- if (check_users($arr_us, $_REQUEST['login'], $_REQUEST['password'])) {
- $_SESSION['login']=$_REQUEST['login'];
- echo(json_encode(true));
- }
- else {
- unset($_SESSION['login']);
- echo(json_encode(false));
- }
- }
- if ($act=='getLabs'){//загружает меню лабораторных и заданий
- require_once('utils2.php');
- $arr = readLabs();
- //var_dump($labs);
- echo(json_encode($arr));
- }
- if ($act=='getStudents'){//Cтроит список студентов
- echo(json_encode(getStudents()));
- }
- //Cтроит список лабораторных заданного студента по его номеру
- //Cтроит таблицу лабораторной по ее номеру
- if ($act=='getStudentResults'){
- echo(json_encode(getStudentResults($_REQUEST['name'])));
- }
- if ($act=='right_otvet'){
- require_once('utils2.php');
- $dbh=db();
- echo(json_encode(getRows($dbh,get_right_sql($_REQUEST['lab'],$_REQUEST['task']))));
- }
- if ($act=='your_otvet'){
- require_once('utils2.php');
- $dbh=db();
- echo(json_encode(getRows($dbh,$_REQUEST['query'])));
- }
- if ($act=='checkTask'){
- require_once('utils2.php');
- $dbh=db();
- $params=checkTask();
- echo(json_encode($params));
- }
- if ($act=='getSettings'){
- require_once('settings.php');
- echo(json_encode(getSettings()));
- }
- if ($act=='saveTask'){
- require_once('utils2.php');
- require_once('settings.php');
- $params=checkTask();
- $status=$params['message'];
- require_once('write.php');
- echo(json_encode($params));
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement