Guest User

Untitled

a guest
Jun 28th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.85 KB | None | 0 0
  1. <?php
  2. namespace knalstation\login;
  3. require_once("config.php");
  4. require_once(__SITE_PATH . '/libs/' . 'db.class.php');
  5. use knalstation\database as knaldb;
  6. class Auth
  7. {
  8.  
  9.     public $skysa;
  10.     protected $hash;
  11.     public $flags;
  12.     public function userLogin($username, $password)
  13.     {
  14.        
  15.         $db = new knaldb\db();
  16.         $sql = sprintf("SELECT * FROM users WHERE username = '%s'", mysql_real_escape_string($username));
  17.         $db->num_rows($sql);
  18.         if($db->num_rows == 1)
  19.         {
  20.             $db->query_result($sql, "password");
  21.             $db_pass = $db->result;
  22.             $encrypt_pass = $db->encrypt($password);
  23.             if($db_pass == $encrypt_pass)
  24.             {
  25.                 $db->query_result($sql, "id");
  26.                 $uid = $db->result;
  27.                 $sql = sprintf("UPDATE users SET last_ip = '%s' WHERE id = '%s'", mysql_real_escape_string($this->get_ip()), mysql_real_escape_string($uid));
  28.                 $db->query($sql);
  29.                 $db->disconnect();
  30.                 $this->setSessions($uid, $username);
  31.                 return true;
  32.             }
  33.         }
  34.         else
  35.         {
  36.             return false;
  37.         }
  38.     }
  39.     public function verifyLogin()
  40.     {
  41.         if(isset($_SESSION["knalstation_login"]))   // just logged in or recently logged in.
  42.         {
  43.             $db = new knaldb\db();
  44.             $sql = sprintf("SELECT * FROM users WHERE session = '%s' AND last_ip = '%s'",
  45.             mysql_real_escape_string($_SESSION["knalstation_login"]), mysql_real_escape_string($this->get_ip()));
  46.             $db->num_rows($sql);
  47.             if($db->num_rows == 1)
  48.             {
  49.                     $db->query_result($sql, 'id');
  50.                     $uid = $db->result;
  51.                     $db->query_result($sql, 'username');
  52.                     $username = $db->result;
  53.                     $db->query_result($sql, 'profile');
  54.                     $profile = $db->result;
  55.                     $db->query_result($sql, 'photo');
  56.                     $photo = $db->result;
  57.                     $db->disconnect();
  58.                     $this->setCookies($uid, $username);
  59.                     $this->makeSkysaJS($uid, $username, $profile, $photo);
  60.                     return true;   
  61.                
  62.             }
  63.         }
  64.         elseif(isset($_COOKIE["knalcookie_login"]))  // been away and used remember me function.
  65.         {
  66.             $db = new knaldb\db();
  67.             $sql = sprintf("SELECT * FROM users WHERE cookie = '%s' AND last_ip = '%s'",
  68.             mysql_real_escape_string($_COOKIE["knalcookie_login"]), mysql_real_escape_string($this->get_ip()));
  69.             $db->num_rows($sql);
  70.             if($db->num_rows == 1)
  71.             {
  72.                     $db->query_result($sql, 'id');
  73.                     $uid = $db->result;
  74.                     $db->query_result($sql, 'username');
  75.                     $username = $db->result;
  76.                     $db->query_result($sql, 'profile');
  77.                     $profile = $db->result;
  78.                     $db->query_result($sql, 'photo');
  79.                     $photo = $db->result;
  80.                     $db->disconnect();
  81.                     $this->setCookies($uid, $username); // update cookie
  82.                     $this->setSessions($uid, $username); // set session
  83.                     $this->makeSkysaJS($uid, $username, $profile, $photo);
  84.                     return true;
  85.             }  
  86.         }
  87.         else
  88.         {
  89.             return false;
  90.         }
  91.     }
  92.     public function checkFlags($id, $flag_to_check)
  93.     {
  94.         $db = new knaldb\db();
  95.         $sql = sprintf("SELECT flags FROM users where id = '%s'", mysql_real_escape_string($id));
  96.         $db->query_result($sql, 'flags');
  97.         $flags = $db->result;
  98.         $flag = explode(",", $flags);
  99.         $counter = count($flag);
  100.         $i = 0;
  101.         for($i = 0; $i <= $counter;$i++)
  102.         {
  103.                 if($flag[$i] == $flag_to_check)
  104.                 {
  105.                     return true;
  106.                 }
  107.                 elseif($i >= $counter)
  108.                 {
  109.                     return false;
  110.                 }
  111.         }
  112.     }
  113.     function checkBan()
  114.     {
  115.        
  116.     }
  117.     function setSessions($uid, $username)
  118.     {
  119.  
  120.         $hash = $this->hash;
  121.         $hash = md5($hash . time());
  122.         $_SESSION["knalstation_login"] = $hash;
  123.         $_SESSION["knalstation_uid"] = $uid;
  124.         $_SESSION["knalstation_username"] = $username;
  125.         $db = new knaldb\db();
  126.         $sql = sprintf("UPDATE users SET session = '%s' WHERE id = '%s'", mysql_real_escape_string($hash), mysql_real_escape_string($uid));
  127.         $db->query($sql);
  128.         $db->disconnect();
  129.         return true;
  130.     }
  131.     function setCookies($uid, $username)
  132.     {
  133.         $db = new knaldb\db();
  134.         $hash = $db->encrypt("Knalstation" . $uid . $username . date("d.m.y_H:i:s"));
  135.         setcookie("knalcookie_login", $hash, time()+3600*24*356, '/');
  136.         setcookie("knalcookie_username", $username, time()+3600*24*356, '/');
  137.         setcookie("knalcookie_uid", $uid, time()+3600*24*356, '/');
  138.         $sql = sprintf("UPDATE users SET cookie = '%s' WHERE id = '%s'", mysql_real_escape_string($hash), mysql_real_escape_string($uid));
  139.         $db->query($sql);
  140.         $db->disconnect();
  141.         $this->hash = $hash;
  142.     }
  143.     function makeSkysaJS($uid, $username, $profile, $photo)
  144.     {
  145.         if($photo == NULL)
  146.         {
  147.             $photo = "/images/avatar.jpg";
  148.         }
  149.         $var = "<script type='text/javascript'>
  150.         var _SKYAUTH = {
  151.         loginUrl:'/page/login/',
  152.         memberNick:'".$username."',
  153.         memberId:'".$uid."',
  154.         profileUrl:'".$profile."',
  155.         photoUrl:'".$photo."'
  156.         };
  157.         </script>";
  158.         $this->skysa = $var;
  159.     }
  160.     public function get_ip()
  161.     {
  162.         /*
  163.         | Als PHP gebruikt maakt van $_SERVER,
  164.         | meerdere pogingen doen om het IP te achterhalen
  165.         | en in $realip weg te schrijven.
  166.         */
  167.         if(isset($_SERVER))
  168.         {
  169.             if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  170.             {
  171.                 $realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  172.             }
  173.             elseif(isset($_SERVER['HTTP_CLIENT_IP']))
  174.             {
  175.                 $realip = $_SERVER['HTTP_CLIENT_IP'];
  176.             }
  177.             else
  178.             {
  179.                 $realip = $_SERVER['REMOTE_ADDR'];
  180.             }
  181.         }
  182.        
  183.         /*
  184.         | Als PHP geen gebruik maakt van $_SERVER
  185.         | moeten we wat anders proberen.
  186.         */
  187.         else
  188.         {
  189.             if(getenv('HTTP_X_FORWARDED_FOR'))
  190.             {
  191.                 $realip = getenv('HTTP_X_FORWARDED_FOR');
  192.             }
  193.             elseif(getenv('HTTP_CLIENT_IP'))
  194.             {
  195.                 $realip = getenv('HTTP_CLIENT_IP');
  196.             }
  197.             else
  198.             {
  199.                 $realip = getenv('REMOTE_ADDR');
  200.             }
  201.         }
  202.        
  203.         /*
  204.         | De variabele realip returnen, zodat we die kunnen gebruiken
  205.         */
  206.         return $realip;
  207.     }
  208.    
  209. }
  210. ?>
Add Comment
Please, Sign In to add comment