Rejestracja i Logowania - PHP/MySQL

Podobne dokumenty
Baza danych do przechowywania użytkowników

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

Zajęcia 11 wykorzystanie MySQL w PHP

Bazy danych w PHP dla początkujących

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

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Aplikacje WWW - laboratorium

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

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Internetowe bazy danych

Dokumentacja smsapi wersja 1.4

Aplikacje internetowe - laboratorium

Wprowadzenie do Internetu Zajęcia 5

Aplikacje internetowe

Instalacja MySQL.

Udostępnianie klientom zasobów serwera

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

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Internetowe bazy danych

Współpraca PHP z MySql cz.2

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

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

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

Udostępnianie klientom zasobów serwera

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Język SQL, zajęcia nr 1

Instrukcja obsługi/instalacji platformy Krok w Przedsiębiorczość Administrator platformy

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

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

0.1 Logowanie do serwisu

Współpraca PHP z MySql

Autor: Joanna Karwowska

14. POZOSTAŁE CIEKAWE FUNKCJE

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

Projekt strony internetowej firmy organizującej przyjęcia

Bazy danych. dr Radosław Matusik. radmat

Podstawy technologii WWW

Technologie Internetowe Raport z wykonanego projektu Temat: Internetowy sklep elektroniczny

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Wykład 5. SQL praca z tabelami 2

Paweł Cieśla. Dokumentacja projektu

Języki programowania wysokiego poziomu. PHP cz.3. Formularze

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Podstawowe wykorzystanie Hibernate

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Dynamiczne generowanie pliku PDF

Podstawy programowania (PHP/Java)

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

Języki programowania wysokiego poziomu. Forum


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

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Bazy danych i usługi sieciowe

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/1.1.1/2015

Praca Magisterska "System zdalnego składania ofert kupna i sprzedaży za pośrednictwem Internetu" AUTOR PROMOTOR

Aplikacje WWW - laboratorium

Bazy Danych i Usługi Sieciowe

Funkcje i instrukcje języka JavaScript

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

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

Projektowani Systemów Inf.

Aplikacje WWW - laboratorium

Laboratorium 4 sesje i logowanie

Instalacja systemu zarządzania treścią (CMS): Joomla

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Projektowanie systemów baz danych

Laboratorium 1 Wprowadzenie do PHP

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

Języki programowania wysokiego poziomu. Blog

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Instrukcja zarządzania kontem przedsiębiorstwa w serwisie internetowym

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

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

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

Skrócona instrukcja podstawowych zadań na portalu polska-szkola.pl

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

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Umieszczanie kodu. kod skryptu

SMS Kod Automatyczny

Aplikacje www laboratorium

Internetowe bazy danych

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

Języki programowania wysokiego poziomu. Ćwiczenia

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

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

Instrukcja zarządzania kontem jednostki samorządu terytorialnego w serwisie internetowym

PHP + MySQL w laboratorium (1)

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/4.1.4/2016

Wprowadzenie do Doctrine ORM

Instrukcja składania wniosku o dofinansowanie w systemie informatycznym IP na potrzeby konkursu nr 1/4.1.4/2015

Obiektowe bazy danych

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Wprowadzenie do JDBC z wykorzystaniem bazy H2

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

SSI Web 8. (badania.kozminski.edu.pl) Instrukcja logowania i uruchamiania ankiety

Dokumentacja serwisu internetowego Zespołu Szkół Technicznych w Radomiu.

Transkrypt:

Artykuł pobrano ze strony eioba.pl Rejestracja i Logowania - PHP/MySQL Opis skryptu służącego do rejestrowania oraz logowania się użytkowników z użyciem bazy danych. Aby w pełni zrozumieć poniższy artykuł należy posiadać wiedzę o: -zmiennych, -formularzach, -podstawowy PHP i MySQL. Utworzone zostanie 6 plików, które umożliwi nam obsługę logowania się użytkowników. Podczas opisywania kolejnych plików najpierw będę wklejał treść całego pliku a następnie wyjaśniał go krok po kroku. Pierwszy plik - conn.php <? define('db_host','localhost'); define('db_user','uzytkownik'); //wpisz nazwęużytkownika bazy danych define('db_pass','haslo'); //wpisz hasło dla tego użytkownika define('db_db','test'); $connect = mysql_connect(db_host, DB_USER, DB_PASS) or die('nie udało połączyc się z bazą danych. '.mysql_error()); mysql_select_db(db_db,$connect)?> Plik ten służy do połączenia się z bazą danych define('db_host','localhost'); define('db_user','uzytkownik'); define('db_pass','haslo'); define('db_db','test'); Definiujemy stałe, które umożliwią połączenie się z bazą danych: host naszej bazy, login i hasło do bazy oraz jej nazwę. $conn = mysql_connect(db_host, DB_USER, DB_PASS) or die('nie udało połączyć się z bazą danych. '.mysql_error());

Łączymy się z bazą danych, a w przypadku błędu wyświetlamy stosowny komunikat. Gdy będziemy już publikować naszą stronę należy usunąć.mysql_error() aby zwykły użytkownik nie ujrzał nazw tabel w naszej bazie danych w wypadku jakiegoś błędu. mysql_select_db(db_db,$connect) Wybieramy naszą bazę jako aktywną. Jest to cały plik który będziemy dołączać do innych fragmentów naszego kodu. Plik drugi install.php <? require 'conn.php'; $sql0="create database if not exists test"; mysql_query($sql0) or die(mysql_error()); $sql1="create table if not exists user( id int(11) NOT NULL auto_increment, login varchar(50) NOT NULL, password varchar (40) NOT NULL, PRIMARY KEY (id))"; mysql_query($sql1) or die(mysql_error()); echo('baza danych utworzona poprawnie')?> W tym pliku tworzymy bazę danych oraz wymaganą tabelę. require 'conn.php'; Dołączamy plik conn.php który wcześniej stworzyliśmy. $sql0="create database if not exists test";

mysql_query($sql0) or die(mysql_error()); Tworzymy zapytanie tworzące nową bazę danych o nazwie test oraz wykonujemy je. $sql1="create table if not exists user( id int(11) NOT NULL auto_increment, login varchar(30) NOT NULL, password varchar (40) NOT NULL, PRIMARY KEY (id))"; mysql_query($sql1) or die(mysql_error()); Tworzymy tabelę, która zawiera: -numer identyfikacyjny użytkownika (nie może być pusty, jest wypełniany automatycznie, nie może być dwóch takich samych wartości w bazie danych), -login użytkownika (nie może być pusty, maksimum 30 znaków), -hasło użytkownika(tu znajdzie się zakodowane hasło użytkownika). Plik ten należy usunąć z serwera po utworzeniu bazy danych. Plik trzeci register.php Plik umożliwiający rejestrację użytkownika <?php require('conn.php'); if (isset($_post['konto']) and isset($_post['password']) and isset($_post['password2'])) if ($_POST['password']==$_POST['password2']) $konto = mysql_real_escape_string (trim($_post['konto'])); $password = sha1(mysql_real_escape_string (trim($_post['password']))); $ile =mysql_query("select * FROM `user` WHERE login = '$konto'"); $ile = mysql_num_rows($ile); if ($ile==0)

$zapytanie="insert INTO user (login,password) VALUES('$konto','$password')"; mysql_query($zapytanie) or die("wystąpił błąd" ); echo('konto '.$konto.' zostalo utworzone'); else echo("taki uzytkownik juz istnieje. Kliknij wstecz aby zarejestrowac sie ponownie"); else echo ("Podane hasla nie zgadzaja sie"); else?> <html> <body> <h1>dodaj nowego uzytkow nika</h1> <form action="register.php" method="post"> <strong>nazwa konta:</strong><input name="konto" type="text" value="" /><br> <strong>haslo:</strong><input name="password" type="password" value="" /><br> <strong>powtorz haslo:</strong><input name="password2" type="password" value="" /><br> <input type="submit" value="zarejestruj" /> </form> </body> </html> <?php?>

