[Tutorial][PHP] Skrypt logowania

Tworzenie i zarządzanie stronami WWW

[Tutorial][PHP] Skrypt logowania

Postprzez Mathew » 05.04.2010 (Pn) 11:11

Skrypt będzie bardzo prosty, z powodu późnej godziny ;) Na zegarku jest 1:19, lany poniedziałek.
Dziś zajmiemy się panelem logowania opartym o dane jednego użytkownika i sesje.
Kod będę umieszczać kawałkami, opisując działanie skryptu. A więc zaczynamy.

Skrypt będzie się opierał o jeden plik php. Tworzymy pusty plik w naszym edytorze i nadajemy mu kodowanie UTF-8 bez BOM.

Kod: Zaznacz cały
<?php //1
session_start(); //2

// edytuj dane do logowania
$login 'admin'//5
$haslo 'haslo'//6 



Pierwszej linijki chyba nikomu nie muszę tłumaczyć. Zaczniemy od drugiej linijki. Zaczynamy od otwarcia sesji. Musimy pamiętać, że sesje otwieramy na samym
początku naszego skryptu i nie może być poprzedzona żadnymi innymi znakami. Linijka piąta i szósta to nasze dane do logowania, z których będziemy korzystać.
Należy je zmienić na własne, unikalne i nie znane nikomu hasła. Dzięki nim będziemy mogli zalogować się do panelu.

Kod: Zaznacz cały
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"CIACH://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="CIACH://www.w3.org/1999/xhtml">
<head>
  <title>Panel Logowania</title>
  <meta CIACH-equiv="content-language" content="pl" />
  <meta CIACH-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>'


Tworzymy nagłówek, head oraz otwieramy znacznik body naszej strony. Teraz przejdziemy do serca naszego skryptu. Cały skrypt będzie miał kilka zadań. Pierwszym
z nich będzie wyświetlenie formularzu logowania, sprawdzenie poprawności wpisanych danych i wylogowanie. Zaczniemy trochę od tyłu, gdyż najpierw
zajmiemy się wylogowywaniem.

