Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
System logowania ( dość skomplikowany )
#1
Witam, mam pewien problem. Chciałbym zrobić dość skomplikowany system logowania na stronę ( w zasadzie nie chodzi tu o bezpieczeństwo ). Sprawa polega na tym :
1. Na stronie logowania powinny być dwa pola typu input :
pierwsze pole odpowiadałoby za przeniesienie na konkretną stronę, tzn. że po naciśnięciu przycisku zaloguj przeniosło na odpowiednią stronę zależnie od wprowadzonych danych ( np. wpisałem 23, po naciśnięciu jestem przekierowywany na stronę 23.html )
drugie pole odpowiadałoby za nazwę użytkownika na następnej stronie - tzn. po wpisaniu nr użytkownika, na stronie na którą jesteś przeniesiony ( zależnie od wartości w pierwszym polu ) na górze jest napisana nazwa użytkownika. ( np. wpisałem nr : " 5 " i na następnej stronie jest napisane " Jesteś zalogowany jako Jan Kowalski ".
2. Do tworzenia stron używam tylko html, czy jest możliwe wklejenie tego modułu logowania jako jakiegoś skryptu wewnątrz kodu HTML ??
3. Chciałbym, aby użytkownik był zapamiętany jako ciasteczka, które można usunąć podczas naciśnięcia przycisku WYLOGUJ .

Wiem, że to wszystko dość skomplikowane, ale czy mógłby ktoś podać chociaż część kodu ?? Z góry dzięki.
Odpowiedz
#2
Baza Danych Tongue
Odpowiedz
#3
mam tam jakiś skrypt, wymaga PHP i MySQL

config.php
Jest to plik, w którym zapiszemy sobie konfiguracje bazy MySQL tak, byśmy mieli do niej łatwy i szybki dostęp.

Kod PHP:
<?php
//1
$db_user "użytkownik";
$db_server "serwer";
$db_pass "hasło";
$db_name "nazwa bazy danych";
?>

1. Zmiennym przypisujemy dane wymagane do połączenia się z bazą danych MySQL. Kolejno są to: nazwa użytkownika, adres serwera, hasło oraz nazwa bazy danych.

sessions.php
Tutaj trzymać będziemy funkcje obsługujące logowanie i wylogowywanie.
Kod:
Kod PHP:
<?php

//2
session_start();

//3
function auth()
{
    return 
$_SESSION["USER_AUTH"];
}

//4
function login$login )
{
    
$_SESSION["USER_AUTH"]=TRUE;
    
$_SESSION["USER_ID"]=$login;   
}

//5
function logout()
{
    
$_SESSION["USER_AUTH"]=FALSE;
    
$_SESSION["USER_ID"]="";   
}

//6
if( $_GET['action']=="logout" ){ logout(); }

?>

2. Rozpoczynamy sesje. Ważnym jest, by ta funkcja znalazła się zawsze na początku, gdyż wysyła ona do przeglądarki odpowiednie nagłówki, i poprzedzona przez cokolwiek innego - nie zadziała.
3. Zwraca wartość zmiennej $_SESSION["USER_AUTH"].
4. Nadaje zmiennym odpowiednie wartości (dzięki nim, użytkownik będzie traktowany jako zalogowany).
5. Przywraca zmiennym wartości domyślne, by użytkownik był traktowany jako wylogowany.
6. Po wklepaniu w przeglądarkę adresu naszastrona.pl/index.php?action=logout (albo po kliknięciu na taki link), zostaniemy wylogowani.

login.php
Tutaj znajduje się formularz logowania i funkcja, która go obsługuje

Kod PHP:
<?php
//7
echo"
<form action=\"index.php?action=login\" method=post>
<input class=login type=text name=login></input>
<input class=login type=password name=pass></input>
<input class=submit type=submit value=OK></input>
</form>
"
;

//8
if( $_GET['action']=="login" )
{

//9
$login $_POST['login'];
$pass md5($_POST['pass']);

//10
$db mysql_connect$db_server$db_user$db_pass );
mysql_select_db$db_name );
$query "SELECT `password` FROM `users` WHERE `login`='$login'";
$query mysql_query$query );
$haslo mysql_fetch_row$query );

