Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prośba o ocenę, skryptu logowania
Jarod
post
Post #1





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Poniżej zamieściłem skrypt, który stosuję do logowania na podstawie bazy. Co o nim myślicie? Czy Waszym zdaniem warto coś poprawić, usprawnić w jakiś sposób? Może nie jest zbyt bezpieczny?

  1. <?php
  2. session_name('sofik');
  3. include "config.inc.php";
  4. ?>
  5.  
  6.  
  7. <!-- ZALOGUJ I USTAW ZMIENNE SESYJNE -->
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  9. <html>
  10. <head>
  11. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  12. <meta name="pragma" content="no-cache" />
  13. <title>Logowanie...</title>
  14. <link rel="stylesheet" type="text/css" href="autoryzacja.css" />
  15. </head>
  16. <body>
  17. <?php
  18.  
  19. //Połączenie z bazą danych
  20. $conn = mysql_connect($server, $identyfikator, $haslo)
  21. or die ("Nie udało się połączyć z bazą danych! BَD: ".mysql_error());
  22. //Wybór bazy danych
  23. or die ("Nie udało się wybrać bazy! BَD: ".mysql_error());
  24.  
  25. //Zapytanie o login i hasło
  26. $query = "SELECT * FROM konto WHERE login='".$_POST['logid']."';";
  27. $result = mysql_query($query)
  28. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  29. $query_data = mysql_fetch_row($result);
  30.  
  31.  
  32. //Sprawdzenie czy podany login i hasło są poprawne
  33. if (MD5($_POST['pas']) == $query_data[2])
  34. {
  35.  
  36.  //Udana autoryzacja
  37.  if ( ($query_data[3] == 0) OR (($query_data[3] == 3)) )
  38.  {
  39. //Zapytanie o dane osoby zalogowanej z tabeli pracownika
  40. $query = "SELECT konto.konto_id, login, haslo, kto, imie, nazwisko FROM konto, pracow
    nik "
    .
  41.  "WHERE login='".$_POST['logid']."' AND konto.konto_id=pracownik.konto_id;";
  42. $result = mysql_query($query)
  43. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  44. $query_data = mysql_fetch_row($result);
  45. $ID = $query_data[0];
  46.  
  47. $_SESSION['id'] = $query_data[0]; //Konto_id
  48. $_SESSION['nick'] = $query_data[1]; //Login
  49. $_SESSION['haslo'] = $query_data[2]; //Hasło
  50. $_SESSION['kto'] = $query_data[3]; //Pracownik czy klient?
  51. $_SESSION['imie'] = $query_data[4]; //Imie
  52. $_SESSION['nazwisko'] = $query_data[5]; //Nazwisko
  53.  
  54. //------------------->ROZPOCZCIE TRANSAKCJI
  55. $query = "BEGIN WORK";
  56. $result = mysql_query($query)
  57. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  58.  
  59. //Dodanie daty i godziny logowania
  60. $query = "INSERT INTO logi (konto_id, data_log, godzina_log) VALUES ($ID,CURDATE(),CURTIME());";
  61. $result = mysql_query($query)
  62. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  63. //-------------------> ZATWIERDZENIE TRANSAKCJI
  64. $query = "COMMIT";
  65. $result = mysql_query($query)
  66. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  67.  
  68. //Sprawdzenie wartości klucza logi_id
  69. $query = "SELECT LAST_INSERT_ID()";
  70. $result = mysql_query($query)
  71. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  72. $query_data = mysql_fetch_row($result);
  73.  
  74. $_SESSION['id_logi'] = $query_data[0]; //Logi_id
  75.  
  76. //Zamknięcie połączenia z bazą danych
  77. mysql_close($conn);
  78.  
  79. header("location: start.php?".SID);
  80.  }
  81.  else
  82.  {
  83. //Zapytanie o dane osoby zalogowanej z tabeli klienta
  84. $query = "SELECT konto.konto_id, login, haslo, kto, imie, nazwisko FROM konto, klient
     "
    .
  85.  "WHERE login='".$_POST['logid']."' AND konto.konto_id=klient.konto_id;";
  86. $result = mysql_query($query)
  87. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  88. $query_data = mysql_fetch_row($result);
  89. $ID = $query_data[0];
  90.  
  91. $_SESSION['id'] = $query_data[0]; //Konto_id
  92. $_SESSION['nick'] = $query_data[1]; //Login
  93. $_SESSION['haslo'] = $query_data[2]; //Hasło
  94. $_SESSION['kto'] = $query_data[3]; //Pracownik czy klient?
  95. $_SESSION['imie'] = $query_data[4]; //Imie
  96. $_SESSION['nazwisko'] = $query_data[5]; //Nazwisko
  97.  
  98. //------------------->ROZPOCZCIE TRANSAKCJI
  99. $query = "BEGIN WORK";
  100. $result = mysql_query($query)
  101. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  102.  
  103. //Dodanie daty i godziny logowania
  104. $query = "INSERT INTO logi (konto_id, data_log, godzina_log) VALUES ($ID,CURDATE(),CURTIME());";
  105. $result = mysql_query($query)
  106. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  107. //-------------------> ZATWIERDZENIE TRANSAKCJI
  108. $query = "COMMIT";
  109. $result = mysql_query($query)
  110. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  111.  
  112. //Sprawdzenie wartości klucza logi_id
  113. $query = "SELECT LAST_INSERT_ID()";
  114. $result = mysql_query($query)
  115. or die ("Zapytanie nieudane! BَD: ".mysql_error());
  116. $query_data = mysql_fetch_row($result);
  117.  
  118. $_SESSION['id_logi'] = $query_data[0]; //Logi_id
  119.  
  120. //Zamknięcie połączenia z bazą danych
  121. mysql_close($conn);
  122.  
  123. header("location: start.php?".SID);
  124.  }
  125. }
  126. else
  127. {
  128.  // Zły login lub hasło
  129.  ?>
  130.  <br><br><br><br><br><br><br><br><br>
  131.  <table width="80%" align="center" border="0" cellpadding="14">
  132. <tr>
  133. <td><h2 class="error">Podałeś zły login lub hasło!</h2></td>
  134. </tr>
  135.  </table>
  136.  <?php
  137.  echo "<META HTTP-EQUIV='Refresh' CONTENT='3; URL=main.php'>";
  138. }
  139. ?>
  140.  
  141. </body>
  142. </html>


