Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!
Strony WWWSerwery VPSDomenyHostingDarmowy Hosting CBA.pl
System rejestracji i logowania - Laj.c0.pl
16
Lip
2010
Bardzo wielu początkujących twórców stron www ma problemy ze stworzeniem systemu rejestracji użytkowników. Chciałbym wyjść naprzeciw ich oczekiwaniom i przedstawić bardzo prosty system tego typu. Jest on odarty ze wszelkiej zbędnej zawartości żeby ułatwić analizę kodu i nie zaśmiecać niepotrzebnie zbędnym kodem. Zaczynamy od utworzenia bazy danych MySQL, a następnie wklejenia do niej poniżeszego zrzutu tabeli
Kod:
CREATE TABLE `users` (
`id` int( 5 ) NOT NULL AUTO_INCREMENT ,
`login` varchar( 20 ) NOT NULL ,
`pass` varchar( 50 ) NOT NULL ,
`mail` varchar( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM DEFAULT CHARSET = utf8 COLLATE = utf8_polish_ci;

Na poodstawie powyższego zrzutu tabeli możemy wywnioskować że w tabeli znajdą się cztery informacje o użytkowniku, czyli unikalne ID, login, hasło oraz adres e-mail.

Aby nasza baza była obsługiwana potrzebujemy pliku db_config.php który uzupełniamy własnymi danymi
Kod:<?php
//MySQL config
define('SERVER','server'); //Serwer mysql
define('USER','admin');         //Użytkownik
define('PASS','pass'); //Hasło
define('DB','baza'); //Nazwa bazy danych
define('PREF','');         //Prefix tabel(koniecznie dodajemy na końcu _, to znacznie ułatwi sprawę)

function connection(){
mysql_connect(SERVER,USER,PASS) or die(mysql_error());
mysql_select_db(DB) or die(mysql_error());
}
?>

I od razu pewne wyjaśnienie. Adres serwera mysql otrzymamy od administracji naszego hostingu. Nazwę użytkownika bazy oraz jego hasło znamy z etapu tworzenia bazy(przy pomocy tych danych logujemy się do phpmyadmin, czyli systemu zarządzania naszą bazą MySQL). Nazwę bazy danych również powinniśmy znać, w końcu sami ją zakładaliśmy.
Prefix zaś to ciąg znaków występujący przed tabelami w bazie oddzielony od nazdy tabeli podkreślnikiem
Kod:
tabela        <-Nazwa tabeli bez prefiksu
pref_tabela    <-Nazwa tabeli z prefiksem

Nasza tabela w bazie nie ma obecnie żadnego prefixu, czyli zostawiamy to pole pustym.
Funkcja connection zaś ułatwia nam łączenie się z naszą bazą. Aby to zrobić wpisujemy po prostu tam gdzie nam potrzeba(tylko raz w każdym pliku): Kod:<?php connection(); ?>
Mając już plik sterujący bazą możemy zabrać się za tworzenie strony. Najprościej zacząć od strony głównej - index.php
Kod:
<?php
session_start(); //wklejamy w nagłowku każdej strony
require 'db_config.php';
connection();

if(!isset($_SESSION['zalogowany'])){ //Jeżeli użytkownik nie jest zalogowany pozwalamy mu na rejestracją lub zalogowanie
  echo'
  <a href="login.php">Zaloguj</a><br />
  <a href="register.php">Zarejestruj</a>';
}else{         //W przeciwnym wypadku umożliwiamy mu wylogowanie się
  echo'<a href="info.php?action=logout">Wyloguj '.$_SESSION['nick'].'</a>';
}

mysql_close();
?>

Zaczynamy od rozpoczęcia sesji, następnie potrzebny nam jest plik z naszym sterownikiem bazy danych, dołączamy więc go przy pomocy funkcji require(). Następnie łączymy się z bazą poprzez naszą funkcję connection(). Warto to zapamiętać będziemy tak robić w każdym pliku.
W dalszej części pliku mamy pierwszą prezentacją działania naszego systemu. Sprawdzamy czy istnieje zmienna sesyjna: Kod:$_SESSION['zalogowany'] I na podstawie wyniku tej operacji decydujemy czy użytkownik jest zalogowany w systemie czy też nie.


W następnym kroku zajmujemy się przygotowaniem stylu dla pól formularza. Etap ten można pominąć, jednak dla estetyki przyda się to na przyszłość gdyż wiele osób ma problemy z równym ustawieniem pól formularza. Nam pomoże w tym plik style.css
Kod:
fieldset.register {
  text-align:center;
padding: 0;
border:none;
}
label.register {
display:block;
width:150px;
float:left;
}
div.register {
overflow:hidden;
clear:both;

}
input.wyslij{
margin-left:150px;
display:inline;
}
input.register, textarea .register{
display:block;
float:left;
margin-bottom:auto;
}
form {
text-align:left;
width:300px;
}

Myślę że opisywanie CSS'a można pominąć, w końcu nie to jest naszym celem.

center>Strony:<< 1 2 >>Bardzo wielu początkujących twórców stron www ma problemy ze stworzeniem systemu rejestracji użytkowników. Chciałbym wyjść naprzeciw ich oczekiwaniom i przedstawić bardzo prosty system tego typu. Jest on odarty ze wszelkiej zbędnej zawartości żeby ułatwić analizę kodu i nie zaśmiecać niepotrzebnie zbędnym kodem. Zaczynamy od utworzenia bazy danych MySQL, a następnie wklejenia do niej poniżeszego zrzutu tabeli
Kod:
CREATE TABLE `users` (
`id` int( 5 ) NOT NULL AUTO_INCREMENT ,
`login` varchar( 20 ) NOT NULL ,
`pass` varchar( 50 ) NOT NULL ,
`mail` varchar( 20 ) NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM DEFAULT CHARSET = utf8 COLLATE = utf8_polish_ci;

Na poodstawie powyższego zrzutu tabeli możemy wywnioskować że w tabeli znajdą się cztery informacje o użytkowniku, czyli unikalne ID, login, hasło oraz adres e-mail.

Aby nasza baza była obsługiwana potrzebujemy pliku db_config.php który uzupełniamy własnymi danymi
Kod:<?php
//MySQL config
define('SERVER','server'); //Serwer mysql
define('USER','admin');         //Użytkownik
define('PASS','pass'); //Hasło
define('DB','baza'); //Nazwa bazy danych
define('PREF','');         //Prefix tabel(koniecznie dodajemy na końcu _, to znacznie ułatwi sprawę)

function connection(){
mysql_connect(SERVER,USER,PASS) or die(mysql_error());
mysql_select_db(DB) or die(mysql_error());
}
?>

I od razu pewne wyjaśnienie. Adres serwera mysql otrzymamy od administracji naszego hostingu. Nazwę użytkownika bazy oraz jego hasło znamy z etapu tworzenia bazy(przy pomocy tych danych logujemy się do phpmyadmin, czyli systemu zarządzania naszą bazą MySQL). Nazwę bazy danych również powinniśmy znać, w końcu sami ją zakładaliśmy.
Prefix zaś to ciąg znaków występujący przed tabelami w bazie oddzielony od nazdy tabeli podkreślnikiem
Kod:
tabela        <-Nazwa tabeli bez prefiksu
pref_tabela    <-Nazwa tabeli z prefiksem

Nasza tabela w bazie nie ma obecnie żadnego prefixu, czyli zostawiamy to pole pustym.
Funkcja connection zaś ułatwia nam łączenie się z naszą bazą. Aby to zrobić wpisujemy po prostu tam gdzie nam potrzeba(tylko raz w każdym pliku): Kod:<?php connection(); ?>
Mając już plik sterujący bazą możemy zabrać się za tworzenie strony. Najprościej zacząć od strony głównej - index.php
Kod:
<?php
session_start(); //wklejamy w nagłowku każdej strony
require 'db_config.php';
connection();

if(!isset($_SESSION['zalogowany'])){ //Jeżeli użytkownik nie jest zalogowany pozwalamy mu na rejestracją lub zalogowanie
  echo'
  <a href="login.php">Zaloguj</a><br />
  <a href="register.php">Zarejestruj</a>';
}else{         //W przeciwnym wypadku umożliwiamy mu wylogowanie się
  echo'<a href="info.php?action=logout">Wyloguj '.$_SESSION['nick'].'</a>';
}

mysql_close();
?>

Zaczynamy od rozpoczęcia sesji, następnie potrzebny nam jest plik z naszym sterownikiem bazy danych, dołączamy więc go przy pomocy funkcji require(). Następnie łączymy się z bazą poprzez naszą funkcję connection(). Warto to zapamiętać będziemy tak robić w każdym pliku.
W dalszej części pliku mamy pierwszą prezentacją działania naszego systemu. Sprawdzamy czy istnieje zmienna sesyjna: Kod:$_SESSION['zalogowany'] I na podstawie wyniku tej operacji decydujemy czy użytkownik jest zalogowany w systemie czy też nie.


W następnym kroku zajmujemy się przygotowaniem stylu dla pól formularza. Etap ten można pominąć, jednak dla estetyki przyda się to na przyszłość gdyż wiele osób ma problemy z równym ustawieniem pól formularza. Nam pomoże w tym plik style.css
Kod:
fieldset.register {
  text-align:center;
padding: 0;
border:none;
}
label.register {
display:block;
width:150px;
float:left;
}
div.register {
overflow:hidden;
clear:both;

}
input.wyslij{
margin-left:150px;
display:inline;
}
input.register, textarea .register{
display:block;
float:left;
margin-bottom:auto;
}
form {
text-align:left;
width:300px;
}

Myślę że opisywanie CSS'a można pominąć, w końcu nie to jest naszym celem.

Strony:<< 1 2 >>

Nick:

Pytanie kontrolne: Kolor czerwonego malucha?

Komentarz:


22 lip 2010 18:33:33
Co do bezpieczeństwa - kod ma być prosty i co najwyżej odporny na jakieś dzieci neo i h4k3rów. O jakie luki Ci chodzi?Opisane jest jak dodać podstawową ochronę przed najważniejszymi zagrożeniami, czyli XSS i SQLInjection.
A jeśli chodzi o zmienne to faktycznie, lepiej jest wykorzystać nick i hasło(zahaszowane), tyle że ten kod jest stary, obrałem go tylko ze zbędnej zawartości i wkleiłem.
Laj
22 lip 2010 13:24:13
Laj, twój skrypt zawiera dość sporo luk w bezpieczeństwie. Nie rozumiem po co użyłeś zmiennych sesyjnych zalogowany i nick, dużo lepiej jest zrobić nick i hasło, a potem sprawdzać.

Pozdro!
Dziećka

Udostępnij na Facebooku Udostępnij na Twitterze