//11
if( $haslo[0]==$pass )
{
    
login$login );
    echo
"<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=index.php\">";
}
else{ echo
"Zły login lub hasło!"; }

mysql_close$db );
}
?>

7. Wyświetlenie odpowiedniego formularza. Można sobie go odpowiednio podrasować css'em, żeby był ładny Wink
8. Sprawdza, czy zostało zarządane logowanie (np. po kliknięciu w link naszastrona.pl/index.php?action=login)
9. Pobranie zmiennych z formularza, zakodowanie hasła, by później mogło zostać porównane z tym z bązą danych.
10. Połączenie z bazą danych, wybranie odpowiedniej bazy, wysłanie zapytania o hasło do konkretnego loginu.
11. Porównanie wpisanego hasła, z hasłem z bazy danych. Jeżeli poprawne, następuje zalogowanie i przekierowanie, jezeli błędne, wyświetla komunikat o niepoprawności hasła.

index.php
Tutaj wszystko razem.
Kod PHP:
<?php
//12
include("config.php");
include(
"sessions.php");

//13
if($_SESSION["USER_AUTH"]==TRUE){ include("panel.php"); }
else
{
include(
"login.php");
include(
"register.php"); }
?>

12. Załączenie potrzebnych plików, czyli danych potrzebnych do logowania oraz funkcji obsługi sesji.
13. Sprawdzenie, czy użytkownik jest zalogowany. Jeżeli tak, wyświetlamy treść dostępną tylko dla zalogowanych, jeżeli nie, wyświetlamy formularz logowania.

install.php
Teraz pozostaje nam tylko stworzyć odpowiednią baze danych i tabele, oraz pierwszego użytkownika. Jeżeli nie potrafisz tego zrobić ręcznie, możesz skorzystać z tego skryptu (zapisać na serwerze i po prostu uruchomić w przeglądarce):

Kod PHP:
<?php
include("config.php");
echo
"Łączenie z bazą danych... ";
if ( 
$db mysql_connect$db_server$db_user$db_pass ) ){ echo "<b>OK</b><BR>"; }
else{ echo
"<strike>BŁĄD</strike><BR>"; }
echo
"Wybieranie bazy danych... ";
if ( 
$log mysql_select_db$db_name ) ){ echo "<b>OK</b><BR>"; }
else{ echo
"<strike>BŁĄD</strike><BR>"; }
echo
"Tworzenie tabel... ";
$query "CREATE TABLE users (id integer NOT NULL AUTO_INCREMENT, login char(16), password char(32), PRIMARY KEY(id))";
if ( 
$log mysql_query($query) ){ echo "<b>OK</b><br>"; }
else{ echo
"<strike>BŁĄD</strike><BR>"; }
echo
"Dodawanie potrzebnych wpisów... ";
$haslo md5("TUTAJ_NASZE_HASŁO");
$login "TUTAJ_NASZ_LOGIN";
$query "INSERT INTO `users` (`id`, `login`, `password`) VALUES ('', '$login', '$haslo') ";
if ( 
$log mysql_query($query) ){ echo "<b>OK</b><br>Instalacja zakończona pomyślnie!"; }
else{ echo
"<strike>BŁĄD</strike><BR>"; }
mysql_close($db);
?>

Atrybuty $haslo oraz $login odpowiadają za pierwszego użytkownika. Więc wpisz w odpowiednie miejsca swoje dane, np.:

Kod PHP:
$haslo md5("darkwarez");
$login "admin";


register.php
Rejestracja nowych użytkowników

<?php

//14
echo"
<form action=\"index.php?action=register\" method=post>
<input class=login type=text name=login></input>
<input class=login type=password name=pass></input>
<input class=submit type=submit value=Rejestruj></input>
</form>
"
;

//15
if( $_GET['action']=="register" && isset($_POST['login']) && isset($_POST['pass']) )
{

//16
$login $_POST['login'];
$pass md5($_POST['pass']);
//17

$db mysql_connect$db_server$db_user$db_pass );
mysql_select_db$db_name );
$query "SELECT `password` FROM `users` WHERE `login`='$login'";
$query mysql_query$query );
$haslo mysql_fetch_row$query );
//18