Ten post edytował J4r0d 14.05.2006, 22:49:22


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
devnul
post
Post #2





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


skrypt wygląda dobrze - rzczej nie jest niebezpieczny winksmiley.jpg
tylko jedno ale: czemu drukujesz z poziomu php kod html? ani to czytelne ani potrzebne, tylko dodatkowe obciązanie parsera

ale chyba nie to forum co? snitch.gif

Ten post edytował devnul 11.05.2006, 20:29:17


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Przenoszę z php na Oceny

Swoją drogą walisz "Proszę o ocenę..." a na Ocenach nie dajesz, coś z Tobą nie tak?

P.S.
Dlaczego wszędzie dajesz die()?
To najgorsze wyjście, poczytaj o wyjątkach i inaczej rozwiąż kwestie problematyczne.
Go to the top of the page
+Quote Post
Jarod
post
Post #4





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(mike_mech @ 2006-05-11 19:31:08)
Przenoszę z php na Oceny

Swoją drogą walisz "Proszę o ocenę..." a na Ocenach nie dajesz, coś z Tobą nie tak?

P.S.
Dlaczego wszędzie dajesz die()?
To najgorsze wyjście, poczytaj o wyjątkach i inaczej rozwiąż kwestie problematyczne.

mike_mech: bo skrypt ten pisałem dawno pod php4 wiem że można go przepisać pod php5 z obsługą wyjątków
ps. jestem zmęczony - przepraszam za zły dział


@devnul: poprawie


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




...WHERE login='".$_POST['logid']."'.....
a teraz patrzymy w ten topic:
http://forum.php.pl/index.php?showtopic=23258&st=0
i juz wiemy o czym mowie winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Jarod
post
Post #6





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(nospor @ 2006-05-11 20:09:57)
...WHERE login='".$_POST['logid']."'.....
a teraz patrzymy w ten topic:
http://forum.php.pl/index.php?showtopic=23258&st=0
i juz wiemy o czym mowie winksmiley.jpg

Przeczytałem ale nie wiem gdzie błąd i jak go naprawić..?


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
devnul
post
Post #7





Grupa: Zarejestrowani
Postów: 1 470
Pomógł: 75
Dołączył: 21.09.2005
Skąd: że znowu

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


widocznie nie przeczytałeś uważnie biggrin.gif

