# AddDefaultCharset utf-8 RewriteEngine on RewriteBase / # RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # /employee/ RewriteRule ^([Az]*)\/$ ?type=page&controller=$1&action=main [L,QSA] # RewriteRule ^([Az]*)\/([Az]*)\/$ ?type=page&controller=$1&action=$2 [L,QSA] #Ajax RewriteRule ^ajax\/([Az]*)\/([Az]*)\/$ ?type=ajax&controller=$1&action=$2 [L,QSA] ErrorDocument 404 /404.html
<? session_start(); // $type = $_REQUEST['type']; // include $_SERVER['DOCUMENT_ROOT']. "/config.php"; // include $_SERVER['DOCUMENT_ROOT']."/model/functions.php"; // include $_SERVER['DOCUMENT_ROOT']."/model/db.php"; // include $_SERVER['DOCUMENT_ROOT']."/model/reestr.php"; // r::g('Controller_Main')->setRequest($_REQUEST); if ($type == 'ajax') { r::g('Controller_Main')->ajax($_REQUEST['controller'], $_REQUEST['action'], $_REQUEST['send']); } else { r::g('Controller_Main')->page($_REQUEST['controller'], $_REQUEST['action'],$_REQUEST); }
<?php function autoload($class_name) { $class_name = mb_strtolower($class_name); $arPath = explode("_", $class_name); if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/" .implode("/", $arPath) . ".php")) { include_once($_SERVER['DOCUMENT_ROOT'] . "/" .implode("/", $arPath) . ".php"); }else{ // r::g('Controller_main')->error404(); die(); } } // spl_autoload_register('autoload');
// , function pr() { $args = func_get_args(); foreach ($args as $item) { echo "<pre>"; print_r($item); echo "</pre>"; } } // function dlog($name,$text){ if(!is_string($text)){ $text = print_r($text,true); } db::insertArr('log',array( 'name'=>$name, 'val'=>$text ),1); }
<? class db{ // private static $connect = null; // id private static $lastId = 0; // private static $log = 0; // static function query($query,$skipLog=0){ if(self::$connect==null){ self::$connect = new mysqli(sql_host, sql_user, sql_pass, sql_table); if(self::$connect->connect_errno){ die(' '); } } // , id , self::$lastId = 0; $res = self::$connect->query($query); $lastId = self::$connect->insert_id; // , , if(!$skipLog && self::$log){ dlog('query',$query); } self::$lastId = $lastId; return $res; } static function insertArr($table,$arr,$skipLog=0){ $sql = "INSERT INTO `$table` "; // foreach($arr as $key=>$val){ $val = self::$connect->mysqli_escape_string($val); } $sql .= "(`".implode("`,`",array_keys($arr))."`) VALUES ('".implode("','",array_values($arr))."')"; self::query($sql,$skipLog); return self::insertId(); } // id static function insertId(){ return self::$lastId; } static function insert($query){ self::query($query); // id return self::insertId(); } static function selectCell($query){ $row = self::selectRow($query); if($row){ return reset($row); } } static function selectRow($query){ $res = self::select($query); if($res){ return reset($res); } } static function select($query){ $res = self::query($query); $mas = array(); if($res) { while ($row = $res->fetch_assoc()){ if($row['ARRAY_KEY']){ $key = $row['ARRAY_KEY']; unset($row['ARRAY_KEY']); $mas[$key]=$row; }else{ $mas[]=$row; } } return $mas; } } static function update($table,$mass,$id){ $sql = "UPDATE `$table` SET "; foreach($mass as $key=>$it){ $it = self::$connect->mysqli_escape_string($it); $sql .= " $key='$it',"; } $sql = substr($sql, 0,-1); $sql .= " where id = $id"; return self::query($sql); } }
class db { protected static $connect = null; static function getConnect(){ if(self::connect == null){ require($_SERVER['DOCUMENT_ROOT'] . '/libs/DbSimple/Generic.php'); self::$connect = DbSimple_Generic::connect("mysql://" . sql_user . ":" . sql_pass . "@" . sql_host . "/" . sql_table); if(!self::$connect){ die(" "); } self::$connect->query("SET NAMES UTF8"); } return self::$connect; } // query static function query() { $res = call_user_func_array(array(self::getConnect(), 'query'), func_get_args()); return $res; } // select static function select() { $res = call_user_func_array(array(self::getConnect(), 'select'), func_get_args()); return $res; } // static function __callStatic($name, $arguments) { if(method_exists(self, $name)){ return call_user_func_array(array(self, $name), $arguments); }else{ return call_user_func_array(array(self::getConnect(), $name), func_get_args()); } } }
r::g(" ")
<? // class r { // protected static $instance = array();// // static function g($name){ if(self::$instance[$name]){ return self::$instance[$name]; }else{ // return self::add($name, new $name() ); } } // static function add($name,$val){ return self::$instance[$name] = $val; } }
<?php class controller_base{ function view($name,$args=null,$isBase=0){ ob_start(); if($isBase){ $tpl = $_SERVER['DOCUMENT_ROOT']. "/view/base/{$name}.php"; }else{ // $class = explode("_",get_class($this)); $tpl = $_SERVER['DOCUMENT_ROOT']. "/view/{$class[1]}/{$name}.php"; } if(file_exists($tpl)){ if($args){ // , extract($args); } include $tpl; }else{ echo "no tpl {$class[1]}/{$name}"; } return ob_get_clean(); }
private static $title = ''; function getTitle(){ if(!self::$title){ // return title; } return self::$title; } function setTitle($title){ self::$title = $title; }
// private static $request = null; function setRequest($param){ self::$request = $param; } function getRequest(){ return self::$request; }
class Controller_main extends Controller_base{ function __construct(){ $this->model = r::g('Model_main'); }
function page($controller,$action,$param){ // ( ) if(!$controller){ $controller = 'main'; } // main if(!$action){ $action = 'main'; } $method_name = "page_".$action; $controller_name = 'Controller_'.$controller; if(method_exists(r::g($controller_name), $method_name)){ // ob_start(); r::g($controller_name)->{$method_name}($param); $html = ob_get_clean(); // echo $this->view('page',array( 'html' => $html, 'title' => $this->getTitle() )); }else{ // 404 $this->error404(); } }
function page_main($param){ echo $this->view('main'); }
<html> <head> <title> <?= $title ?> </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="//ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <script src="/s/js/base.js"></script> <script src="/s/js/main.js"></script> <script src="/s/js/employee.js"></script> <link href="/s/css/index.css" rel="stylesheet"> </head> <body> <div class="menu"> <?= $this->widget_menu() ?> </div> <?= $html ?> </body> </html>
function widget_menu(){ // , , $request = $this->getRequest(); // , , $menu = $this->model->getMenu($request['controller'],$request['action']); // return $this->view('menu',[ 'list'=>$menu ]); }
function ajax($controller,$action,$send){ $method_name = "ajax_".$action; $controller_name = 'Controller_'.$controller; if(method_exists(r::g($controller_name), $method_name)){ $res = r::g($controller_name)->$method_name($send); if($res){ echo "<ja>" . json_encode($res) . "</ja>"; } } }
function ajax_add(){ echo $this->widgetAdd(); return ['status'=>1]; }
function page_add(){ $this->setTitle(' '); echo $this->view('page_add',[ 'html' => $this->widgetAdd() ]); }
function widgetAdd(){ return $this->view('add',[ 'divisions'=>$this->model->getDivisions() ]); }
function base(){ this.post = function(method,send,callback){ var controller = this.url ; var url = "/ajax/"+controller+"/"+method+"/"; return $.post(url,{ send : send },function (re) { var res = re.split('<ja>'); if (res[1] != undefined) { var text = res[0]; res = res[1].split('</ja>'); text += res[1]; re = text; var mas = $.parseJSON(res[0]); } else { var mas = {}; } if (typeof (callback) == 'function') { callback(re, mas) } }) } this.createPop = function(title, html) {} } }base = new base();
this.createPop = function(title, html) { // , jqary var $win = $("<div/>", { class: 'Pop' }); // box c var $box = $("<div/>", { class: 'winBox' }); // , var $top = $("<div/>", { class: "winTop" }); // var $title = $('<div/>', { class: "winTitle", html: title }); // $top.append($title); // , - var $close = $("<div/>", { class: 'winClose', html: "x" }); $top.append($close); // - - $close.on('click', function () { $win.remove(); }); // $win.close = function () { $win.remove(); } // null, , if (html == null) { // , html = "<div class='help'> </div>"; } // $box.html(html); // $win.append($top); $win.append($box); // , $win.update = function (html) { $box.html(html); } //, if ($('.BoxPop').length == 0) { // - $('body').append($('<div/>', { class: 'BoxPop' })); } // , $('.BoxPop').append($win); // return $win; }
function employee(){ // this.url = "employee"; // var self = this; this.add = function(){ var $win = self.createPop(' ',null); self.post('add',{},function(re){ $win.update(re); }) } } employee.prototype = base; employee = new employee();
Deny from all
Source: https://habr.com/ru/post/321982/
All Articles