diff --git a/login.php b/login.php
index 3440136..ee64f27 100644
--- a/login.php
+++ b/login.php
@@ -1,49 +1,56 @@
-<html>
-<head>
-<meta http-equiv="content-type" content="text/html; charset=utf-8">
-<script src="./js/utils.js"></script>
 <?php
-        $servername = "fdb22.awardspace.net";
-        $username = "3155560_users";
-        $password = "btechnoro@fox4news.info";
-        
-        // Create connection
-        $conn = new mysqli($servername, $username, $password, "3155560_users");
-        if ($conn->connect_error) die("Connection failed: " . $conn->connect_error);
-        $conn->set_charset("utf8");
-        
-        $id = $_POST['user'];
-        $query = "SELECT * FROM users WHERE id=".$id;
+	class User{
+		public $id;
+		public $nomcomplet;
+		public $curs;
+		public $grau;
+		public $quimata;
+		
+		public function nom() {
+			$noms = explode(" ", $this->nomcomplet);
+			return $noms[0];
+		}
+	}
+	
+	function get_user($id) {
+		$user = new User();
+		
+		// Define MySQL login variables
+		$servername = "fdb22.awardspace.net";
+		$username = "3155560_users";
+		$password = "btechnoro@fox4news.info";
 
-        if ($result = $conn->query($query)) {
-            
-            while ($row = $result->fetch_row()) {
-                echo "<script>let db_info = {'id': ".$row[0];
-                echo ", 'nom':'".$row[1]."', 'curs':".$row[2].", 'grau':".$row[3];
-                echo ", 'quimata':".$row[4].", 'quielmata':".$row[5];
-                echo "}; console.log(db_info);</script>";
-            }
-        
-            $result->close();
-        } else {
-            echo "Wrong query";
-        }
-        
-        // Close connection
-        $conn->close(); 
-?>
-</head>
-<body>
-<?php
-// Rebut l'SQL, l'enviem com a JSON a main.html
-echo '
-<script>
-let infoString = JSON.stringify(db_info);
-let infoBase64 = b64EncodeUnicode(infoString);
+		// Create connection
+		$conn = new mysqli($servername, $username, $password, "3155560_users");
+		if ($conn->connect_error) die("Connection failed: " . $conn->connect_error);
+		$conn->set_charset("utf8");
+		
+		// Do the query
+		$query = "SELECT * FROM users WHERE id=".$id;
 
-window.location.href = "./main.html?info=" + infoBase64;
-</script>
-';
+		// Fetch the information of the user
+		if ($result = $conn->query($query)) {
+			while ($row = $result->fetch_row()) {
+				$user->id = $row[0];
+				$user->nomcomplet = $row[1];
+				$user->curs = $row[2];
+				$user->grau = $row[3];
+				$user->quimata = $row[4];
+				$user->quielmata = $row[5];
+				$user->requested = $row[6];
+				$user->mort = $row[7];
+			}
+			$result->close();
+		} else {
+			die("Wrong query: " . $query);
+		}
+
+		// Close connection
+		$conn->close();
+		
+		return $user;
+	}
+	
+	$user = get_user($_GET['user']);
+	$victim = get_user($user->quimata);
 ?>
-</body>
-</html>