Pierwszą czynnością jest dodanie pliku conn.php: require('conn.php'); if (isset($_post['konto']) and isset($_post['password']) and isset($_post['password2'])) Sprawdzamy czy istnieją zmienne $_POST['konto'], $_POST['password'] i $_POST['password2'] czyli czy przesłano dane z formularza. Jeśli istnieją sprawdzamy czy $_POST['password'] i $_POST['password2'] mają taką samą wartość. Gdy są różne wyświetlany jest stosowny komunikat: else echo ("Podane hasla nie zgadzaja sie"); Natomiast, gdy są takie same: $konto = mysql_real_escape_string (trim($_post['konto'])); Tworzymy zmienną $konto mająca wartość $_POST['konto'] jednak usuwamy tzw. białe znaki (funkcja trim() ) oraz dodajemy lewe ukośniki do niektórych znaków (mysql_real_escape_string()). Więcej informacji o tych funkcjach na stronie www.php.net

$password = sha1(mysql_real_escape_string (trim($_post['password']))); Tworzymy zmienną $password przekształcamy ja tak samo jak $konto jednak dodatkowo hashujemy ja za pomocą algorytmu SHA1 (można o tym poczytać na stronach wikipedii) $ile =mysql_query("select * FROM `user` WHERE login = '$konto'"); Wykonujemy zapytanie do bazy danych pobierając wszystkie wpisy gdzie login(cześć tabeli w bazie danych) ma taką samą wartość jak powstała zmienna $konto. $ile = mysql_num_rows($ile); Zmiennej $ile przypisujemy ilość otrzymanych rekordów. if ($ile==0) Sprawdzamy czy zmienna $ile jest równa zero. Jeśli nie znaczy to że ten login jest już w bazie danych. Wtedy wyświetlamy stosowny komunikat else echo("taki uzytkownik juz istnieje. Kliknij wstecz aby zarejestrowac sie ponownie"); Jeśli takiego użytkownika nie ma $zapytanie="insert INTO user (login,password) VALUES('$konto','$password')"; mysql_query($zapytanie) or die("wystąpił błąd" ); Dodajemy do bazy użytkownika o loginie równym $konto i hasle (zakodowanym) o wartości $password echo('konto '.$konto.' zostalo utworzone'); Informujemy o pomyślnym dodaniu użytkownika.

Wróćmy teraz do początku opisu tego pliku gdzie sprawdzamy czy istnieją zmienne $_POST['konto'], $_POST['password'] i $_POST['password2']. Rozpatrzyliśmy tylko możliwość, że istnieją. Gdy nie istnieją lub istnieją tylko niektóre z nich wtedy tworzony jest kod HTML wyświetlający formularz rejestracji: <html> <body> <h1>dodaj nowego uzytkownika</h1> <form action="register.php" method="post"> <strong>nazwa konta:</strong><input name="konto" type="text" value="" /><br> <strong>haslo:</strong><input name="password" type="password" value="" /><br> <strong>powtorz haslo:</strong><input name="password2" type="password" value="" /><br> <input type="submit" value="zarejestruj" /> </form> </body> </html> Tym samym omówiony został cały plik register.php Plik czwarty login.php <?php session_start(); if (isset($_post['konto']) and isset($_post['password']) ) require('conn.php'); $konto=mysql_real_escape_string(trim($_post['konto'])); $password=mysql_real_escape_string(trim($_post['password'])); if ($konto!="" and $password!="") $password = sha1($password);

$zapytanie="select id FROM user WHERE login='$konto' and password ='$password'"; $temp=mysql_query($zapytanie) or die("wystąpił błąd"); $ile=mysql_num_rows($temp); $temp=mysql_fetch_array($temp); $id=$temp['id']; if ($ile==1) $_SESSION['user_id']=$id; $_SESSION['login']=$konto; echo('zostales zalogowany. '); else echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.'); else?> <html> <body> <form action="login.php" method="post"> <strong>nazwa konta:</strong><input name="konto" type="text" value="" /><br> <strong>haslo:</strong><input name="password" type="password" value="" /><br> <input type="submit" value="zaloguj" /> </form> </body> </html> <?php?>

