Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP][MYSQL]Logowanie + Rejestracja.
K4mil94
post
Post #1





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


Witam!. Chcę w końcu napisać porządny skrypt rejestracji. Dotychczas używałem parę if'ów tak aby po dobrym przejściu weryfikacji wykonało zapytanie. Co do logowania, używałem również tylko if'ów mysql_fetch_array i tyle byle dojść do utworzenia sesji. Proszę o jakieś dobre porady aby napisać te skrypty porządnie smile.gif Z góry dzieki smile.gif
Go to the top of the page
+Quote Post
Foxx
post
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Np. taka porada: skorzystaj z wyszukiwarki forum i znajdziesz kilkaset postów o logowaniu, jest w nich wszystko co można na ten temat powiedzieć czarodziej.gif
Go to the top of the page
+Quote Post
ikssde
post
Post #3





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


Napisz sobie klasę do obsługi tego wszystkiego o czym powiedziałeś. Zresztą tak jak Foxx już powiedział, na tym forum jest wiele postów odnośnie tego zagadnienia.
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


K4mil94 a ja Ci powiem, że chętnie się dołączę (o ile oczywiście Wać Pan pozwoli). ;p
Zawsze chciałem napisać coś lepszego, po czym brałem się do pracy i tak ciągle powstawało coś nowego. Teraz chciałbym na prawdę coś PRO napisać. ;d Odezwij się na pw jak coś. haha.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
InosU31
post
Post #5





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


Witam

ja tez pisze narazie na if'ach;-) ktos na tym forum napisal ze niewazne jak napiszesz skrypt czy oparty na clasach czy tylko na samych instrukcjach wazne zeby dzialalo.

mysle ze jak chcesz bardziej "profesionalnie" to napisac - tez sam sie bede niedlugo przymierzal do "profesjonalniejszego" zapisu - to pewnie bedziesz musial uzyc:

klas
funkcji
sesji
zabezpieczenia hasel
baza danych mysql


ale ja narazie sie ucze wiec chetnie tez poslucham opinii innych;-)
pozdrawiam
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(InosU31 @ 29.03.2009, 22:47:35 ) *
Witam

ja tez pisze narazie na if'ach;-) ktos na tym forum napisal ze niewazne jak napiszesz skrypt czy oparty na clasach czy tylko na samych instrukcjach wazne zeby dzialalo.

mysle ze jak chcesz bardziej "profesionalnie" to napisac - tez sam sie bede niedlugo przymierzal do "profesjonalniejszego" zapisu - to pewnie bedziesz musial uzyc:

klas
funkcji
sesji
zabezpieczenia hasel
baza danych mysql
ale ja narazie sie ucze wiec chetnie tez poslucham opinii innych;-)
pozdrawiam


Tak szczerze to nie widziałem jeszcze systemu, który na w/w elementach nie byłby oparty (przynajmniej żaden z moich haha.gif)

Poza tym wyobraź sobie trzymanie userów np. jako pliki tekstowe... no bez jaj. haha.gif


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
K4mil94
post
Post #7





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


nom, ja tylko w mysql, i ify no i sesje i md5 oczywiscie. wczesniej mialem skrypt na funkcjach

Ten post edytował K4mil94 29.03.2009, 21:53:27
Go to the top of the page
+Quote Post
ikssde
post
Post #8





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


Pisanie na klasach ma przyszłość i metoda/styl nie pozostaje bez znaczenia. Także sugeruje wam napisanie czegoś takiego w oparciu o klasy, przede wszystkim ze względu na wygodę użytkowania i późniejszej konserwacji.

Jeżeli chodzi o schemat działania, to polecam sesje i tu dzięki klasom macie nieograniczone pole działania. Piszecie sobie funkcje odpowiedzialną za filtrowanie danych, tworzenie sesji, odczytywanie z bazy, itp. Tak to powinno pracować.
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(K4mil94 @ 29.03.2009, 22:52:27 ) *
nom, ja tylko w mysql, i ify no i sesje i md5 oczywiscie. wczesniej mialem skrypt na funkcjach


Jest już dużo słowników md5, moim zdaniem lepiej używać sha1 lub rsa.
Najlepiej pracuje się w OOP, gdyż wszystkie dane masz zhermetyzowane i taka klasa jest łatwo rozszerzalna o nowe metody.

@edit
Pan Up mnie uprzedził z tymi klasami. ;d

@up
Też uważam, że stworzenie własnego session handlera to dobry pomysł. winksmiley.jpg (przynajmniej, jeżeli chodzi o jakość zabezpieczeń)

Ten post edytował fifi209 29.03.2009, 21:56:40


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
InosU31
post
Post #10





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


