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

[Tut][Logowanie]Zapamiętaj mnie


bnmbb

Rekomendowane odpowiedzi

Opublikowano

A więc funkcja Zapamiętaj mnie w Logowaniu. (Stary temat został skasowany z powodu problemów serwerowych)

 

Okej - to będzie o wiele lepsze wykonane.

Okej co potrzebujemy :

Przykładowo w tabeli users tworzymy kolumnę o nazwie rID (Remember Id).

Typ to int.

Gdzie będzie ona wypełniana :

Po rejestracji zanim doda nam usera piszemy :

$num = rand(1, 100000);
$rID = time()."$num";
mysql_query("INSERT INTO Users (rID) VALUES ($rID)"); //Tu jest zapytanie dodania do bazy usera. Ja daję skrócone

Oke mamy kolumnę rId w tabeli Users :)

 

Teraz przechodzimy do pliku logowania i tuż przed przejściem do innej strony musimy dać :

$gracz['Id'] - Id Zalogowanego

if($_REQUEST["zapamietaj"] == 'tak') {
//Ma go zapamiętać ? To insert :
$IP = $_SERVER['REMOTE_ADDR'];
$A_Id = $gracz['Id'];
mysql_query("INSERT INTO Loged VALUES (NULL, '$IP', $A_Id)"); //Dys is opszyn łan
//Okej. Dajmy 2 opcję  :
$time = 2678400; //31 dni. 86400 - jeden dzień
setcookie("txokefyaw", $gracz['rId'], time()+$time, "/" );
}

PS : Jeśli kogoś ciekawi nazwa cookie to znaczy ona "jeśli nie, lub w przeciwnym razie". Coś jak else{} xD

 

Dobra - mamy rId, mamy cookie. Ale do formularza trzeba dopisać coś jeszcze :

<input type="checkbox" name="zapamietaj" value="tak"> Zapamiętaj mnie.

Prawie wszystko. Jeszcze do testu zalogowanego trzeba conieco dopisać :

<?php
//$db->Query - A taka moja funkcja. No może nie do końca moja
//Try czy nie zalogowany  :
$IP = $_SERVER['REMOTE_ADDR'];
$try = $db->Query("SELECT * FROM Loged WHERE IP='$IP'");
if(!empty($try['Account_Id'])) {

$_SESSION['user'] = $try['Account_Id'];

$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ć
if(empty($uzytkownik)) {
$uzytkownik = $db->Query("SELECT * FROM Users WHERE Id =".$_SESSION['user']);
if(empty($uzytkownik)) {
header("Location: http://localhost/WOV/");
  }
}

} else {
//sprawdzamy czy w sesji zapisano nr gracza, czyli czy jest zalogowany
if(empty($_SESSION['user']) && empty($_COOKIE['txokefyaw'])){
//nie jest zalogowany, przenieś do strony logowania
header("Location: http://localhost/WOV/s1/wyloguj.php");
} else {
//dodatkowo zabezpieczymy sesję, rzutując wartość na liczbę
$_SESSION['user'] = (int)$_SESSION['user'];
 //  echo $_SESSION['user'];
 //pobieramy dane gracza z bazy
$uzytkownik = $db->Query("SELECT * FROM Users WHERE Id =".$_SESSION['user']);	  //,10
//jeżeli nie pobrało gracza, to znaczy, że ktoś kombinuje coś z sesją i trzeba go wylogować
if(empty($uzytkownik)) {
$uzytkownik = $db->Query("SELECT * FROM Users WHERE rId =".$_COOKIE['txokefyaw']);
if(empty($uzytkownik)) {
header("Location: http://localhost/WOV/");
  }
}
}
}
?>

Co do rId może być problem ,ale szansa jest mniejsza niż w totku - Jaka jest szansa ,że 2 osoby zarejestrują się w tym samym momencie i wybierze tą samą liczbę spośród 100 tyś. możliwości ?

Powinno działać. Wiem ,że na bank działa z wpisaniem do tabeli bo odnawia mi sesje w dowolnym momencie. Z cookie nie testowałem.

PS: Powyżej w sumie dałem test zalogowanego ,którego używam :-|

 

Przez Kongo dla MPC Forum

Do użytku niekomercyjnego

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...