Na samym początku rozpoczynamy sesję przeglądarki session_start(); Następnie wykonywany jest kod, który został opisany przy wyjaśnianiu pliku register.php Dlatego nie będę wyjaśniał go drugi raz if (isset($_post['konto']) and isset($_post['password']) ) require('conn.php'); $konto=mysql_real_escape_string(trim($_post['konto'])); $password=mysql_real_escape_string(trim($_post['password'])); Dalsza część kodu sprawdza czy zmienne $konto i $password nie są puste po wykonaniu funkcji trim() if ($konto!="" and $password!="") Jeśli nie wartość zmiennej $password jest hashowana tak jak w pliku register.php $password = sha1($password); Tworzymy zapytanie do bazy danych pobierające id użytkownika, którego login równy jest $konto a hasło równe jest $password. $zapytanie="select id FROM user WHERE login='$konto' and password='$password'";

Zmiennej $temp przypisujemy wynik tego zapytania. $temp=mysql_query($zapytanie) or die("wystąpił błąd"); Następnie zmiennej $ile przypisujemy ilość zwróconych wpisów. $ile=mysql_num_rows($temp); $temp staje się tablicą zawierającą pobrane dane a $id przyjmuje wartość id użytkownika. $temp=mysql_fetch_array($temp); $id=$temp['id']; Sprawdzamy czy pobraliśmy jakies dane if ($ile==1) Jeśli tak to ustanawiamy zmienne sesyjne zawierające login użytkownika i jego id oraz wyświetlamy komunikat o pomyślnym załogowaniu. $_SESSION['user_id']=$id; $_SESSION['login']=$konto; echo('zostales zalogowany. '); Jeśli nie otrzymaliśmy danych oznacza to, że użytkownik podał błędne dane zatem informujemy go o tym. else echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.'); Znowu powracamy do początku opisu i sprawdzenia czy istnieją $_POST['konto'] oraz $_POST['password']. Jeśli nie istnieją (nie rozpatrzyliśmy tej opcji) Wyświetlamy HTML-owy formularz logowania <html> <body> <form action="login.php" method="post"> <strong>nazwa konta:</strong><input name="konto" type="text" value="" /><br> <strong>haslo:</strong><input name="password" type="password" value="" /><br> <input type="submit" value="zaloguj" />

</form> </body> </html> Plik piąty logout.php <? session_start(); session_unset(); session_destroy(); echo "Zostales Wylogowany";?> Ten plik niszczy ustanowione podczas logowania zmienne sesyjne i informuje użytkownika o tym Plik szósty index.php <?php session_start(); if (isset($_session['user_id']) and isset($_session['login'])) echo "Jestes zalogowany. "; echo "Twój login to: "; echo $_SESSION['login']; else echo "Nie jestes zalogowany";

W tym pliku po rozpoczęciu sesji sprawdzamy czy istnieją zmienne sesyjne $_SESSION['user_id'] oraz $_SESSION['login'] Jeśli tak znaczy to, że użytkownik jest zalogowany dlatego możemy poinformować go o tym echo "Jestes zalogowany. "; echo "Twój login to: "; echo $_SESSION['login']; Natomiast, gdy nie istnieją również wyświetlamy komunikat. echo "Nie jestes zalogowany"; Tym samym dobrnęliśmy do końca skryptu logowania i rejestracji w php. Więcej informacji o sesjach i użytych funkcjach można znaleźć na stronie www.php.net oraz http://pl.wikipedia.org/ Aby zwiększyć bezpieczeństwo należy również ustanawiać id dla każdej sesji jednak nie jest to konieczne dlatego zostało to pominięte. Jest to mój pierwszy artykuł dlatego proszę o wyrozumiałość. Ewentualne informacje o błędach lub pytania proszę zostawić w komentarzach. Piotr Jakimiak Autor: Piotr Jakimiak Artykuł pobrano ze strony eioba.pl