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

Logowanie na stronie danymi z servera?


Rekomendowane odpowiedzi

Opublikowano

PORADNIK TEN NIE MA NA CELU PODANIA WAM KODU NA TACY. POMYŚLCIE TROSZKĘ! JEST TO PORADNIK - POMOŻE WAM W OSIĄGNIĘCIU CELU, CAŁA RESZTA TO WASZA ROBOTA...

Ma on na celu też pomoc w zlikwidowaniu tych gównianych serwerów na 40 slotów, gdzie admin chwali się 'własnymi' 'pluginami' w skript...
WIEC JESLI NIE MASZ ZAMIARU SIE NAUCZYC TROSZKI PHP/HTML to nie polecam marnowac czasu.

 

 

Okej, więc... Może na początek wypada wytłumaczyć jak to się dzieje, że po zarejestrowaniu w minecrafcie (na naszym serwerze) możemy się zalogować w sklepiku, czy tam na stronce...

 

 


-------
1.W minecrafcie tworzymy nowego usera, gracza czy jak to tam nazwać.
2.Serwer przetwarza tę informację, hashuje (utrudnia odczytanie) hasło, ustala inne informacje
3.Serwer dodaje rekord do bazy danych (

INSERT INTO `x` (`1`, `2`, `3`, `4` , `5`) VALUES ('', '2', '3', '4', '5')";

)

----

 

 

W skrócie - przy każdym zarejestrowaniu się nowego użytkownika w bazie danych do naszej tabeli dodawane są jakieś tam wartości - id (dodające się samo), hasło, pozycja x y z, ostatnie logowanie, ip itd...

Logowanie natomiast wygląda bardzo podobnie:

 

 

-----
1.Użytkownik wchodzi na serwer, ten automatycznie wybiera jego hasło z bazy danych

SELECT `haslo` FROM `bazadanych` WHERE `nick` = 'nick'

2.Hashuje hasło podane na serwerze i porównuje je z tym już zahashowanym.
3.Jeżeli hasła się zgadzają zwraca true (pozwala się zalogować), w przeciwnym wypadku zwraca false (fałsz)
----

 

 

Dobra, ale czym jest ten 'kod'?
Jest to zapytanie wysyłane do bazy danych, w której są przechowywane nasze hasło, nick oraz inne dane.

A czym jest baza danych?
Z pomocą wita nas wikipedia - Baza danych – zbiór danych zapisanych zgodnie z określonymi regułami.

To jest darmowe?
Tak, pod warunkiem, że masz swój własny serwer/hosting. Jeśli nie, to poszukaj jakiegoś darmowego (linki na dole) albo zakup go.

 

F.A.Q w środku?
Tak - postaram się rozwiewać wszystkie wątpliwości/niejasności, by nie robić potem 200 pytaniowego.


Kontynuując, jak widzicie MySQL jest dość uniwersalne... Ale... Dodatkowo działa z PHP. Co nam to da? Otóż to, że będziemy mogli stworzyć system logowania do naszej strony internetowej z kontami z serwera, tak samo sklepik czy inne tego typu rzeczy.

Ale jak zacząć? Co zrobić?
Napiszę w podpunktach i postaram się to zrobić tak, by każdy to zrozumiał...

 

Co nam potrzebne:
1.Mózg... Trudno bez tego, prawda?
2.Jakiś serwer minecraft (nawet na komputerze)
3.Baza danych, hosting strony i domena (to MOŻE być darmowe)
4.Podstawowa znajomość PHP, HTML

5.Chwila wolnego czasu (ferie, jej :3)
6.Program do FTP (chyba, że wolimy WebFTP) - Polecam FileZilla.

Dobra... A jak to zacząć?

Na początku powinniście już wiedzieć, że główna strona internetowa na danej domenie ma bezwzględnie nazwę index.php lub index.html... Czym różnią się te 2 pliki? Rozszerzeniem... Oba są plikami tekstowymi z wyjątkiem tego, że w PHP można zamieścić HTML, a w HTML PHP już nie... Więc jak się pewnie domyślacie zaczniemy od stworzenia pliku o nazie "index.php", ale... co w nim?!

Zapewne wiecie już o tym, że w PHP mamy coś takiego jak zmienne, sesje i innego typu 'pierdoły'. Więc...

1.Startujemy sesję session_start();

2.Deklarujemy zmienne 'username' i 'password' jako POST z formularza. (nie będę tłumaczył jak - pisałem dlaczego powstaje ten poradnik, i co jest potrzebne - Krzyq skurwiel...)

