Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php & MySQL] Logowanie - tylko liczby.
Wotekk
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.12.2006

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


Witam

Mam zrobione logowanie, najlepsze jest to że moge zalogować się tylko poprzez liczby, nie moge podać np Wotekk, tylko 1111

  1. <?php
  2. $query = mysql_query("SELECT * FROM user WHERE `user_name` = " . $_POST['user'] . " ");
  3. $fetch = mysql_fetch_array($query);
  4. if ( $fetch ) 
  5. {
  6. if ( md5( $_POST['password'] ) == $fetch['user_password'] ) 
  7. {  
  8.  
  9.  
  10. }
  11. else
  12. {
  13. echo 'Przykro mi, ale podane haslo jest bledne';  
  14. }
  15. }
  16. else
  17. {  
  18. echo 'Podany uzytkownik nie istnieje w bazie danych';
  19. }
  20. ?>


Ten post edytował Wotekk 4.12.2006, 23:31:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
acztery
post
Post #2





Grupa: Zarejestrowani
Postów: 945
Pomógł: 7
Dołączył: 15.03.2005
Skąd: katowice

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


dziwne logowanie. a kolumny jaki maja typ ? moze int zmien moze na varchal
Go to the top of the page
+Quote Post
Wotekk
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.12.2006

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


  1. CREATE TABLE `user` (
  2. `id` int(8) NOT NULL AUTO_INCREMENT,
  3. `user_name` varchar(128) NOT NULL DEFAULT '',
  4. `user_full` varchar(128) NOT NULL DEFAULT '',
  5. `user_password` varchar(128) NOT NULL DEFAULT '',
  6. `user_group` varchar(5) NOT NULL DEFAULT '',
  7. PRIMARY KEY (`id`)
  8. ) ;

Tak mam SQL'a

Ten post edytował Wotekk 4.12.2006, 23:58:02
Go to the top of the page
+Quote Post
blizniak
post
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 0
Dołączył: 14.04.2005

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


a moze spruboj
  1. <?php
  2. $query = mysql_query("SELECT user_name FROM user WHERE `user_name` = " . $_POST['user'] . " ");
  3. ?>

a pozniej jezeli bedzie taki user to zrobisz nastepne zapytanie i sprawdzisz haslo
Go to the top of the page
+Quote Post
Wotekk
post
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.12.2006

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


odpowiedź:
Podany uzytkownik nie istnieje w bazie danych
Nadal to samo ohmy.gif
Go to the top of the page
+Quote Post
empathon
post
Post #6





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

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


1. Wstawianie w zapytanie danych bezposrednio formularza bez jakiejkolwiek kontroli jest dosc glupie. Szukaj: SQL injection
2. SELECT user_password FROM... wiecej nie potrzebujesz. + za to, ze masz sprawdzanie hasla oddzielnym warunkiem.
3. na hash md5 potrzebujesz 32 znakow nie 128...poczytaj rowniez o sha1" title="Zobacz w manualu php" target="_manual albo o soli stosowanej w systemach unix
4. Pomysl o zabezpieczniu kodu przed zbyt duza liczba niepoprawnie wpisanych hase

A co do tego czemu loguje Cie przez liczby to sprawdz co tak masz w tabeli, moze pomyliles sie przy tworzeniu kont.


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post
skowron-line
post
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


poszukaj na forum pod haslem logowanie i zobacz jak inni to robia.
w zapytaniu daj jeszcze zeby szukalo w 2 warunkach

  1. WHERE user = zmienna AND haslo = zmienna_haslo


i przez funkcje mysq_num_rows zobacz ile rekordow zwraca zapytanie i wtedy ustaw sesje

edit: no i punkt 1 tego co napisal empathon o SQL injection to tez mozna znalesc na forum

Ten post edytował skowron-line 5.12.2006, 10:47:52


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
empathon
post
Post #8





Grupa: Zarejestrowani
Postów: 246
Pomógł: 31
Dołączył: 13.11.2006
Skąd: się znamy?

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


Lepiej robic to przez dwa zapytania bo np w tym przypadku bez filtrowania wpisujac jako user ";--" haslo zostanie pominiete. Na php Solution jest do sciagniecia art na ten temat z dokladnym wyjasnieniem zagadnienia bezpiecznego logowania.


--------------------
Goldenline: Łukasz Rodziewicz
Go to the top of the page
+Quote Post
Wotekk
post
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 4.12.2006

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


Zmieniłem z
  1. <?php
  2. mysql_query("SELECT * FROM user WHERE `user_name` = " . $_POST['user'] . " ");
  3. ?>


na to i chodzi.

  1. <?php
  2. mysql_query("SELECT * FROM user WHERE user_name='$user' ")
  3. ?>


Dobrze zabezpieczyłem ? czy zrobilem jeszcze gorzej niż było tongue.gif biggrin.gif

  1. <?php
  2. if (!get_magic_quotes_gpc()) { 
  3.  $user = addslashes($_POST['user']); 
  4. } else { 
  5.  $user = $_POST['user']; 
  6. } 
  7.  
  8. if (!get_magic_quotes_gpc()) { 
  9.  $password = addslashes($_POST['password']); 
  10. } else { 
  11.  $password = $_POST['password']; 
  12. } 
  13.  
  14.  
  15.  
  16.  
  17. $query = mysql_query("SELECT * FROM user WHERE user_name='$user' ");
  18. $fetch = mysql_fetch_array($query);
  19. if ( $fetch ) // jesli user zostanie znaleziony w bazie
  20. {
  21. if ( md5( $_POST['password'] ) == $fetch['user_password'] ) // jesli haslo sie zgadza
  22. {  
  23. echo 'zalogowany';
  24.  
  25.  
  26. }
  27. else
  28. {
  29. echo 'Przykro mi, ale podane haslo jest bledne';  
  30. }
  31. }
  32. else
  33. {  
  34. echo 'Podany uzytkownik nie istnieje w bazie danych';
  35. }
  36. ?>


Ten post edytował Wotekk 5.12.2006, 13:20:27
Go to the top of the page
+Quote Post

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: 20.08.2025 - 10:03