Cytat(fifi209 @ 29.03.2009, 21:50:50 ) *
Tak szczerze to nie widziałem jeszcze systemu, który na w/w elementach nie byłby oparty (przynajmniej żaden z moich haha.gif)

Poza tym wyobraź sobie trzymanie userów np. jako pliki tekstowe... no bez jaj. haha.gif



chodzilo mi raczej o to :

mam taki skrypt
  1. <?php
  2.  
  3. include_once "common/func_form.php";
  4. include_once "common/connect.php";
  5.    
  6.    if (!isset($_POST['login'])&&(!isset($_POST['haslo'])))
  7.    {
  8.        formReg("Aby sie zarejestrowac musisz wypelnic ponizszy formularz<br>");
  9.        exit();
  10.    }
  11.    else
  12.    {    
  13.    $register_login = $_POST['login'];
  14.    $register_passwd = $_POST['haslo'];
  15.        
  16.        if (!is_numeric($register_login) and (!empty($register_login)) && (!empty($register_passwd) and $register_passwd !== NULL ))
  17.        {
  18.            if ((strlen($register_login) >= 4) && (strlen($register_passwd) >= 5))
  19.            {
  20.            $register_passwd = sha1($register_passwd);
  21.            $sql_select = mysql_query ("SELECT * FROM users_session WHERE user_login = '$register_login' and user_password = '$register_passwd'") or die ("nie znaleziono takiego usera");    
  22.            
  23.            if (mysql_num_rows($sql_select) == 0)
  24.            {
  25.            $sql_select = mysql_query("
  26.            INSERT INTO users_session (user_login, user_password)
  27.            VALUES ('$register_login', '$register_passwd')
  28.            ");    
  29.            echo "dodano usera";
  30.            }
  31.            else
  32.                {
  33.                formReg("Taki uzytkownik juz istnieje!<br>");
  34.                exit();
  35.                }
  36.            }
  37.            else
  38.            {    
  39.            if ((strlen($register_login) >= 4) && (strlen($register_passwd) < 5))
  40.            {
  41.            echo formReg("haslo jest za krotkie");
  42.            exit();
  43.            }
  44.            else if ((strlen($register_login) < 4) && (strlen($register_passwd) >= 5))
  45.            {
  46.            formReg("login jest za krotki");
  47.            exit();
  48.            }
  49.            formReg("haslo i login sa za krotkie");
  50.            }    
  51.        }
  52.        
  53.        if (is_numeric($register_login) or (is_numeric($register_passwd)))
  54.        {
  55.            formReg("NIE MOZNA WPISYWAC LICZB<br>");    
  56.        }
  57.        //else
  58.        if (empty($register_login) || (empty($register_passwd)))
  59.        {
  60.            if (empty($register_login) && (empty($register_passwd)))
  61.            {
  62.            formReg("FORMULARZ NIE MOZE BYC PUSTY<br>");
  63.            }
  64.            else
  65.            {
  66.            formReg("MUSZA BYC WYPELNIONE OBA POLA<br>");
  67.            }        
  68.        }
  69.    
  70.    }
  71.  
  72.  
  73. ?>



a chce go przerobic na funkcje i klasy ;-) zle mnie zrozumiales ;_) Pozatym nie wiem jak moze byc to profesjonalniej questionmark.gif K4mil94 tobie o kalsy chodzi czy cos innego questionmark.gif

pozdrawiam
Go to the top of the page
+Quote Post
K4mil94
post
Post #11





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


o funkcje, masz np. plik fukncje.php a w nim wszystko potem require i wywołujesz funkcje.
Go to the top of the page
+Quote Post
Fifi209
post
Post #12





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


O boże! Masa kodu. ;d