Kod: Zaznacz cały
// wylogowywanie z panelu 
if ($_GET['s'] == 'wyloguj'){
    unset(
$_SESSION['logowanie']);
    echo 
'Zostałeś pomyślnie wylogowany. Przejdź do <a href="index.php">logowania</a>.';


Wylogowywanie będzie odbywało się poprzez dodawanie do adresu strony, w naszym przypadku index.php, kilku znaków a dokładniej ?s=wyloguj i właśnie tą sytuację wychwytują powyższe linijki. Cała zabawa polega na tym, że musimy usunąć sesję którą przypiszemy podczas logowania, ale o tym poniżej.

Kod: Zaznacz cały
// wyświetlanie zawartości panelu 
elseif ($_SESSION['logowanie'] == 'zalogowany'){
    echo 
'Witaj w panelu. <a href="index.php?s=wyloguj">Wyloguj</a>.';


Drugą opcją, którą będzie rozpatrywał nasz skrypt będzie sytuacja, w której użytkownik został już zalogowany. Nastąpi wyświetlenie zawartości panelu. Jak
widzimy sesja logowanie została porównana do wartości zalogowany, jeśli sesja przechowuje wartość zalogowany, to nastąpi wyświetlenie zawartości panelu. W
naszym wypadku będzie to treść Witaj w panelu. oraz link do wylogowania.

Kod: Zaznacz cały
// logowanie do panelu 
elseif((!empty($_POST['login'])) && (!empty($_POST['haslo']))){
    
//sprawdzania poprawności danych
    
if(($_POST['login'] == $login) && ($_POST['haslo'] == $haslo)){
        
$_SESSION['logowanie'] = 'zalogowany';
        echo 
'Witaj w panelu. <a href="index.php?s=wyloguj">Wyloguj</a>.';
    }
    
// wyświetlanie komunikatu w przypadku błędnych danych
    
else{
        echo 
'Podane błędne dane. <a href="javascript:history.back()">Cofnij</a>.';
    }


Przechodzimy teraz do walidacji danych do logowania. Sprawdzimy czy wpisane w formularzu dane są takie same jak te podane na samym początku naszego skryptu.
Jeśli będą poprawne przypiszemy dla sesji logowanie wartość zalogowany i wyświetlimy zawartość naszego panelu. Jeśli dane będą błędne wyświetli się komunikat
o niepoprawności danych i link do cofnięcia.

Kod: Zaznacz cały
// formularz logowania
else{
    echo 
'<form action="index.php" method="post">
    <table class="logowanie">
      <tbody>
        <tr>
          <td colspan="2">Panel Logowania</td>
        </tr>
        <tr>
          <td>Login: </td>
          <td><input type="text" name="login" /></td>
        </tr>
        <tr>
          <td>Hasło: </td>
          <td><input type="password" name="haslo" /></td>
        </tr>
        <tr>
          <td colspan="2"><input type="submit" value="Wyślij" /></td>
        </tr>
      </tbody>
    </table>  
  </form>'
;


Wyświetlamy ostatnią część naszego panelu, a mianowicie formularz logowania. Musimy pamiętać, żeby wartości name były takie same jak wartości w $_POST w poprzednim
kodzie.

Kod: Zaznacz cały
?>
</body>
</html>


Na sam koniec pozostaje nam zamknięcie kodu PHP i znaczników html.

Demo (admin/haslo)

Cały kod
Kod: Zaznacz cały
<?php
session_start
();

// dane do logowania
$login 'admin';
$haslo 'haslo';

echo 
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"CIACH://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="CIACH://www.w3.org/1999/xhtml">
<head>
  <title>Panel Logowania</title>
  <meta CIACH-equiv="content-language" content="pl" />
  <meta CIACH-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>'
;


// wylogowywanie z panelu administracyjnego
if ($_GET['s'] == 'wyloguj'){
    unset(
$_SESSION['logowanie']);
    echo 
'Zostałeś pomyślnie wylogowany. Przejdź do <a href="index.php">logowania</a>.';
}

// wyświetlanie zawartości panelu administracyjnego
elseif ($_SESSION['logowanie'] == 'zalogowany'){
    echo 
'Witaj w panelu. <a href="index.php?s=wyloguj">Wyloguj</a>.';
}

// logowanie do panelu administracyjnego
elseif((!empty($_POST['login'])) && (!empty($_POST['haslo']))){
    
//sprawdzania poprawności danych
    
if(($_POST['login'] == $login) && ($_POST['haslo'] == $haslo)){
        
$_SESSION['logowanie'] = 'zalogowany';
        echo 
'Witaj w panelu. <a href="index.php?s=wyloguj">Wyloguj</a>.';
    }
    
// wyświetlanie komunikatu w przypadku błędnych danych
    
else{
        echo 
'Podane błędne dane. <a href="javascript:history.back()">Cofnij</a>.';
    }
}

// formularz logowania
else{
    echo 
'<form action="index.php" method="post">
    <table class="logowanie">
      <tbody>
        <tr>
          <td colspan="2">Panel Logowania</td>
        </tr>
        <tr>
          <td>Login: </td>
          <td><input type="text" name="login" /></td>
        </tr>
        <tr>
          <td>Hasło: </td>
          <td><input type="password" name="haslo" /></td>
        </tr>
        <tr>
          <td colspan="2"><input type="submit" value="Wyślij" /></td>
        </tr>
      </tbody>
    </table>  
  </form>'
;
}
?>
</body>
</html>


Artykuł jest moją własnością i zakazuje wykorzystywania go bez pytania na innych stronach lub forach.
Ostatnio edytowano 06.04.2010 (Wt) 13:06 przez Kpc21, łącznie edytowano 2 razy
Powód: Przyklejam //Kpc21 kolorowanie składni //Kpc21
Asus K50IJseries, T4200, 15,6'' HD, 4Gb DDR2, 250Gb, Win Seven Ultimate 32 bit
Nie pomagam via GG.


SBrothers.pl - Agencja interaktywna
SBshop.pl - Internetowy sklep sportowy
Avatar użytkownika
Mathew
Specjalista Webmaster
 
Posty: 7
Dołączył(a): 25.03.2010 (Cz) 20:00
Lokalizacja: Piła
System: Win 7
    Nieznany Nieznana

Re: [Tutorial][PHP] Skrypt logowania

Postprzez Czajo » 06.04.2010 (Wt) 10:22

proponuję dodać jeszcze numerację linijek, bo kod jest dosyć obszerny i nie każdy będzie liczył linijki :P
Obrazek
|200 post 5 sierpień 2010 14:51|Obrazek
[color=#0000FF][b]
Avatar użytkownika
Czajo
Administrator
 
Posty: 182
Dołączył(a): 14.07.2009 (Wt) 19:47
Lokalizacja: Giżycko
Twój znajomy: Adax
System: Windows XP
    Nieznany Nieznana

Re: [Tutorial][PHP] Skrypt logowania

Postprzez Kpc21 » 06.04.2010 (Wt) 13:05

Nie da rady, a gdyby to ręcznie numerować, kod kopiowałby się z numerami.

Kopiujesz to do jakiegoś edytora z kolorowaniem składni (np. Notepad++, kED) i masz już numerację :)

W phpBB można co najwyżej włączyć kolorowanie składni (code=php) co za chwilę zrobię.
format c: - najlepszy sposób na wszelkie problemy z Windowsem...
Kpc21
Administrator CENCO
 
Posty: 302
Dołączył(a): 05.08.2009 (Śr) 20:15
Twój znajomy: adax
System: Arch Linux
    Nieznany Nieznana

Re: [Tutorial][PHP] Skrypt logowania

Postprzez Mathew » 06.04.2010 (Wt) 16:20

Brawo za to kolorowanie bo bardzo ładnie teraz wygląda ;)
Asus K50IJseries, T4200, 15,6'' HD, 4Gb DDR2, 250Gb, Win Seven Ultimate 32 bit
Nie pomagam via GG.


SBrothers.pl - Agencja interaktywna
SBshop.pl - Internetowy sklep sportowy
Avatar użytkownika
Mathew
Specjalista Webmaster
 
Posty: 7
Dołączył(a): 25.03.2010 (Cz) 20:00
Lokalizacja: Piła
System: Win 7
    Nieznany Nieznana

Re: [Tutorial][PHP] Skrypt logowania

Postprzez jowiczz23 » 13.09.2013 (Pt) 15:03

fajnie to teraz wygląda, podoba mi się
jowiczz23
NOWY
 
Posty: 2
Dołączył(a): 13.09.2013 (Pt) 14:34
System: Windows 8
    Windows 7 Chrome


Powrót do Webmastering

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości

cron