Rejestracja i logowanie do serwisu Skrypt uzytkownicy.sql Skrypt connect.php Skrypt rejestracja.php Skrypt index.php Skrypt zaloguj.php Skrypt gra.php Skrypt witamy.php Skrypt logout.php Na podstawie: miroslawzelent.pl Rejestracja i logowanie do serwisu Za pomocą formularzy HTML i języka PHP można przygotować miejsce za pomocą, którego będzie zarejestrować swoje konto i potem się na nie zalogować. Informacje o koncie przechowywane będą w bazie danych: osadnicy. Pobrać paczkę 19_pliki.zip, rozpakować i umieścić cały folder osadnicy w folderze xampp\htdocs Skrypt uzytkownicy.sql W phpmyadmin utworzyć bazę: osadnicy i do niej za pomocą SQL-a wprowadzić następujące polecenia: CREATE TABLE IF NOT EXISTS `uzytkownicy` ( `id` int(11) NOT NULL, `user` text COLLATE utf8_polish_ci NOT NULL, `pass` text COLLATE utf8_polish_ci NOT NULL, `email` text COLLATE utf8_polish_ci NOT NULL, `drewno` int(11) NOT NULL, `kamien` int(11) NOT NULL, `zboze` int(11) NOT NULL, `dnipremium` int(11) NOT NULL ) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; INSERT INTO `uzytkownicy` (`id`, `user`, `pass`, `email`, `drewno`, `kamien`, `zboze`, `dnipremium`) VALUES (1, 'adam', '$2y$10$4sZdn0EaurMzGCAla1Up7OJ8vDmhJjKdsyCtQIAIuJ3AuxQ0m0Tly', 'adam@gmail.com', 213, 5675, 342, 0), (2, 'marek', 'asdfg', 'marek@gmail.com', 324, 1123, 4325, 15), (3, 'anna', 'zxcvb', 'anna@gmail.com', 4536, 17, 120, 25), (4, 'andrzej', 'asdfg', 'andrzej@gmail.com', 5465, 132, 189, 0), (5, 'justyna', 'yuiop', 'justyna@gmail.com', 245, 890, 554, 0), (6, 'kasia', 'hjkkl', 'kasia@gmail.com', 267, 980, 109, 12), 1
(7, 'beata', 'fgthj', 'beata@gmail.com', 565, 356, 447, 77), (8, 'jakub', 'ertyu', 'jakub@gmail.com', 2467, 557, 876, 0), (9, 'janusz', 'cvbnm', 'janusz@gmail.com', 65, 456, 2467, 0), (10, 'roman', 'dfghj', 'roman@gmail.com', 97, 226, 245, 23); ALTER TABLE `uzytkownicy` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `id` (`id`); ALTER TABLE `uzytkownicy` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=12; Skrypt connect.php $host = "localhost"; $db_user = "user"; $db_password = "haslo_do_bazy"; $db_name = "osadnicy"; Wprowadzić właściwego usera i password. Skrypt rejestracja.php if (isset($_post['email'])) //Udana walidacja? Zalózmy, ze tak! $wszystko_ok=true; //Sprawdz poprawnosc nickname'a $nick = $_POST['nick']; znaków!"; //Sprawdzenie dlugosci nicka if ((strlen($nick)<3) (strlen($nick)>20)) $_SESSION['e_nick']="Nick musi posiadac od 3 do 20 if (ctype_alnum($nick)==false) $_SESSION['e_nick']="Nick moze skladac sie tylko z liter i cyfr (bez polskich znaków)"; // Sprawdz poprawnosc adresu email 2
$email = $_POST['email']; $emailb = filter_var($email, FILTER_SANITIZE_EMAIL); if ((filter_var($emailb, FILTER_VALIDATE_EMAIL)==false) ($emailb!=$email)) $_SESSION['e_email']="Podaj poprawny adres e-mail!"; //Sprawdz poprawnosc hasla $haslo1 = $_POST['haslo1']; $haslo2 = $_POST['haslo2']; znaków!"; identyczne!"; if ((strlen($haslo1)<8) (strlen($haslo1)>20)) $_SESSION['e_haslo']="Haslo musi posiadac od 8 do 20 if ($haslo1!=$haslo2) $_SESSION['e_haslo']="Podane hasla nie sa $haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);!!!wiersz 53 //echo $haslo_hash; exit(); //wyświetlenie zahaszowanego hasła regulaminu!"; //Czy zaakceptowano regulamin? if (!isset($_post['regulamin'])) $_SESSION['e_regulamin']="Potwierdz akceptacje //Bot or not? Oto jest pytanie! true; //Zapamietaj wprowadzone dane $_SESSION['fr_nick'] = $nick; $_SESSION['fr_email'] = $email; $_SESSION['fr_haslo1'] = $haslo1; $_SESSION['fr_haslo2'] = $haslo2; if (isset($_post['regulamin'])) $_SESSION['fr_regulamin'] = require_once "connect.php"; mysqli_report(mysqli_report_strict); try $polaczenie = new mysqli($host, $db_user, $db_password, $db_name); if ($polaczenie->connect_errno!=0) 3
throw new Exception(mysqli_connect_errno()); else //Czy email juz istnieje? $rezultat = $polaczenie->query("select id FROM uzytkownicy WHERE email='$email'"); if (!$rezultat) throw new Exception($polaczenie->error); $ile_takich_maili = $rezultat->num_rows; if($ile_takich_maili>0) $_SESSION['e_email']="Istnieje juz konto przypisane do tego adresu e-mail!"; //Czy nick jest juz zarezerwowany? $rezultat = $polaczenie->query("select id FROM uzytkownicy WHERE user='$nick'"); if (!$rezultat) throw new Exception($polaczenie->error); $ile_takich_nickow = $rezultat->num_rows; if($ile_takich_nickow>0) $_SESSION['e_nick']="Istnieje juz gracz o takim nicku! Wybierz inny."; dodajemy gracza do bazy if ($wszystko_ok==true) //Hurra, wszystkie testy zaliczone, if ($polaczenie->query("insert INTO uzytkownicy VALUES (NULL, '$nick', '$haslo_hash', '$email', 100, 100, 100, 14)")) witamy.php'); $_SESSION['udanarejestracja']=true; Exception($polaczenie->error); else header('location: throw new $polaczenie->close(); catch(exception $e) 4
echo '<span style="color:red;">blad serwera! Przepraszamy za niedogodnosci i prosimy o rejestracje w innym terminie!</span>'; echo '<br />Informacja developerska: '.$e; <!DOCTYPE HTML> <html lang="pl"> <head> <meta charset="utf-8" /> <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1" /> <title>osadnicy - zalóz darmowe konto!</title> <script src='https://www.google.com/recaptcha/api.js'></script> <style> </style> </head>.error color:red; margin-top: 10px; margin-bottom: 10px; <body> <form method="post"> Nickname: <br /> <input type="text" value=" if (isset($_session['fr_nick'])) echo $_SESSION['fr_nick']; unset($_session['fr_nick']); " name="nick" /><br /> if (isset($_session['e_nick'])) echo '<div class="error">'.$_session['e_nick'].'</div>'; unset($_session['e_nick']); E-mail: <br /> <input type="text" value=" if (isset($_session['fr_email'])) echo $_SESSION['fr_email']; unset($_session['fr_email']); " name="email" /><br /> if (isset($_session['e_email'])) 5
echo '<div class="error">'.$_session['e_email'].'</div>'; unset($_session['e_email']); Twoje haslo: <br /> <input type="password" value=" if (isset($_session['fr_haslo1'])) echo $_SESSION['fr_haslo1']; unset($_session['fr_haslo1']); " name="haslo1" /><br /> if (isset($_session['e_haslo'])) echo '<div class="error">'.$_session['e_haslo'].'</div>'; unset($_session['e_haslo']); Powtórz haslo: <br /> <input type="password" value=" if (isset($_session['fr_haslo2'])) echo $_SESSION['fr_haslo2']; unset($_session['fr_haslo2']); " name="haslo2" /><br /> <label> <input type="checkbox" name="regulamin" if (isset($_session['fr_regulamin'])) echo "checked"; unset($_session['fr_regulamin']); /> Akceptuje regulamin </label> if (isset($_session['e_regulamin'])) echo '<div class="error">'.$_session['e_regulamin'].'</div>'; unset($_session['e_regulamin']); </body> </html> </form> <br /> <input type="submit" value="zarejestruj sie" /> 6
Skrypt index.php if ((isset($_session['zalogowany'])) && ($_SESSION['zalogowany']==true)) header('location: gra.php'); exit(); <!DOCTYPE HTML> <html lang="pl"> <head> <meta charset="utf-8" /> <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1" /> <title>osadnicy - gra przegladarkowa</title> </head> <body> Tylko martwi ujrzeli koniec wojny - Platon<br /><br /> <a href="rejestracja.php">rejestracja - zalóz darmowe konto!</a> <br /><br /> <form action="zaloguj.php" method="post"> /><br /> Login: <br /> <input type="text" name="login" /> <br /> Haslo: <br /> <input type="password" name="haslo" /> <br <input type="submit" value="zaloguj sie" /> </body> </html> </form> if(isset($_session['blad'])) echo $_SESSION['blad']; Skrypt zaloguj.php if ((!isset($_post['login'])) (!isset($_post['haslo']))) exit(); require_once "connect.php"; 7
$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name); if ($polaczenie->connect_errno!=0) echo "Error: ".$polaczenie->connect_errno; else $login = $_POST['login']; $haslo = $_POST['haslo']; $login = htmlentities($login, ENT_QUOTES, "UTF-8"); if ($rezultat = @$polaczenie->query( sprintf("select * FROM uzytkownicy WHERE user='%s'", mysqli_real_escape_string($polaczenie,$login)))) $ilu_userow = $rezultat->num_rows; if($ilu_userow>0) $wiersz = $rezultat->fetch_assoc(); $wiersz['drewno']; $wiersz['kamien']; $wiersz['zboze']; $wiersz['email']; $wiersz['dnipremium']; if (password_verify($haslo, $wiersz['pass'])) $_SESSION['zalogowany'] = true; $_SESSION['id'] = $wiersz['id']; $_SESSION['user'] = $wiersz['user']; $_SESSION['drewno'] = $_SESSION['kamien'] = $_SESSION['zboze'] = $_SESSION['email'] = $_SESSION['dnipremium'] = else unset($_session['blad']); $rezultat->free_result(); header('location: gra.php'); $_SESSION['blad'] = '<span style="color:red">nieprawidlowy login lub haslo!</span>'; else $_SESSION['blad'] = '<span style="color:red">nieprawidlowy login lub haslo!</span>'; $polaczenie->close(); 8
Skrypt gra.php if (!isset($_session['zalogowany'])) exit(); <!DOCTYPE HTML> <html lang="pl"> <head> <meta charset="utf-8" /> <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1" /> <title>osadnicy - gra przegladarkowa</title> </head> <body> echo "<p>witaj ".$_SESSION['user'].'! [ <a href="logout.php">wyloguj sie!</a> ]</p>'; echo "<p><b>drewno</b>: ".$_SESSION['drewno']; echo " <b>kamien</b>: ".$_SESSION['kamien']; echo " <b>zboze</b>: ".$_SESSION['zboze']."</p>"; </body> </html> echo "<p><b>e-mail</b>: ".$_SESSION['email']; echo "<br /><b>dni premium</b>: ".$_SESSION['dnipremium']."</p>"; Skrypt witamy.php if (!isset($_session['udanarejestracja'])) exit(); else unset($_session['udanarejestracja']); //Usuwanie zmiennych pamietajacych wartosci wpisane do formularza if (isset($_session['fr_nick'])) unset($_session['fr_nick']); 9
if (isset($_session['fr_email'])) unset($_session['fr_email']); if (isset($_session['fr_haslo1'])) unset($_session['fr_haslo1']); if (isset($_session['fr_haslo2'])) unset($_session['fr_haslo2']); if (isset($_session['fr_regulamin'])) unset($_session['fr_regulamin']); //Usuwanie bledów rejestracji if (isset($_session['e_nick'])) unset($_session['e_nick']); if (isset($_session['e_email'])) unset($_session['e_email']); if (isset($_session['e_haslo'])) unset($_session['e_haslo']); if (isset($_session['e_regulamin'])) unset($_session['e_regulamin']); if (isset($_session['e_bot'])) unset($_session['e_bot']); <!DOCTYPE HTML> <html lang="pl"> <head> <meta charset="utf-8" /> <meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1" /> <title>osadnicy - gra przegladarkowa</title> </head> <body> Dziekujemy za rejestracje w serwisie! Mozesz juz zalogowac sie na swoje konto!<br /><br /> </body> </html> <a href="index.php">zaloguj sie na swoje konto!</a> <br /><br /> Skrypt logout.php session_unset(); 10