Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php + mysql] logowanie/wylogowanie
prz3m3k
post 12.08.2006, 23:03:18
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 3.02.2005

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


Logowanie do panelu newsów w którym to panelu w pełni edytujemy newsy dodajemy/usuwamy itd. nie to jest ważne... wazne jest to czy chodź trochę bezpiecznie się to odbywa tongue.gif w php piszę od niedawna i jest mój pierwszy skrypt zamieszczony do oceny, proszę krytykować do woli smile.gif


plik login.php ma za zadanie sprawdzenie czy login i hasło podane w formularzu logowania zgadzają się z loginem i hasłem w bazie mysql.
  1. <?php
  2. if(!session_id())
  3. { 
  4.  unset($_COOKIE[session_name()]);
  5. }
  6. error_reporting( E_ALL );
  7.  
  8. if(isset($_POST['login']) && isset($_POST['haslo']))
  9. {
  10.  
  11. $login = $_POST['login'];
  12. $haslo = $_POST['haslo'];
  13.  
  14. $db = mysql_connect('host', 'login', 'haslo')
  15. or die('Nie mogę połączyć się z bazą danych'.mysql_error());
  16. or die('Nie mogę połączyć się z bazą danych'.mysql_error());
  17.  
  18. $passwd = md5(sha1($haslo));  /*zakodowanie hasła*/
  19.  
  20. $zapytanie = "SELECT * FROM users WHERE user='$login' AND passwd='$passwd'";
  21. $wynik = mysql_query($zapytanie);
  22.  
  23. $query = "SELECT passwd FROM users WHERE user='$login'";
  24.  
  25. if($r['passwd'] === $passwd){
  26. if(mysql_num_rows($wynik) == 1)
  27. {
  28. $_SESSION['prawid_uzyt'] = $login.session_id();  
  29. $_SESSION['prawid'] = $login;
  30. }
  31. else echo '<center>!!! Błędne logowanie !!!</center>';
  32. }
  33. else echo '<center>!!! Błędne logowanie !!!</center>';
  34. mysql_close($db) or die('Nie mogę się rozłączyć z bazą danych !'.mysql_error());
  35. }
  36. ?>
  37.  
  38. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  39. <html xmlns="http://www.w3.org/1999/xhtml">
  40. <head>
  41. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  42. <meta http-equiv="reply-to" content="" />
  43. <meta name="generator" content="" />
  44. <meta name="author" content="" />
  45. <meta name="description" content="" />
  46. <title>..:: Logowanie do newsów ::..</title>
  47.  
  48. <STYLE TYPE="text/css">
  49. <!--
  50. body { font-family: verdana; font-weight: normal; font-size: 10pt; color: #00000; margin: 0px; padding: 0px; }
  51. a:link { color: #603913; text-decoration: none; }
  52. a:visited { color: #603913; text-decoration: none; }
  53. a:hover { text-decoration: underline; }
  54. -->
  55. </STYLE>
  56. </head>
  57. <body>
  58.  
  59. <?php
  60. if(isset($_SESSION['prawid_uzyt']))
  61. {
  62. header('Location: panel.php?sid='.session_id().'&la=pl');
  63. }
  64. else
  65. {
  66. if(isset($login))
  67. {
  68. echo '<center>!!! Zalogowanie niemożliwe !!!</center>';
  69. }
  70.  
  71. echo '<br /><br /><center><h3><b>Logowanie do systemu newsów</b></h3></center><br /><br /><br /><br />';
  72. echo '<form method="post" action="login.php">';
  73. echo '<table border="0" align="center">';
  74. echo '<tr><td>Login:</td>';
  75. echo '<td align="center"><input type="text" name="login"></td></tr>';
  76. echo '<tr><td>Hasło:</td>';
  77. echo '<td align="center"><input type="password" name="haslo"></td></tr>';
  78. echo '<tr><td colspan="2" align="center">';
  79. echo '<input type="submit" value="Loguj"></td></tr>';
  80. echo '</table></form>';
  81. echo '<br /><br /><center><a href="">Strona główna</a></center><br /><br /><br /><br />';
  82. }
  83. ?>
  84.  
  85. </body>
  86. </html>


każdy następny plik rozpoczyna się:

  1. <?php
  2.  
  3. if(isset($_SESSION['prawid_uzyt']) && session_id() === $sid) { to coś tam }
  4. ?>


wylogowanie:

  1. <?php
  2.  
  3. unset($_SESSION['prawid_uzyt']);
  4. unset($_SESSION['prawid']);
  5. unset($_COOKIE[session_name()]);
  6. ?>


Ten post edytował prz3m3k 12.08.2006, 23:03:57


--------------------
Go to the top of the page
+Quote Post
Cysiaczek
post 13.08.2006, 00:37:06
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Cytat
  1. <?php
  2. $zapytanie = "SELECT * FROM users WHERE user='$login' AND passwd='$passwd'";
  3. $wynik = mysql_query($zapytanie);
  4.  
  5. $query = "SELECT passwd FROM users WHERE user='$login'";
  6. ?>


Dlaczego tak? NIe wystarczyło pierwsze zapytanie? Wyciągnąłeś wszystkie pola, więc je jakoś wykorzystaj. To drugie zapytanie jest zbędne. Pokombinuj - da się to uprościć.

Pozdrawiam,


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
SHiP
post 13.08.2006, 18:19:21
Post #3





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Jesli ten skrypt jest tylko dla Ciebie to nie jest źle ;]. Jesli chcesz natomiast to puscić w świat to kilka uwag...

Kod
<?php
if(isset($_SESSION['prawid_uzyt']) && session_id() === $sid) { to coś tam }
?>


1. Odwolujesz sie do $sid zamiast do $_GET['sid'] wiec przypuszczasz ze register globals są właczone ;] Niedobrze ;p
2. Jeśli inny administrator bedzie chciał z tego kożystać a bedzie mial wyłaczone cookies to co wtedy?
3. A jeśli serwer ma domyślnie wyłączone magic_quotes ;] ? Zero ochrony przed sql injection ;]


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
prz3m3k
post 13.08.2006, 19:06:30
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 3.02.2005

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


