piotrek5402

Kod na logowanie minecraft

Dec 28th, 2012
466
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.92 KB | None | 0 0
  1. <?php
  2.     include_once("config.php");
  3.     @mysql_connect($_CONFIG['host'], $_CONFIG['login'], $_CONFIG['pass']) or die("Nie udało się połączyć z bazą danych");
  4.     @mysql_select_db($_CONFIG['database']) or die("Nie udało się wybrać bazy danych");
  5.    
  6.     function getip()
  7.         {
  8.             if(isset($_SERVER['HTTP_CLIENT_IP']))
  9.             {
  10.              $ip = $_SERVER['HTTP_CLIENT_IP'];
  11.             }
  12.             elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
  13.             {
  14.              $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  15.             }
  16.             else
  17.             {
  18.              $ip = $_SERVER['REMOTE_ADDR'];
  19.              if($ip == "::1")
  20.              {
  21.                 $ip = "127.0.0.1";
  22.              }
  23.             }
  24.             return $ip;
  25.         }
  26.    
  27.     class account
  28.     {
  29.         public $userMsg = '';
  30.         public $userName = '';
  31.         public $latestVersion = '';
  32.         public $sessionId = '';
  33.         public $downloadTicket = '';
  34.        
  35.         //==================================================================================================================== LOGIN VIA MINECRAFT.NET
  36.         public function loginoriginal($login, $pass)
  37.         {
  38.             include 'config.php';
  39.             $login = urlencode ( $login );
  40.             $pass = urlencode ( $pass );
  41.            
  42.             /*//Połączenie
  43.             $minecraftSocket = fopen("https://login.minecraft.net/?user=$login&password=$pass&version=12", "rb");
  44.             //Stworzenie miejsca na dane
  45.             $minecraftOutput = '';
  46.             //Oczekiwanie na odpowiedź
  47.             while (!feof($minecraftSocket))
  48.             {
  49.                 $minecraftOutput .= fgets($minecraftSocket, 128);
  50.             }
  51.             //Zamknięcie połączenia
  52.             fclose($minecraftSocket);
  53.             */
  54.             $minecraftOutput = file_get_contents("https://login.minecraft.net/?user=$login&password=$pass&version=12");
  55.            
  56.            
  57.             if(strpos($minecraftOutput, 'Bad login') === false)
  58.             {
  59.                 // split values
  60.                 $minecraftValues = explode(':', $minecraftOutput);                      
  61.                 if(count($minecraftValues) > 0){
  62.                     $this->userName = $minecraftValues[2];
  63.                     $this->latestVersion = $minecraftValues[0];
  64.                     $this->sessionId = $minecraftValues[3];
  65.                     $this->downloadTicket = $minecraftValues[4];
  66.                    
  67.                     //Wczytanie pliku
  68.                     $file = File("users.txt");
  69.                     if(count($file) == 1)
  70.                     {
  71.                         //Sprawdzenie czy czasem nicku już nie ma w pliku.
  72.                         $sFile = unserialize($file[0]);
  73.                         $nowy = true;
  74.                         for($i=0;$i < count($sFile);$i++)
  75.                         {
  76.                             $asd= explode("{%}",$sFile[$i]);
  77.                             if($asd[0] == $minecraftValues[2])
  78.                             {
  79.                                 //Jeśli jest to wpisujemy nowy czas  i adres IP;
  80.                                 $sFile[$i] = $asd[0]."{%}".time()."{%}".getip();
  81.                                 $nowy = false;
  82.                             }
  83.                         }
  84.                         //A jeśli nie ma to wpisujemy nowe wartości.
  85.                         if ($nowy == true)
  86.                         {
  87.                             $sFile[] = $minecraftValues[2]."{%}".time()."{%}".getip();
  88.                         }
  89.                        
  90.                         //I na koniec zapisujemy plik.
  91.                         $file = serialize($sFile);
  92.                         file_put_contents ( "users.txt" , $file);
  93.                     }
  94.                     return true;
  95.                 }
  96.             }
  97.             else
  98.                 {
  99.                     $this->userMsg = 'Błąd, złe hasło lub login.';
  100.                     return false;
  101.                 }
  102.         }
  103.        
  104.         //==================================================================================================================== REGISTER
  105.         public function register($nick,$pass,$mail='')
  106.         {
  107.             include 'config.php';
  108.             //Wysłanie zapytania o konto
  109.             $handle=mysql_query("SELECT * FROM ".$_CONFIG['table']." WHERE playername = '".$_POST['nick']."'");
  110.             //Upewnienie się, czy czasem konto już nie istnieje.
  111.             if(mysql_num_rows($handle) > 0 )
  112.                 $this->userMsg = 'Konto o tym nicku już istnieje !';
  113.             else
  114.             {
  115.                 //Sprawdzenie czy hasło jest prawidłowe
  116.                 //-- MA 6 ZNAKÓW ------------------ NIE ZAWIERA ZNAKÓW SPECJALNYCH
  117.                 if (strlen($pass) >= 6 && ctype_alnum($pass))
  118.                     {
  119.                         if(filter_var($mail, FILTER_VALIDATE_EMAIL) == true || $mail == '')
  120.                         {
  121.                             if(file_get_contents('http://www.minecraft.net/haspaid.jsp?user='.$nick) == "false")
  122.                             {
  123.                                 //====================================================================== PROCES TWORZENIA KONTA
  124.                                 //Uzyskanie liczby kont (do pozyskania nowego ID)
  125.                                 $handle = mysql_query("SELECT * FROM ".$_CONFIG['table']." ORDER BY ID DESC LIMIT 0 , 1");
  126.                                 $r = mysql_fetch_assoc($handle);
  127.                                 $id = $r['ID'] + 1;
  128.                                 //Zaszyfrowanie hasła
  129.                                 $salt = substr(hash('whirlpool', uniqid(rand(), true)), 0, 12);
  130.                                 $hash = hash('whirlpool', $salt . $pass);
  131.                                 $saltPos = (strlen($pass) >= strlen($hash) ? strlen($hash) : strlen($pass));
  132.                                 $hashed = substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos);
  133.                                 //Wysłanie zapytania do bazy, o stworzenie konta.
  134.                                 $handle=mysql_query("INSERT INTO ".$_CONFIG['table']."(ID, playername, password, email, registerdate, registerip ,lastip) VALUES ('".$id."','".$nick."','".$hashed ."','".$mail."','".date("Y-m-d H:i:s")."','".getip()."','".getip()."')");
  135.                                 return true;
  136.                             }
  137.                             else
  138.                             {
  139.                                 $this->userMsg = "Konto jest kontem premium ! Zaloguj sie przez minecraft.net !";
  140.                                 return false;
  141.                             }
  142.                         }
  143.                         else
  144.                         {
  145.                             $this->userMsg = "Podany adres e-mail jest niepoprawny !";
  146.                             return false;
  147.                         }
  148.                     }
  149.                 else
  150.                 {
  151.                     $this->userMsg = "Hasło jest nieprawidłowe ! Musi ono mieć minimalnie 6 znaków oraz składać się wyłączenie z liter i cyfr !";
  152.                     return false;
  153.                 }
  154.             }
  155.            
  156.         }
  157.        
  158.         //==================================================================================================================== LOGIN
  159.         function login ($nick, $pass)
  160.         {
  161.             include 'config.php';
  162.             //Wysłanie zapytania o konto
  163.             $handle=mysql_query("SELECT * FROM ".$_CONFIG['table']." WHERE playername = '".$nick."'");
  164.             //Upewnienie się że konto istnieje.
  165.             if(mysql_num_rows($handle) == 1 )
  166.             {
  167.                 //Pobranie danych konta.
  168.                 $r = mysql_fetch_assoc($handle);
  169.                 //Zahashowanie hasła
  170.                 $saltPos = (strlen($pass) >= strlen($r['password']) ? strlen($pass) : strlen($pass));
  171.                 $salt = substr($r['password'], $saltPos, 12);
  172.                 $hash = hash('whirlpool', $salt . $pass);
  173.                 $hashed = substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos);
  174.                 //Jeśli hasło zgadza się z tym w bazie = utworzenie cookies.
  175.                 if( $r['password'] == $hashed )
  176.                 {
  177.                     $this->userName = $r['playername'];
  178.                    
  179.                     //Wczytanie pliku
  180.                     $file = File("users.txt");
  181.                     if(count($file) >= 0)
  182.                     {
  183.                         //Sprawdzenie czy czasem nicku już nie ma w pliku.
  184.                         $sFile = unserialize($file[0]);
  185.                         $nowy = true;
  186.                         for($i=0;$i < count($sFile);$i++)
  187.                         {
  188.                             $asd= explode("{%}",$sFile[$i]);
  189.                             if($asd[0] == $r['playername'])
  190.                             {
  191.                                 //Jeśli jest to wpisujemy nowy czas  i adres IP;
  192.                                 $sFile[$i] = $asd[0]."{%}".time()."{%}".getip();
  193.                                 $nowy = false;
  194.                             }
  195.                         }
  196.                         //A jeśli nie ma to wpisujemy nowe wartości.
  197.                         if ($nowy == true)
  198.                         {
  199.                             $sFile[] = $r['playername']."{%}".time()."{%}".getip();
  200.                         }
  201.                        
  202.                         //I na koniec zapisujemy plik.
  203.                         $file = serialize($sFile);
  204.                         file_put_contents ( "users.txt" , $file);
  205.                     }
  206.                     return true;
  207.                 }
  208.                 else
  209.                 {
  210.                     $this->userMsg = "Hasło nie zgadza się.</br>";
  211.                     return false;
  212.                 }
  213.             }
  214.             else
  215.             {
  216.                 $this->userMsg = "Konto nie istnieje lub wystąpił problem z połączeniem.";
  217.                 return false;
  218.             }
  219.                
  220.         }
  221.     }
  222. ?>
Advertisement
Add Comment
Please, Sign In to add comment