Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Autentykacja
Forum PHP.pl > Forum > PHP
Daniel 2006
witam

Napisałem sobie skrypt, który dokonuje autentykacji. Skrypt porównuje login i hasło które są zawarte w bazie danych następnie danego urzytkownika przekierowywuje na daną stronę.

oto skrypt cały:

  1. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  2.  
  3. BODY { font-family : Times New Roman; font-size: 16pt; COLOR: #000000}
  4. TD { font-family : Verdana; }
  5. A { text-decoration : none}
  6. A:link {COLOR: #006699; TEXT-DECORATION: none}
  7. A:visited {COLOR: #006699; TEXT-DECORATION: none}
  8. A:active {COLOR: #006699; TEXT-DECORATION: none}
  9. A:hover {COLOR: #00FF00; TEXT-DECORATION: none}
  10.  
  11. <style type="text/css">
  12. <!--
  13. body {
  14. BACKGROUND: #FFFFF3;
  15.  
  16. margin-left: 0px;
  17. margin-top: 0px;
  18. margin-right: 0px;
  19. margin-bottom: 0px;
  20. }
  21. -->
  22. <LINK REL="SHORTCUT ICON" href="ikona.jpg">
  23. </head>
  24.  
  25. <br><br><br>
  26. <form action="index.php" method="post">
  27. <font size="5">Login: </font><input type="text" name="loginf" size="30"> <br><br>
  28.  
  29. <font size="5">Hasło: </font><input type="text" name="haslof" size="30"> <br><br>
  30. <input type="submit" value="Zaloguj" >
  31.  
  32. <?
  33. if ($loginf=="" and $haslof=="")
  34. {
  35. echo "<br><br>";
  36. echo "<font color = 'red' size = '5'>Uzupełnij pole Login i Hasło</font>";
  37. }
  38. else
  39. {
  40. if ($loginf=="" )
  41. {
  42. echo "<br><br>";
  43. echo "<font color = 'red' size = '5'>Uzupełnij pole Login</font>";
  44. }
  45. else
  46. {
  47. if ($haslof=="" )
  48. {
  49. echo "<br><br>";
  50. echo "<font color = 'red' size = '5'>Uzupełnij pole Hasło</font>";
  51. }}}
  52.  
  53. if ($loginf and $haslof != "")
  54. {
  55. $baza = "user";
  56. $tabela = "klienci";
  57. $connection = @mysql_connect("localhost", root, "krasnal") or die ("Blad logowania na serwer mysql");
  58. $wybierz = mysql_select_db($baza, $connection) or die ("Podana baza nie istnieje");
  59. $pokaz = "select login, haslo from klienci where login like\"$loginf\" and haslo like\"$haslof\"";
  60.  
  61. $sprawdz = mysql_query($pokaz, $connection) or die ("Blad !");
  62.  
  63. $wiersz = mysql_fetch_array($sprawdz);
  64.  
  65. $val1 = $wiersz['login'];
  66. $val2 = $wiersz['haslo'];
  67.  
  68. if ($val1 == $loginf and $val2 == $haslof)
  69. {
  70. if ($val1 == aaa)
  71. {
  72. echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=http://localhost/test/user1.php\">";
  73. }
  74. if ($val1 == ccc)
  75. {
  76. echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=http://localhost/test/user2.php\">";
  77. }}
  78. else
  79. {
  80. echo "<br><br>";
  81. echo "<font color = 'red' size = '5'><center>Logowanie nie powiodło się, sprawdź Login i Hasło </center></font>";
  82. }}
  83. ?>
  84.  
  85. </form>
  86. </body>
  87. </html>


Skrypt działa tak jak trzeba, ale jest jeden problem mad.gif mianowicie po udanej autentykacji użytkownik jest przekierowywany na strone np: http://localhost/test/user1.php i wszystko ok ale następnym razem może ktoś może wpisać do przeglądarki link http://localhost/test/user1.php i znajdzie się na stronie bez logowania ohmy.gif
oczywiście początek http://localhost/ podałem dla przykładu

Jak zabezpieczyć coś takiego aby dostęp do strony np: http://localhost/test/user1.php był dostępny tylko przez przejście przez logowanie questionmark.gif


z góry dzięki
pozdrawiam Daniel
My4tic
Możesz użyć sesji. Po udanym logowaniu ustawiasz w sesji status usera na TRUE. Na stronach, które mają być dostępne wyłącznie dla zalogowanych sprawdzasz czy:

  1. <?php
  2. if ( $_SESSION['bUserStatus'] == TRUE ) {...} // wyświetl content
  3. else {...} // logowanie
  4. ?>


http://pl.php.net/manual/pl/ref.session.php" title="Zobacz w manualu php" target="_manual

Btw.
Chyba autoryzacja a nie 'autentykacja'... rolleyes.gif
Daniel 2006
ok, tyle że coś mi nie działa

w kodzie dodaje :

  1. if ($val1 == aaa)
  2. {
  3.  
  4. $_SESSION['bUserStatus'] = True;
  5.  
  6. echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=http://localhost/test/user1.php\">";
  7. }


w pliku user1.php dodaję :

  1. <?php
  2. if ( $_SESSION['bUserStatus'] == TRUE )
  3. {
  4.  
  5. }
  6. else
  7. {
  8.  
  9. }
  10. ?>
  11.  
  12. <h1> Private user 1 </h1>


Jak się loguję to wsytko działa ale nadal można obejrzeć stronę wpisując do przeglądarki link strony user1 sad.gif
My4tic
Powinni tu biczować za nie czytanie linków, które sie dostaje w odpowiedzi na pytanie. mad.gif

Wiesz jak działają sesje? Jeśli nie to przeczytaj link, który podałem we wcześniejszej poście. Jeśli Ci sie nie chce to poszukaj sobie gotowego skryptu i oszczędz ludziom troche zdrowia.
Daniel 2006
och wybacz,
linka już czytam, z php dopiero zaczynam więc stąd ta niewiedza dlatego kolejny raz poprosiłem o poprawkę.
macbirdie
Cytat(My4tic @ 7.09.2006, 18:45:50 ) *
Btw.
Chyba autoryzacja a nie 'autentykacja'... rolleyes.gif

Właściwe tłumaczenie "autentykacji", to "uwierzytelnianie", a autoryzacja to autoryzacja. winksmiley.jpg
My4tic
Cytat(macbirdie @ 8.09.2006, 09:06:40 ) *
Właściwe tłumaczenie "autentykacji", to "uwierzytelnianie", a autoryzacja to autoryzacja. winksmiley.jpg


Jakie tłumaczenie? Takiego słowa nie ma w języku polskim.

Słownik

Robimy 'mały' biggrin.gif OT więc lepiej z tym skończyć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.