Advertisement
Guest User

Untitled

a guest
Jan 29th, 2016
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 11.18 KB | None | 0 0
  1. <?php
  2.     class session {
  3.         var $sessID='';
  4.         var $cookies=0;
  5.         var $keel="";
  6.  
  7.         function session($sID="") {
  8.             if(isset($sID)) $this->sessID=$sID;
  9.  
  10.             global $login,$HTTP_COOKIE_VARS,$HTTP_GET_VARS,$logout;
  11.  
  12.             if($this->cookies) {
  13.                 if(sizeof($HTTP_COOKIE_VARS)>0) {
  14.                     if(in_array("sessID",$HTTP_COOKIE_VARS)!=-1) {
  15.                         $this->sessID=$HTTP_COOKIE_VARS["sessID"];
  16.                     //echo $HTTP_COOKIE_VARS["sessID"];
  17.                     }
  18.                 }
  19.             } else {
  20.                 if(isset($HTTP_GET_VARS["sessID"])) {
  21.                     $this->sessID=$HTTP_GET_VARS["sessID"];
  22.                     //echo $HTTP_COOKIE_VARS["sessID"];
  23.                 }
  24.             }
  25.  
  26.             if($logout==1) {
  27.                 $this->logout_sess();
  28.             }
  29.  
  30.  
  31.             if($login==1) {
  32.                 $this->login();
  33.             }
  34.  
  35.             if($this->sessID!='') {
  36.                 $this->update_sess();
  37.             } else {
  38.                 $this->new_sess();
  39.             }
  40.             define("_sessID",$this->sessID);
  41.             define("_keeeel",$this->keel);
  42.         }
  43.  
  44.         function new_sess($loc=0) {
  45.             global $user,$db_handler;
  46.             $token=md5(microtime());
  47.             $expires=time()+3600;
  48.             $exp=date("Y-m-d H:i:s", $expires);
  49.             mysqli_query($db_handler, "INSERT INTO session (cookie, in_time, out_time, last_ip, ipname) VALUES ('".$token."', NOW(), '".$exp."', '".$_SERVER["REMOTE_ADDR"]."', '".gethostbyaddr($_SERVER["REMOTE_ADDR"])."')") or die(mysqli_error($db_handler));
  50.             $this->sessID=$token;
  51.             $this->make_cookie("sessID",$token,time()+3600,$loc);
  52.  
  53.             $user='';
  54.             log_("new_session","_");
  55.         }
  56.  
  57.         function get_user1($user_id) {
  58.             global $db_handler;
  59.             $tmp="Array (";
  60.             $query="SELECT id,usernim,mname,eomap FROM user ".
  61.                     "WHERE id='".$user_id."'";
  62.  
  63.             $result=mysqli_query($db_handler, $query) or die(mysqli_error($db_handler));
  64.             if($rida=mysqli_fetch_array($result, MYSQLI_ASSOC)) {
  65.                 $tmp.="\"id\" => \"".$rida["id"]."\",\"usern\"=>\"".$rida["usernim"]."\",\"name\"=>\"".$rida["mname"]."\",\"eomap\"=>\"".$rida["eomap"]."\"\n";
  66.                 mysqli_free_result($result);
  67.             }
  68.             else
  69.                 $tmp.="\"id\" => \"0\",\"usern\"=>\"kylastaja\",\"name\"=>\"kylastaja\",\"eomap\"=>\"0\"\n";
  70.             $tmp.=")";
  71.  
  72.             return $tmp;
  73.         }
  74.  
  75.         function get_mods($user_id) {
  76.             global $db_handler;
  77.             $tmp="Array (";
  78.             $rghts=Array();
  79.             $query="SELECT DISTINCT t1.name,t1.disp_name,t1.disp_desc ".
  80.                     "FROM mods AS t1 LEFT JOIN user_mods AS t2 ON t1.id=t2.mods_id ".
  81.                     "WHERE t2.user_id='".$user_id."' OR t1.name='"._default_mod."' ORDER BY t2.seq";
  82.  
  83.             $result=mysqli_query($db_handler, $query) or die(mysqli_error($db_handler));
  84.             $veel="";
  85.             while($rida=mysqli_fetch_array($result, MYSQLI_ASSOC)) {
  86.                 $tmp.=$veel."\"".$rida["name"]."\" => Array(\"disp_name\"=>\"".$rida["disp_name"]."\",".
  87.                     "\"disp_desc\"=>\"".$rida["disp_desc"]."\")\n";
  88.                 $rghts[$rida["name"]]=Array("disp_name"=>$rida["disp_name"],"disp_desc"=>$rida["disp_desc"]);
  89.                 $veel=",";
  90.             }
  91.             $tmp.=")";
  92.             mysqli_free_result($result);
  93.             return $tmp;
  94.         }
  95.  
  96.         function get_rights($user_id) {
  97.             global $db_handler;
  98.             $tmp="Array (";
  99.             $query="SELECT DISTINCT ".
  100.                     "t6.seq,t6.name".$this->keel." as grupp,t5.size,t5.alpha,t5.layer_grupp".$this->keel." AS layer_grupp,t5.layer_grupp_nimetus".$this->keel." AS layer_grupp_nimetus,t5.filename,t5.table_name,t5.numpict,t5.key,t5.value,t5.default,".
  101.                     "IF(t5.have_nim=1,t5.nim,'') AS nim,t3.layer_id,t5.common,t5.pict,t5.minscale,t5.maxscale,".
  102.                     "t5.color,t5.filled,t5.fillcolor,t5.name".$this->keel." AS layer_name,t5.nimetus,t5.tyyp,t4.name ".
  103.                     "FROM user AS t1 LEFT JOIN user_in_group AS t2 ON t1.id=t2.user_id ".
  104.                     "LEFT JOIN user_rights AS t3 ON ".
  105.                     "((ISNULL(t3.user_id) AND t2.group_id=t3.group_id) ".
  106.                     "OR (ISNULL(t3.group_id) AND t1.id=t3.user_id)) ".
  107.                     "LEFT JOIN rights AS t4 ON t3.rights&t4.value!=0 ".
  108.                     "LEFT JOIN layers AS t5 ON t3.layer_id=t5.id ".
  109.                     "LEFT JOIN layers_group AS t6 ON t5.group_id=t6.id ".
  110.                     "WHERE t1.id=$user_id ORDER BY t6.seq,t5.seq DESC,t3.layer_id,t4.value;";
  111.  
  112.             //echo $query;
  113.             $result=mysqli_query($db_handler, $query) or die(mysqli_error($db_handler));
  114.             $veel="";
  115.             $curr_lay=-1;
  116.             $user_rights=Array();
  117.             while($rida=mysqli_fetch_assoc($result)) {
  118.                 if($rida["layer_id"]=="") continue;
  119.                 if($rida["layer_id"]!=$curr_lay) {
  120.                     if($tmp!="Array (") {
  121.                         $tmp.=")\n";
  122.                     }
  123.                     $tmp.=$veel."\"".$rida["layer_id"]."\"=>Array (\"numpict\"=>".$rida["numpict"].",\"name\"=>\"".$rida["layer_name"]."\",\"nimetus\"=>\"".$rida["nimetus"]."\",\"tyyp\"=>\"".$rida["tyyp"]."\"".
  124.                         ",\"color\"=>\"".$rida["color"]."\",\"filled\"=>\"".$rida["filled"]."\",".
  125.                         "\"fillcolor\"=>\"".$rida["fillcolor"]."\",\"pict\"=>\"".$rida["pict"]."\",".
  126.                         "\"nim\"=>\"".$rida["nim"]."\",\"default\"=>\"".$rida["default"]."\",".
  127.                         "\"grupp\"=>\"".$rida["grupp"]."\",\"common\"=>\"".$rida["common"]."\",".
  128.                         "\"table\"=>\"".$rida["table_name"]."\",\"key\"=>\"".$rida["key"]."\",".
  129.                         "\"filename\"=>\"".$rida["filename"]."\",".
  130.                         "\"layer_grupp_nimetus\"=>\"".$rida["layer_grupp_nimetus"]."\",".
  131.                         "\"minscale\"=>\"".$rida["minscale"]."\",".
  132.                         "\"maxscale\"=>\"".$rida["maxscale"]."\",".
  133.                         "\"size\"=>\"".$rida["size"]."\",".
  134.                         "\"seq\"=>\"".$rida["seq"]."\",".
  135.                         "\"alpha\"=>\"".$rida["alpha"]."\",".
  136.                         //"\"value\"=>\"".$rida["value"]."\",\"layer_grupp\"=>\"".$rida["layer_grupp"]."\")\n";
  137.                         "\"value\"=>\"".$rida["value"]."\",\"layer_grupp\"=>\"".$rida["layer_grupp"]."\"";
  138.                     $veel=",";
  139.                     $user_rights[$rida["layer_id"]]=Array("numpict"=>$rida["numpict"],"name"=>$rida["layer_name"],"nimetus"=>$rida["nimetus"],"tyyp"=>$rida["tyyp"],"color"=>$rida["color"],"filled"=>$rida["filled"],"fillcolor"=>$rida["fillcolor"],"pict"=>$rida["pict"],"nim"=>$rida["nim"],"default"=>$rida["default"],"grupp"=>$rida["grupp"],"common"=>$rida["common"],"table"=>$rida["table_name"],"key"=>$rida["key"],"value"=>$rida["value"],"layer_grupp"=>$rida["layer_grupp"]);
  140.                     $curr_lay=$rida["layer_id"];
  141.                     $s=0;
  142.                 }
  143.                 $tmp.=",\"".$s."\"=>\"".$rida["name"]."\"";
  144.                 $user_rights[$curr_lay][$s++]=$rida["name"];
  145.             }
  146.  
  147.             if($tmp!="Array (") {
  148.                 $tmp.=")\n";
  149.             }
  150.  
  151.             $tmp.=")";
  152.             mysqli_free_result($result);
  153.             return $tmp;
  154.         }
  155.  
  156.         function var_dump($mis) {
  157.             ob_start();
  158.             var_dump($mis);
  159.             $cont=ob_get_contents();
  160.             ob_end_clean();
  161.             return $cont;
  162.         }
  163.  
  164.         function make_cookie($name,$value,$time,$loc=0) {
  165.            
  166.             global $QUERY_STRING, $db_handler, $user;
  167.             if($this->cookies) {
  168.                 setcookie($name,$value,$time);
  169.             } else {
  170.                 $query="SELECT t2.*,t1.id AS sess FROM session AS t1 ".
  171.                         "LEFT JOIN user AS t2 ON t1.user=t2.id ".
  172.                         "WHERE t1.last_ip='".$_SERVER["REMOTE_ADDR"]."' ".
  173.                         "AND t1.cookie='".$value."' AND t1.out_time>NOW()";
  174.  
  175.                 $result=mysqli_query($db_handler,$query) or die(mysqli_error($db_handler));
  176.                 if($rida=mysqli_fetch_assoc($result)) {
  177.                     //define("_asutus_id",$rida["asutus_id"]);
  178.                     $user_id=$rida["id"];
  179.                     $mods_text=$this->get_mods($user_id);
  180.                     $user1_text=$this->get_user1($user_id);
  181.                     $fl=fopen("tmp/$value.inc","w+");
  182.                     fwrite($fl,"<?\n");
  183.                     fwrite($fl,"\$GLOBALS[\"mod_rights\"]=".$mods_text.";\r\n");
  184.                     fwrite($fl,"\$GLOBALS[\"user1\"]=".$user1_text.";\r\n");
  185.                     fwrite($fl,"?>\n");
  186.                     fclose($fl);
  187.  
  188.                     $fl=fopen("tmp/".$value."_1.inc","w");
  189.                     fwrite($fl,"<?\n");
  190.                     fwrite($fl,"\$GLOBALS[\"tooted\"]=Array();\r\n");
  191.                     fwrite($fl,"?>\n");
  192.                     fclose($fl);
  193.                     //$query=mysql_query("UPDATE session SET rights='$rights_text',mods='$mods_text' WHERE id=".$rida["sess"]) or die(mysql_error());
  194.                     mysqli_free_result($result);
  195.                 }
  196.                 $qry_str=preg_replace("/sessID=[0-9a-f]{32,32}/i","",$QUERY_STRING);
  197. //              if(isset($user["user_id"])){
  198.                 Header("Location: index.php?sessID=".$value."&".$qry_str);
  199. //              }
  200.  
  201.             }
  202.         }
  203.  
  204.         function update_sess($sess="") {
  205.             global $db_handler,$tooted,$user_rights,$mod_rights,$HTTP_GET_VARS;
  206.  
  207.             $this->sessID=($sess!="")?$sess:$this->sessID;
  208.  
  209.             $result=mysqli_query($db_handler, "SELECT t2.usernim,t2.masutus AS asutus,t2.mname AS name,t2.soodustus,t2.id AS user_id,t1.* FROM session AS t1 LEFT JOIN user AS t2 ON t1.user=t2.id WHERE t1.last_ip='".$GLOBALS["REMOTE_ADDR"]."' AND t1.cookie='".$this->sessID."' AND t1.out_time>NOW()") or die(mysqli_error($db_handler));
  210.  
  211.             if($rida=mysqli_fetch_assoc($result)) {
  212.                 //define("_asutus_id",$rida["asutus_id"]);
  213.                 $GLOBALS["user"]=$rida;
  214.                 $this->keel=$rida["keel"];
  215.                 $expires=time()+3600;
  216.                 $exp=date("Y-m-d H:i:s", $expires);
  217.                 mysqli_query("UPDATE session SET out_time='$exp' WHERE id='".$rida["id"]."'");
  218.                 mysqli_free_result($result);
  219.                 if(isset($HTTP_GET_VARS["lang"])) {
  220.                     $lang=$HTTP_GET_VARS["lang"]=="ee"?"":"_".$HTTP_GET_VARS["lang"];
  221.                     $this->keel=$lang;
  222.  
  223.                     mysqli_query($db_handler, "UPDATE session SET keel='$lang' WHERE id='".$rida["id"]."'") or die(mysqli_error($db_handler));
  224.  
  225.                     $user_id=$rida["user_id"];
  226.                     $mods_text=$this->get_mods($user_id);
  227.                     $user1_text=$this->get_user1($user_id);
  228.                     //echo $mods_text;
  229.  
  230.                     $fl=fopen("tmp/".$this->sessID.".inc","w+");
  231.                     fwrite($fl,"<?\n");
  232.                     fwrite($fl,"\$GLOBALS[\"mod_rights\"]=".$mods_text.";\r\n");
  233.                     fwrite($fl,"\$GLOBALS[\"user1\"]=".$user1_text.";\r\n");
  234.                     fwrite($fl,"?>\n");
  235.                     fclose($fl);
  236.  
  237.                     $fl=fopen("tmp/".$this->sessID."_1.inc","w");
  238.                     fwrite($fl,"<?\n");
  239.                     fwrite($fl,"\$GLOBALS[\"tooted\"]=Array();\r\n");
  240.                     fwrite($fl,"?>\n");
  241.                     fclose($fl);
  242.                 }
  243.  
  244.                 //log_("update_session",$rida["usernim"]);
  245.                 include("tmp/".$this->sessID.".inc");
  246.                 include("tmp/".$this->sessID."_1.inc");
  247.             } else {
  248.                 if($sess!="") { $GLOBALS["end_sess"]=1; return; }
  249.                 $this->new_sess();
  250.             }
  251.         }
  252.  
  253.         function logout_sess() {
  254.             global $db_handler;
  255.             mysqli_query($db_handler, "UPDATE session SET out_time=NOW(),cause='logout' WHERE cookie='$this->sessID'");
  256.             log_("logout",$GLOBALS["user"]["usernim"]);
  257.             if($this->cookies) $this->delete_cookie($this->sessID);
  258.             $this->sessID='';
  259.         }
  260.  
  261.         function close_sess() {
  262.             $this->delete_cookie($this->sessID);
  263.         }
  264.  
  265.         function delete_cookie($name) {
  266.             setcookie($name);
  267.         }
  268.  
  269.         function login() {
  270.             global $HTTP_POST_VARS,$db_handler;
  271.             $user_name=$HTTP_POST_VARS["user_name"];
  272.             $user_pass=$HTTP_POST_VARS["user_pass"];
  273.             $user_pass=md5($user_pass);
  274.             $result=mysqli_query($db_handler, "SELECT * FROM user WHERE usernim='$user_name' AND password='$user_pass'");
  275.             //trigger_error("SELECT * FROM user WHERE usernim='$user_name' AND password='$user_pass'");
  276.             if($rida=mysqli_fetch_object($result)) {
  277.                 $mods_text=$this->get_mods($rida->id);
  278.                 $user1_text=$this->get_user1($rida->id);
  279.  
  280.                 $fl=fopen("tmp/".$this->sessID.".inc","w+");
  281.                 fwrite($fl,"<?\n");
  282.                 fwrite($fl,"\$GLOBALS[\"mod_rights\"]=".$mods_text.";\r\n");
  283.                 fwrite($fl,"\$GLOBALS[\"user1\"]=".$user1_text.";\r\n");
  284.                 fwrite($fl,"?>\n");
  285.                 fclose($fl);
  286.  
  287.                 $fl=fopen("tmp/".$this->sessID."_1.inc","w");
  288.                 fwrite($fl,"<?\n");
  289.                 fwrite($fl,"\$GLOBALS[\"tooted\"]=Array();\r\n");
  290.                 fwrite($fl,"?>\n");
  291.                 fclose($fl);
  292.                 mysqli_free_result($result);
  293.                 mysql_query($db_handler, "UPDATE session SET user='$rida->id' WHERE cookie='".$this->sessID."' AND last_ip='".$GLOBALS["REMOTE_ADDR"]."' AND out_time>NOW()");
  294.                 log_("login",$rida->usernim);
  295.                 return 1;
  296.             }
  297.             return -1;
  298.         }
  299.     }
  300. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement