E.14 Bazy Danych cz. 19 SQL i PHP współpraca przez stronę internetową

Podobne dokumenty
Baza danych do przechowywania użytkowników

Zajęcia 11 wykorzystanie MySQL w PHP

0.1 Logowanie do serwisu

Rejestracja i Logowania - PHP/MySQL

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Aplikacje internetowe

Podstawy programowania (PHP/Java)

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Wprowadzenie do Internetu Zajęcia 5

Bazy danych. dr Radosław Matusik. radmat

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Internetowe bazy danych

Dokumentacja SQL API 1

Projektowanie systemów baz danych

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych w PHP dla początkujących

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Politechnika Częstochowska. Projektowanie systemów użytkowych II

Obiektowe bazy danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Bazy danych. Polecenia SQL

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Instalacja MySQL.

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Język SQL, zajęcia nr 1

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr Prosta obsługa Bazy w PHP

Bazy danych i usługi sieciowe

Aplikacje internetowe - laboratorium

Projekt-bazy danych Poczta

MVC w praktyce tworzymy system artykułów. cz. 2

SIECI KOMPUTEROWE I BAZY DANYCH

Wykład 5: PHP: praca z bazą danych MySQL

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Aplikacje WWW - laboratorium

Projekt strony internetowej firmy organizującej przyjęcia

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Język PHP. Studium Podyplomowe Sieci Komputerowe i Aplikacje Internetowe. v1.7, 2007/11/23

Programowanie internetowe

Bazy Danych i Usługi Sieciowe

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

Aplikacje WWW - laboratorium

Przykładowa integracja systemu Transferuj.pl

Internetowe bazy danych

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Laboratorium 1 Wprowadzenie do PHP

Przykładowa integracja systemu tpay.com KIP S.A. ul. Św. Marcin 73/ Poznań.

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Dokumentacja smsapi wersja 1.4

Sieci Komputerowe. Laboratorium 5 - usługi sieciowe cz. 1 Maciej Szymański 28 kwietnia 2014

Na początku utworzymy formularz w czystym języku HTML i przetestujemy go za pomocą przeglądarki WWW.

Współpraca PHP z MySql

Obraz 1. Fragment bazy Salon

Wykład 5. SQL praca z tabelami 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Podstawowe wykorzystanie Hibernate

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Komunikacja z bazą danych psql

Zaawansowane bazy danych i hurtownie danych

Wdrożenie modułu płatności eservice. dla systemu Magento

Szablon główny (plik guestbook.php) będzie miał postać:

Hurtownia Świętego Mikołaja projekt bazy danych

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Połączenie Partnera z serwisem JustPay poprzez - METODĘ 1 (paczki kodów)

Udostępnianie klientom zasobów serwera

Polskie znaki w bazie danych

Referat z przedmiotu Technologie Internetowe SPIS TREŚCI

Aplikacje WWW - laboratorium

Wykład 05 Bazy danych

Język SQL, zajęcia nr 2

Aplikacje WWW - laboratorium

Systemy internetowe Wykład 3 PHP

Liczniki odwiedzin. Licznik odwiedzin na plikach

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Moja baza danych ma pomóc utrzymać studenta przy życiu przy minimum kosztów.

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Widok Connections po utworzeniu połączenia. Obszar roboczy

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Formularze HTML. dr Radosław Matusik. radmat

PHP + MySQL w laboratorium (1)

Programowanie internetowe

Internetowe bazy danych

Aplikacje WWW - laboratorium

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Udostępnianie klientom zasobów serwera

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Programowanie w języku Java. Bazy danych SQLite w Javie

Podyplomowe Studium Programowania i Baz Danych

6. Bezpieczeństwo przy współpracy z bazami danych

Projekt bazy danych. Schemat bazy danych. Opis bazy danych

Transkrypt:

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