Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: php сервер команд(нужна конструктивная критика и добрые наставления)
Форумы портала PHP.SU » » HTTP и PHP » php сервер команд(нужна конструктивная критика и добрые наставления)

Страниц (1): [1]
 

1. Zuenf - 26 Января, 2015 - 06:56:01 - перейти к сообщению
Написал скорее всего еще один велосипед, но тщательно разобрав и поняв как правильно, можно чему-то научиться.
С этой целью и пишу сюда.

Мне нужен был функционал комманд c поддержкой ajax.
Т.е. отправляешь скрипту запрос с параметром command, скрипт ее выполяет и возвращяет результат.
Оформил я это так:

PHP:
скопировать код в буфер обмена
  1.  
  2. class AppCommands{
  3.         private $prefix;
  4.  
  5.         function __construct($prefix = 'command'){
  6.                 $this->prefix = $prefix;
  7.         }
  8.  
  9.         public function run_command($command, $data = array()){
  10.                 $command = $this->set_command_name($command);
  11.                 $command_result = false;
  12.                
  13.                 if(function_exists($command))
  14.                         $command_result = $command($data);
  15.  
  16.                 return $command_result;
  17.         }
  18.        
  19.         public function response($data, $ajax = true, $url = null){
  20.                 session_start();
  21.                 $_SESSION['command_response'] = $data;
  22.  
  23.                 if($ajax) die(json_encode($data));
  24.                
  25.                 if(empty($url))
  26.                         $url = $_SERVER['HTTP_REFERER'];
  27.                
  28.                 if($url != $_SERVER['SCRIPT_URI'])
  29.                         header('Location: '.$url);
  30.         }
  31.        
  32.         private function set_command_name($command){
  33.                 if(!preg_match('/^'.$this->prefix.'_./',$command))
  34.                         $command = $this->prefix.'_'.$command;
  35.                
  36.                 return $command;
  37.         }
  38. }
  39.  
  40. $ac = new AppCommands();
  41.  
  42. if(isset($_POST['command'])){
  43.         echo 'command';
  44.         $command_result = $ac->run_command($_POST['command'], $_POST);
  45.         $is_ajax = filter_input(INPUT_POST, 'ajax', FILTER_VALIDATE_BOOLEAN);
  46.         $ac->response($command_result, $is_ajax);
  47. }
  48.  
  49. /* Пример комманды */
  50.  
  51. function command_login($data){
  52.         $login = $data['login'];
  53.         $password = $data['password'];
  54.         if($login == 'Vasya' && md5($password) == md5('12345')){
  55.                 session_start();
  56.                
  57.                 $_SESSION['user'] = 'Vasya';
  58.  
  59.                 return 'logged';
  60.         }
  61.  
  62.         return 'login error';
  63. }
  64.  


Прошу поведать мне обо всем, что касается этого скрипта.

Спасибо Радость

 

Powered by ExBB FM 1.0 RC1