This page is hosted for free by cba.pl, if you are owner of this page, you can remove this message and gain access to many additional features by upgrading your hosting to PRO or VIP for just 5.83 PLN.
Do you want to support owner of this site? Click here and donate to his account some amount, he will be able to use it to pay for any of our services, including removing this ad.
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