3.Deklarujemy funkcje odpowiedzialną za sprawdzenie hasła (zaczerpnięte ze strony xAuth, oraz AuthMe Reloaded):
xAuth

 

function checkPassword($checkPass, $realPass, $algorithm) {
	switch ($algorithm) {
	case 1:
		return $realPass == hash('whirlpool', $checkPass);
	case 2:
		return $realPass == hash('md5', $checkPass);
	case 3:
		return $realPass == hash('sha1', $checkPass);
	case 4:
		return $realPass == hash('sha256', $checkPass);
	default:
		// xAuth hashing
		$saltPos = (strlen($checkPass) >= strlen($realPass) ? strlen($realPass) : strlen($checkPass));
		$salt = substr($realPass, $saltPos, 12);
		$hash = hash('whirlpool', $salt . $checkPass);
		return $realPass == substr($hash, 0, $saltPos) . $salt . substr($hash, $saltPos);
	}
}

Tutaj 'realPass' to hasło realne - wyciągnięte z bazy danych, 'checkPass' to hasełko do sprawdzenia, a algorithm... Wywnioskujcie z funkcji.

 

 

i AuthMe Reloaded

 

function check_password_db($nickname,$password) {
        //Dane do podłączenia do MySQL, ewentualnie 'die'.
	$a=mysql_query("SELECT password FROM authme where username = '$nickname'");
	if(mysql_num_rows($a) == 1 ) {
	   $password_info=mysql_fetch_array($a);
	   $sha_info = explode("$",$password_info[0]);
	 } else return false;
	if( $sha_info[1] === "SHA" ) {
						$salt = $sha_info[2];
						$sha256_password = hash('sha256', $password);
						$sha256_password .= $sha_info[2];;
						if( strcasecmp(trim($sha_info[3]),hash('sha256', $sha256_password) ) == 0 ) return true;
						else return false;
	}

}

No, a tutaj wyjaśnia się po co deklarować zmienne username i password...

 

5.Podpowiedź - if(!isset($_SESSION['jakassesja'])){ HTML JAK NIEZALOGOWANI + Formularz do wypełnienia } else { Np. header("Location: panelusera.php")}

Forma do tego Poradnika

 

<form action="index.php" method="post">
	Nick:<input type="text" name="login" title="Login" placeholder="Login"><br>
	Haslo:<input type="password" name="haslo" title="Haslo" placeholder="Haslo"><br>
	<input type="Submit" value="Zaloguj!" name="gotowe" title="Wyslij!">
</form>

 

 



6.Podpinamy pluginy pod MySQL i dajemy im stworzyć swoje bazy danych, wybieramy je w PHP w przypadku xAuth, AuthMe zrobi to samemu.

7.Możemy się już cieszyć dość łatwym systemem logowania. Pamiętajcie tylko, by w każdym dokumencie stworzyć isset($_SESSION['jakassesja']), aby uniemożliwić wejście losowej osobie znającej adres, oraz o start_session(); na samym początku każdego dokumentu php.

No... I dobrze by było, gdyby coraz to więcej osób dostawało oto taką 'nalepeczkę' na stronkę.
vcss.gif
Albo dodawało taki link w stopce:
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.krzyq.url.ph%2F;outline=1

Mam nadzieję, że ten poradnik przyda się osobom, które mają chęć do nauki PHP/HTML/CSS/MySQL, a nie wiedziały jak się do tego zabrać, lub pomógł tym, które nie wiedziały jak zacząć się uczyć.

I taka mała pomoc dla ludzi, którzy dalej nie ogarniają do czego nam ta funkcja:

if($_POST['gotowe']){
if(check_password_db($username, $password)){
echo('<div id="komunikatg"><center>Zalogowano pomyślnie!</center></div><script>closeDiv</script>');
$_SESSION['logged'] = $username;
header("Refresh:1; panel.php");}
else echo('<div id="komunikatb"><center>PODANO ZŁE HASLO LUB LOGIN!</center></div><script>closeDiv</script>');
}

I kilka darmowych hostingów z MySQL:
1. www.cba.pl
2. www.hostinger.pl/
3. www.ugu.pl

025a7652b71469d8845294192925f77f.jpg


Opublikowano

@UP
Wkrótce zrobie jakiś taki bardziej złożony ten poradnik i postaram się więcej wytłumaczyć (może filmik?), więc jeżeli chcesz to czekaj.

P.S.

GDYBY KTOŚ MIAŁ JAKIEŚ PYTANIA, CZEGOŚ NIE WIEDZIAŁ - ZAPRASZAM NA PW.

025a7652b71469d8845294192925f77f.jpg


Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...