cytat z wypowiedzi Vengeance`a (pierwsza odpowiedz w tym temacie)
Cytat
punkt 2. ja stosuje po prostu addslashes() i filtruje dane z POST GET COOKIE itd. tzn jak ma byc liczba do liczba a nie string

i wszystko staje się jasne.

wszystkie dane które przekazujesz do bazy danych potraktuj funkcją addslashes(), czyli np.
  1. <?php
  2. addslashes($_POST["login"]);
  3. ?>


Ten post edytował devnul 11.05.2006, 21:34:28


--------------------
Profesjonaliści są przewidywalni...
strzeż się amatorów...
FL4SHB4CK - imprezy, galerie, lokale
Go to the top of the page
+Quote Post
TomASS
post
Post #8





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cytat
skrypt wygląda dobrze - rzczej nie jest niebezpieczny

Cytat
widocznie nie przeczytałeś uważnie

Ty też tongue.gif


Ja bym raczej proponował funkcje specjalnie do tego stworzoną - mysql_escape_string().

1.
Możesz zamiast:
  1. <?php
  2. $query = "SELECT konto.konto_id, login, haslo, kto, imie, nazwisko 
  3. FROM konto, pracownik ".
  4.                "WHERE login='".$_POST['logid']."' AND konto.konto_id=pracownik.konto_id;";
  5. ?>

Pisać wygodniej:
  1. <?php
  2. $query = "SELECT K.konto_id, login, haslo, kto, imie, nazwisko FROM konto AS K , prac
    ownik AS P WHERE login='"
    .$_POST['logid']."' 
  3. AND K.konto_id=P.konto_id;";
  4. ?>


2.
Nie łatwiej byłoby trzymać datę i czas w jednej komórce w bazie danych? :
  1. <?php
  2.    $query = "INSERT INTO logi (konto_id, data_log, godzina_log) VALUES ($ID,CURDATE(),CURTIME());";
  3. ?>


3.
Jeśli już używasz styli, to bądź konsekwentny:
  1. <table width="80%" align="center" border="0" cellpadding="14">


Ale to tak szukanie dziury w całym - popraw to o czym napisał kolega nospor oraz mike_mech i powinno być dobrze party.gif

Ten post edytował TomASS 11.05.2006, 23:39:34


--------------------
Go to the top of the page
+Quote Post
Jarod
post
Post #9





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


W celu wyeliminowania możliwości załadowania konkretnej podstrony przez użytkownika, na każdej podstronie mam taki kod:

  1. <?php
  2. session_name('sofik');
  3.  
  4. //JEŚLI NIE ISTNIEJE SESJA UŻYTKOWNIKA TO POWRÓT NA STRON LOGOWANIA
  5. if ( (!isset($_SESSION['nick'])) && (!isset($_SESSION['haslo'])) )
  6. {
  7.  ?>
  8.  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  9.  <html>
  10.  <head>
  11.  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  12.  <meta name="pragma" content="no-cache" />
  13.  <link rel="stylesheet" type="text/css" href="autoryzacja.css" />
  14.  </head>
  15.  <body>
  16.  <table width="80%" align="center" border="0" cellpadding="14">
  17. <tr>
  18. <td><img src="images/spacer.gif" alt="" width="0" height="140"></td>
  19. </tr>
  20. <tr>
  21. <td><h2 class="error">BRAK UPRAWNIEŃ! &nbsp ZALOGUJ SI</h2></td>
  22. </tr>
  23.  </table>
  24.  </body>
  25.  </html>
  26.  <?php
  27.  echo "<META HTTP-EQUIV='Refresh' CONTENT='3; URL=main.php'>";
  28.  exit();
  29. }
  30. ?>


Co o tym sądzicie? Poprawilibyście coś?

Ten post edytował J4r0d 14.05.2006, 22:50:04


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
Jabol
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Jeżeli miałbym to ocenić w skali 1 do 10 dostałbyś 1, i to z wielkim minusem!

Nawet tego skryptu nie przejrzałem - odpowiedź na pytanie za co ta ocena znajedziesz już w trzeciej linijce!

Popraw to zobaczymy winksmiley.jpg
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


masz gdzies ten skrypt online ? chcialbym sprawdzic conieco.
Go to the top of the page
+Quote Post
Jarod
post
Post #12





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(Jabol @ 2006-05-14 19:49:40)
Jeżeli miałbym to ocenić w skali 1 do 10 dostałbyś 1, i to z wielkim minusem!

Nawet tego skryptu nie przejrzałem - odpowiedź na pytanie za co ta ocena znajedziesz już w trzeciej linijce!

Popraw to zobaczymy winksmiley.jpg

Nie wiem o co Ci chodzi.. Możesz napisać gdzie jest błąd?

@ActivePlayer: nie mam na serwerze


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
erix
post
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




masz stala sofik?

  1. <?php
  2. session_name(sofik);
  3. ?>


chyba nie, wiec powinno byc:

  1. <?php
  2. session_name('sofik');
  3. ?>


Ten post edytował erix 14.05.2006, 22:43:59


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Jarod
post
Post #14





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(erix @ 2006-05-14 21:41:09)
najpierw startuj sesje, potem zmieniaj jej nazwe...

To nie ma żadnego wpływu na bezpieczeństwo. I działa. Ale skoro tak mówisz to poprawie..

Pozatym myślę, że Jabol doczepił się o coś innego..


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
erix
post
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




sory, zmienilem posta... worriedsmiley.gif
rozwiazanie ^^^


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Jarod
post
Post #16





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

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


Cytat(erix @ 2006-05-14 21:45:13)
sory, zmienilem posta... worriedsmiley.gif
rozwiazanie ^^^

Poprawiłem. Proszę jeszcze raz o ocenę.

Czy to bezpieczny sposób na autoryzację (oczywiście dodam addslashes() i konwersję typów)?

Czy dobrze zabezpieczam każdą podstronę?


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
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: 21.08.2025 - 15:35