Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z logowaniem :(
Forum PHP.pl > Forum > Przedszkole
Gligamesh
witam ma taki skrypt logowania
  1. <? 
  2.  
  3. mysql_connect (&#092;"localhost\", \"\", \"\");
  4. mysql_select_db (&#092;"podkret\");
  5.  
  6. $query = mysql_query(&#092;"SELECT * FROM `redakcja` WHERE `nick`='\".$PHP_AUTH_USER.\"'\"); 
  7. while ($rekord = mysql_fetch_array ($query)) 
  8. { 
  9. $name = $rekord[1]; 
  10. $password = $rekord[2]; 
  11. } 
  12.  
  13. if (($PHP_AUTH_USER<>$name)or($PHP_AUTH_PW<>$password)) { 
  14. header(&#092;"WWW-Authenticate: Basic realm=\"tajna strefa\\"n\"); 
  15. header(&#092;"HTTP/1.0 401 Unauthorizedn\"); 
  16. echo &#092;"Brak autoryzacji!\"; 
  17. exit; 
  18. } 
  19.  
  20. ?> 
  21.  
  22.  
  23. <!doctype html public \"-//w3c//dtd html 4.0 transitional//en\"> 
  24. <html><head><meta http-equiv=\"content-type\" 
  25. content=\"text/html; charset=iso-8859-2\"> 
  26. <title>Tajna strefa</title></head><body> 
  27.  
  28. Ok, udało Ci się wej&para;ć do tajnej strefy... 
  29.  
  30. </body></html>


niby dziala ale nie dziala, od razu pokauzje zawartosc strony, jak zrobic by spełniał swoja role questionmark.gif
halfik
Tak na oko to moze tak:

  1. <?php
  2.  
  3. mysql_connect (&#092;"localhost\", \"\", \"\");
  4. mysql_select_db (&#092;"podkret\");
  5.  
  6. $query = mysql_query(&#092;"SELECT * FROM `redakcja` WHERE `nick`='\".$PHP_AUTH_USER.\"'\"); 
  7. while ($rekord = mysql_fetch_array ($query)) 
  8. { 
  9. $name = $rekord[1]; 
  10. $password = $rekord[2]; 
  11. } 
  12.  
  13. if (($PHP_AUTH_USER==$name) && ($PHP_AUTH_PW==$password)) { 
  14. echo '<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">'; 
  15. echo '<html><head><meta http-equiv=\"content-type\" ';
  16. echo 'content=\"text/html; charset=iso-8859-2\">'; 
  17. echo '<title>Tajna strefa</title></head><body> ';
  18.  
  19. echo 'Ok, udało Ci się wej&para;ć do tajnej strefy... ';
  20.  
  21. echo '</body></html>';
  22.  
  23.  
  24. }
  25. else{
  26. header(&#092;"WWW-Authenticate: Basic realm=\"tajna strefa\\"n\"); 
  27. header(&#092;"HTTP/1.0 401 Unauthorizedn\"); 
  28. echo &#092;"Brak autoryzacji!\"; 
  29. exit; 
  30. } 
  31.  
  32.  
  33.  
  34. ?>
Gligamesh
niestety nic z tego, okienko sie dalej nie poakzuje sad.gif moze ktos zna jakis inny "bezpieczny" system logowania questionmark.gif
halfik
no tak, nie uzywam authoriza i teraz widac winksmiley.jpg

a system logowania to sobie mozesz przeciez sam napisac, rpsota sprawa: maly formularz kilka linijek kodu i jest proste logowanie winksmiley.jpg
Gligamesh
tak wiem ale czy takie logowanie jest bezpieczne questionmark.gif
rogrog
a czemu nie questionmark.gif byle by nie było wykorzystania tego przeżytku zwanego register_globals i jeżeli współdziała z bazą danych było odporne na mysql injections i juz smile.gif
Gligamesh
eee a tak po ludzku questionmark.gif
rogrog
1. uzywasz tablicy $_GET np. $_GET[login] zamiast po prostu $login
2. jezeli korzystasz z bazy to przed wstawieniem np. loginu do zapytania przepuść go przez mysql_escape_string()
Gligamesh
tak questionmark.gif
  1. <?php
  2. $login = mysql_escape_string($login);
  3. ?>
rogrog
no np.

  1. <?php
  2. $q = &#092;"SELECT nr, login, haslo FROM users WHERE login='\".mysql_escape_string($_GET[login]).\"' AND haslo='\".mysql_escape_string($_GET[haslo]).\"'\";
  3. $r = mysql_query($q);
  4.  
  5. if(mysql_num_rows($r)>0) { 
  6. //zalogowany
  7. }
  8.  
  9. ?>


dodam ze dla bezpieczenstwa warto hashowac zapisane w bazie haslo md5()

ech... jak cos to sobie poszukaj na forum
halfik
z ty mbezpieczenstwem danych to raczej nie tak. dane na sieci chyba nigdy nie sa bezpieczne i nie beda. a jesli chodzi o logowanie, to mozna wspomoc sie protokolem SSL, ale jesli nie piszesz zadnego sklepu internetowego or something like that to nie zawracaj sobie tym glowy.
Gligamesh
ok zrobilem takie cos

  1. <?require('menu.txt'); 
  2. mysql_connect (&#092;"localhost\", \"\", \"\");
  3. mysql_select_db (&#092;"podkret\");
  4. $zapytanie = &#092;"SELECT DISTINCT nick,haslo FROM redakcja WHERE nick='\".$_POST[\"login\"].\"' AND haslo='\".$_POST[\"pas\"].\"';\";
  5. $wynik = mysql_query($zapytanie);
  6. ?>
  7. <link rel=\"stylesheet\" type=\"text/css\" href=\"../css.css\"><meta http-equiv=\"Content-Language\" content=\"pl\">
  8. <title>Panel Administracyjny</title>
  9. <body topmargin=\"0\" leftmargin=\"0\">
  10. <div align=\"center\">
  11.   <center>
  12.   <table border=\"0\" style=\"border-collapse: collapse; \" height=\"256\" width=\"770\">
  13.     <tr>
  14. <?
  15. if(mysql_num_rows($wynik)!=0)
  16. {
  17. $_SESSION[&#092;"login\"]=$_POST[\"login\"];
  18. $_SESSION[&#092;"pas\"]=$_POST[\"pas\"];
  19. $_SESSION[&#092;"accept\"]=1;
  20. while ($user = mysql_fetch_array($wynik))
  21. {
  22. echo&#092;"<td width=\"100%\\" height=\"220\" background=\"adm.jpg\" valign=bottom><div align=\"right\">
  23. <table border=&#092;\"0\" width=\"350\" >
  24.   <tr>
  25.     <td width=&#092;\"100%\"><a href=\"panel_login.php?action=show\">Poka&iquest; profil</a>&nbsp; <a href=\"panel_login.php?action=edit\">Edytuj profil </a>&nbsp;<a href=\"?logout=t\">Wyloguj ($user[0])</a></td>
  26.   </tr>
  27.   <tr>
  28.     <td width=&#092;\"100%\">&nbsp;</td>
  29.   </tr>
  30. </table>
  31. </div></td>
  32.     </tr>
  33.     <tr> <td width=&#092;\"100%\" height=\"14\" bgcolor=\"#666666\"><center>$menu</center></td>
  34.     </tr>
  35.     <tr>
  36.       <td width=&#092;\"100%\" height=\"298\" valign=\"top\">\";
  37. // zalogowny 
  38.  
  39.  
  40.  
  41.  
  42. //zalogowany      
  43. }
  44. }
  45. else
  46. {


logowanie dzial tylko niestey nie sesje co jest zle questionmark.gif
m_iwanicki
Aby sesje działały nie mozesz wysłac nic do przeglądarki przed session_start(),
najpierw to a potem cała reszta.
hispano
Miałem ten sam problem. To była walka z wiatrakami, ponieważ ta metoda autoryzacji działa tylko gdy Server API to Apache (tak jak w Krasnalu). Natomiast często na serwerach wirtualnych w internecie Server API to CGI.

A co jest ustawione znajdziesz w phpinfo

pozdrawiam
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.