Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

(int)$_SESSION['user']


bnmbb

Rekomendowane odpowiedzi

Opublikowano

Witam ! Napiszę krótko - Logowanie działa ale gubi sesje :/

 

Logowanie :

 

 

<?php
require_once("../_AppStart.php");
$LoginMsg = '';
if(!empty($_POST)){
 if (!empty($_POST['login']) && !empty($_POST['haslo'])) {
   $_login = $_POST['login'];
   $_haslo = $_POST['haslo'];
   $db = $WebSecurity->DatabaseInstance();
   $db->Open('kongo96lbn_wov');

## Attempt to login to the Security object using provided creds
   if ($WebSecurity->Login($_login, $_haslo)) {
  $gracz = mysql_fetch_array(mysql_query("SELECT * FROM Users WHERE Name='$_login' LIMIT 1"));
  $login = $gracz['Name'];
  $IP = $_SERVER['REMOTE_ADDR'];
  mysql_query("INSERT INTO Logs (Konto, Serwer, Kiedy, IP, Udane) VALUES ('$login', 's1', NOW(), '$IP', 'Tak')");
## jeżeli pobrano dane to przeczyść sesję
  $_SESSION = array();

## ustaw numer gracza jako wskaźnik w sesji

$_SESSION['user'] = $gracz['Id'];

    $uzytkownik = $gracz;
## przenieś do strony konta gracza
    header('Location: http://worldofvillages.tk/s1/Zamek.php?village=1');
  }
   } else {
	  $login = $gracz['Name'];
  $IP = $_SERVER['REMOTE_ADDR'];
  mysql_query("INSERT INTO Logs (Konto, Serwer, Kiedy, IP, Udane) VALUES ('$_login', 's1', NOW(), '$IP', 'Nie')");
  $LoginMsg = "<p class='error'>Podano nieprawidłowe dane</p><br class='clear'>";
   }
 } else {
## jeżeli nie podano wszystkich danych
   $LoginMsg = "<p class='error'>Wypełnij wszystkie pola poprawnie</p><br class='clear'>";
 }

## włączamy bufor
 ob_start();

?>

<h2>Zaloguj się :</h2>
<form action="" method="POST">
Login :<input type="text" name="login" value="<?php $login ?>"><br>
Hasło :<input type="password" name="haslo" value="<?php $haslo ?>"><br>
<input type="submit" value="Zaloguj">
</form>

 

 

 

Funkcja Login :

 

 

 public function Login( $userName, $userPassword, $persistCookie = false ) {

   if (self::UserExists($userName)) { //Sprawdza czy user istnieje ;p
  $userId = self::GetUserId($userName); //Otrzymuje ID Usera po Nazwie

  $query = "SELECT * FROM WebPages__Membership WHERE UserId = %d AND Password = '%s'"; //Po otrzymaniu UserID szuka równierz hasła (w MD5)
  $db = self::DatabaseInstance(); //Połączenie do bazy
  $WebUser = $db->Query( $query, self::GetUserId($userName), md5($userPassword) ); //Jak widać  $db->Query to zapytanie inaczej
  $CurrentUser = self::GetUser($userId);
   }

   if( isset($WebUser) ) {
  $query = "UPDATE WebPages__Membership SET PasswordFailuresSinceLastSuccess = 0 WHERE UserId = %d AND Password = '%s'";
  $db->Execute($query, $userId, md5($userPassword));
  //if(!isset($WebUser['ConfirmationToken'])) {
    $_SESSION['IsAuthenticated'] = true;
    $_SESSION['CurrentUserId'] = $userId;
    $_SESSION['CurrentUserName'] = $userName;
    if($persistCookie) {
	  setcookie("CurrentUserId", $userId, time()+5270400, "/" );
	  setcookie("CurrentUserName", $userName, time()+5270400, "/" );
    }
    $this->IsAuthenticated = true;
    $this->CurrentUserEmail = $userName;
    $this->CurrentUserName = $userName;
    $this->CurrentUserId = $userId;
    return true;
  //}
   } else {
  self::SetLastPasswordFailure($userName);
  unset( $_SESSION['IsAuthenticated'],
		 $_SESSION['CurrentUserId'],
		 $_SESSION['CurrentUserName'] );
   }
   return false;
 }

 

 

 

I teraz test zalogowanego :

 

 

<?php
//sprawdzamy czy w sesji zapisano nr gracza, czyli czy jest zalogowany
if(empty($_SESSION['user'])){
   //nie jest zalogowany, przenieś do strony logowania
   header("Location: Adres logowania ;p. Niepodam  ");
} else {

   //dodatkowo zabezpieczymy sesję, rzutując wartość na liczbę
   $_SESSION['user'] = (int)$_SESSION['user'];
   echo $_SESSION['user']; //Na 1 stronie zwraca 10 (OK) ,ale na drugiej już 1 (źle)
 //pobieramy dane gracza z bazy
global $WebSecurity;
$db = $WebSecurity->DatabaseInstance(); //Połączenie do bazy
$db->Open('kongo96lbn_wov'); //Trzeba tłumaczyć ? Wybiera baze danych
$uzytkownik = $db->Query("SELECT * FROM Users WHERE Id =".$_SESSION['user']);	  //,
   //jeżeli nie pobrało gracza, to znaczy, że ktoś kombinuje coś z sesją i trzeba go wylogować
//Ja tu dałem sobie alert'a ale normalnie jest przekierowanie
   if(empty($uzytkownik)) {
       ?>
       <script type="text/javascript">
       alert("Niepobrano $uzytkownik !");
       </script>
       <?php
       } //header("Location: http://worldofvillages.tk");
}
?>

 

 

Pomoże któś by niegubiło sesji ??

Na każdej stronie w grze (folder z plikami gry) każdy zaczyna się tak samo :

<?php
session_start();
require_once("Layout.php"); //Test zalogowanego, połączenie do bazy i inne pierdółki ;p

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...