Ja mam taki kawałek kodu ze starego systemu:

  1. <?php
  2. class security {
  3.        
  4.        static public function isLogin() {
  5.            if ($_SESSION['login'] == TRUE) {
  6.                if ($_SESSION['ip'] === $_SERVER['REMOTE_ADDR']) {
  7.                    return TRUE;
  8.                }else{
  9.                error::save('Błąd! Próba przejęcia sesji!', ERR_CRITICAL);
  10.                return FALSE;
  11.                }
  12.            }else{
  13.                return FALSE;
  14.            }
  15.        }
  16.        
  17.        static public function getInfo() {
  18.            if (self::isLogin() == TRUE) {
  19.                return $info = array('id' => $_SESSION['id'], 'name' => $_SESSION['name'], 'access' => $_SESSION['access']);
  20.            }else{
  21.                error::save('Nie jesteś zalogowany!', ERR_NORMAL);
  22.                return FALSE;
  23.            }
  24.        }
  25.        
  26.        static public function login($user, $pass) {
  27.            if (self::isLogin() != TRUE) {
  28.                $user = self::nohack($user);
  29.                $pass = sha1($pass);
  30.                $sql = mysql::select('*', 'users', 'WHERE `name` = "'.$user.'" LIMIT 1');
  31.                if ($sql[0]['password'] == $pass) {
  32.                    $_SESSION['login'] = TRUE;
  33.                    $_SESSION['id'] = $sql[0]['id'];
  34.                    $_SESSION['name'] = $sql[0]['name'];
  35.                    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  36.                    return TRUE;
  37.                }else{
  38.                    return FALSE;
  39.                }
  40.            }else{
  41.                return TRUE;
  42.            }
  43.        }
  44.                
  45.        static public function logout() {
  46.            if (self::isLogin() == TRUE) {
  47.                unset($_SESSION);
  48.                session_destroy();
  49.                return TRUE;
  50.            }else{
  51.                error::save('Nie jesteś zalogowany!', ERR_NORMAL);
  52.                return FALSE;
  53.            }
  54.        }
  55.        
  56.        static public function nohack($string) {
  57.            $string = mysql_real_escape_string($string);
  58.            //$string = htmlspecialchars($string);
  59.            return $string;
  60.        }
  61.        
  62.  
  63.    }
  64. ?>


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
ikssde
post
Post #13





Grupa: Zarejestrowani
Postów: 217
Pomógł: 40
Dołączył: 20.08.2008

Ostrzeżenie: (0%)
-----


Przykładowa klasa :

  1. <?php
  2. class auth {
  3.  
  4.  private $user;
  5.  private $password;
  6.  
  7.  private function filter($input)
  8.  {
  9.  ... filtrowanie danych...
  10.  }
  11.  
  12.  public function login()
  13.  {
  14.  $this->user = $this->filter($_POST['user']);
  15.  $this->password = $this->filter($_POST['password']);
  16.  ... sprawdzanie czy taki jest ... logowanie ...
  17.  }
  18.  
  19.  public function logout()
  20.  {
  21.  ...wylogowywanie...
  22.  }
  23. ?>


Ten post edytował ikssde 29.03.2009, 22:07:34
Go to the top of the page
+Quote Post
K4mil94
post
Post #14





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


na klasach jeszcze nie potrafie dobrze operowac ;] bedzie trzba w manual zajrzec.
Go to the top of the page
+Quote Post
Fifi209
post
Post #15





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(K4mil94 @ 29.03.2009, 23:06:17 ) *
na klasach jeszcze nie potrafie dobrze operowac ;] bedzie trzba w manual zajrzec.


Masz okazję się nauczyć. ;d
Ja bez OOP nie wyobrażam sobie programowania. ;d Czasami piszę nawet małą klasę z jedną, dwoma metodami z czasem rozrastają się np. do 30-50 metod. a wszystko szybko i sprawnie.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
InosU31
post
Post #16





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


Cytat(fifi209 @ 29.03.2009, 22:02:55 ) *
O boże! Masa kodu. ;d



ja dopiero sie ucze a za klasy wezme jak uporam z do konca z sesjami, instrukcjami, i funkcjami;-)

Pozdrawiam


a co to OOP??
Go to the top of the page
+Quote Post
K4mil94
post
Post #17





Grupa: Zarejestrowani
Postów: 302
Pomógł: 18
Dołączył: 10.03.2008
Skąd: Dębno

Ostrzeżenie: (0%)
-----


sesje, indtrukcje, funkcje - to jest dla mnie teraz banał. klasy już będą trudniejsze.
Go to the top of the page
+Quote Post
Fifi209
post
Post #18





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Zapraszam: (Ci chętni wiedzy) haha.gif

OOP


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
InosU31
post
Post #19





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

Ostrzeżenie: (0%)
-----


Cytat(fifi209 @ 29.03.2009, 22:24:40 ) *
Zapraszam: (Ci chętni wiedzy) haha.gif

OOP

hehe no to juz juz wiem;-)
Go to the top of the page
+Quote Post
piotrooo89
post
Post #20


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




kurcze mówicie PRO. a teraz zdefiniujcie to proszę. czy pro jest to że ktoś pisze jakiś skrypt w OOP? ten skrypt jeśli ktoś nie będzie się znał na rzeczy może być równie podatny na ataki jak i skrypt napisany strukturalnie. dla jednego pro jest napisane czegoś strukturalnie i zabezpieczenie wszystkiego wszelkimi dostępnymi metodami. dla innego napisanie prostej klasy do autoryzacji która ma masę luk. a kto inny po prostu skorzysta z jakiegoś frameworka np. ZENDA i też będzie pro. każdy robi jak lubi. nie chce się tu zagłębiać w przewagę OOP na zwykłym, ale tak jak napisałem dla jednego PRO nie musi oznaczać tego samego dla innego.


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 22:16