1. okej poprawię smile.gif
2. nie będzie z tym problemu.
3. dobra przyznaje sie nie wiem o co chodzi tongue.gif

phpinfo() na serwerze gdzie to ma działać:

  1. <?php
  2. magic_quotes_gpc On On
  3. magic_quotes_sybase Off Off
  4. ?>


jeśli to jest błedem to czy da się to jakoś inaczej rozwiązać i nie męczyć admina zmienianiem "magic_quotes_gpc" na "off"

Ten post edytował prz3m3k 13.08.2006, 19:06:51


--------------------
Go to the top of the page
+Quote Post
SHiP
post 13.08.2006, 19:39:47
Post #5





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


  1. <?php
  2. $var = (get_magic_quotes_gpc()) ? $var : addslashes($var);
  3. ?>

get_magic_quotes_gpc" title="Zobacz w manualu php" target="_manual
addslashes" title="Zobacz w manualu php" target="_manual

I wszystko jasne winksmiley.jpg


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
prz3m3k
post 13.08.2006, 20:26:44
Post #6





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 3.02.2005

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


hmmmm czy jak na serwerze jest włączone magic_quotes_gpc to musze wykonywać ten skrypt który mi napisałeś powyżej SHiP ?

fragment z manuala php:

  1. <?php
  2.  $lastname = addslashes($_POST['lastname']);
  3. } else {
  4.  $lastname = $_POST['lastname'];
  5. }
  6. ?>


czyli u mnie chyba nie jest potrzebne sprawdzanie tegoż warunku skoro wiem że skrypt będzie działał na serwerze gdzie magic_quotes_gpc jest włączone i nie musze potraktowac mojej zmiennej funkcją addslashes worriedsmiley.gif

Ten post edytował prz3m3k 13.08.2006, 20:27:47


--------------------
Go to the top of the page
+Quote Post
SHiP
post 13.08.2006, 22:52:34
Post #7





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


No tak w twoim przypadku to bedzie bezpieczne... Chociaż moim zdaniem i tak lepiej kod pisac uniwersalny ;]


--------------------
Warsztat: Kubuntu, PhpStorm, Opera
Go to the top of the page
+Quote Post
bim2
post 14.08.2006, 17:51:59
Post #8





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Now łasnie. A jeśli np admin wyłączy ci magci quotes? Trzeba mysleć do przodu ;P robić wszystko tak aby na kazdym serwerze działało tak samo (podobnie) winksmiley.jpg


--------------------
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 17:15