if( isset($haslo[0]) ) { echo"Taki użytkownik już istnieje!"; }
else
{
//19

    
$query "INSERT INTO `users` (`id`, `login`, `password`) VALUES ('', '$login', '$pass') ";
    if( 
$log mysql_query($query) ){ echo "<b>OK</b><br>Zostałeś zarejestrowany!"; }
    else{ echo
"Coś poszło nie tak.<BR>"; }
}
mysql_close$db );
}
?>

14. Wyświetlamy taki sam formularz jak przy logowaniu.
15. Analogicznie jak w pliku login.php, sprawdzamy, czo została zarządana rejestracja (np. po kliknięciu w link naszastrona.pl/index.php?action=register). Tutaj dodajemy jeszcze dwa warunki - pola login i pass nie mogą być puste.
16. Pobranie zmiennych z formularza, zakodowanie hasła, by później mogło zostać wysłane do bazy w odpowiedniej, bezpiecznej formie.
17. Połączenie z bazą danych, wybranie odpowiedniej bazy, wysłanie zapytania o hasło do konkretnego loginu w celu sprawdzenia czy taki login w ogóle istnieje (oczywiście, powinno się to zrobić w inny sposób, ale z lenistwa po prostu skopiowałem kod z pliku login.php Wink).
18. Sprawdzamy, czy nie ma już użytkownika o takim samym loginie.
19. Jeśli wszystko jest ok, dodajemy odpowiedni rekord do bazy. Użytkownik już istnieje.

kick.php
Proste zabezpieczenie przed nieautoryzowanym, bezpośrednim dostępem do plików chronionych.

Kod PHP:
<?php

//20
if(!$_SESSION["USER_AUTH"]==TRUE)
{
    echo 
"Nie masz prawa tego ogladac.";
//21
    
exit();
}

?>

20. Sprawdzamy, czy user jest zalogowany.
21. Jeżeli nie - cały dalszy kod przestanie być wykonywany.

panel.php
Sprawdzamy, czy wszystko chodzi tak, jak powinno.

//22
<?php include("kick.php"); ?>

//23
<a href="index.php?action=logout">Wyloguj</a> 

22. Kod pliku panel.php rozpocznie się od sprawdzenia, czy użytkownik jest zalogowany. Jeżeli test się nie powiedzie, wyświetli się krótki komunikat, a wykonywanie całej strony dla bezpieczeństwa zostanie przerwane. Od teraz, dzięki krótkiej linijce jesteśmy w stanie zabezpieczyć dowolny plik przed nieautoryzowanym dostępem - wystarczy, że wstawimy ją na jego początku.

Kod PHP:
<?php include("kick.php"); ?>


Po takim zabiegu, panel rejestracji zostanie wyświetlony pod panelem służącym do logowania. Cały system jest gotowy.

Uwaga! Chcąc wzbogacić plik index.php o jakiekolwiek inne elementy, musimy pamiętać tylko o tym, by na samym początku include'ować pliki sessions.php i config.php. Przykładowo, może to wyglądać tak:
Kod PHP:
<?php
include("config.php");
include(
"sessions.php");
?>

<html>
<head>
</head>
<body>
<h3>Logowanie</h3>


<?php
if($_SESSION["USER_AUTH"]==TRUE){ include("panel.php"); }
else
{
include(
"login.php");
include(
"register.php");
}
?>

</body>
</html> 
Tworze strony WWW (xHTML + CSS + grafika) na zamówienie.
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [PHP] Pytanie: System newsów Sebjekt 6 4,414 17-05-2012, 01:29
Ostatni post: Sebjekt
  System głosowania Gekku 1 2,256 16-11-2011, 23:47
Ostatni post: R_Rafalsky
  Problem ze skryptem logowania. Lampek 0 1,474 23-08-2011, 21:00
Ostatni post: Lampek
  Banner z oknem do logowania borys24 2 3,246 14-06-2011, 01:33
Ostatni post: borys24
  system płacenia na stronie Nicorrtiss 7 5,394 30-04-2011, 02:46
Ostatni post: Pedro84

Skocz do:


Użytkownicy przeglądający ten wątek:
Sponsorzy i przyjaciele
SeoHost.pl