Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie + baza w POSTGRESQL
Forum PHP.pl > Forum > Przedszkole
mercii
Witam
Napisalem takie logowanie ale nie dziala:(
Napisalem to za duzo powiedziane , przerobilem bylo by lepsze.sad.gif
Domyslem sie ze sa spore bledy ale prosze mi wybaczyc i w miare mozliwosci pomoc.
Poszukuje sposobu na bezpieczne bardzo bezpieczne logowanie ale narzie jestem poczatkujacy wiec muse zaczynac od najprostszych.
Prosibym o porady dotyczace tego kodu a takze czym mam sie teraz zajac aby skupic sie na bezpieczenstwie.
Zrobilem baze danych w ktorej uzytkownicy beda sie logowac i sprawdzac stan konta.

  1. <?
  2. function getLoginInfo() {
  3.  
  4. if (isset($_SERVER['HTTP_AUTHORIZATION']))
  5. return explode(':', base64_decode(substr(
  6. $_SERVER['HTTP_AUTHORIZATION'], 6)));
  7. if (isset($_SERVER['PHP_AUTH_USER']))
  8. return array($_SERVER['PHP_AUTH_USER'],
  9. $_SERVER['PHP_AUTH_PW']);
  10. return false;
  11. }
  12.  
  13. $auth = false;
  14. if (($loginInfo = getLoginInfo()) !== false) {
  15. $polacznie = pg_connect("host=localhost dbname=X user=X") or die('Nie mozna nawiazac polaczenia');
  16. $sql="SELECT locked FROM users WHERE username='$loginInfo[0]' AND password='$loginInfo[1]'";
  17. $dane = pg_exec($polaczenie,$sql) or die(pg_erromessage());
  18. $wierdane = @pg_numrows($dane);
  19. if ($wierdane == 1) {
  20. if (!dane($dane, false, false))
  21. $auth = true;
  22. }
  23. }
  24.  
  25. if (!$auth) {
  26. // Brak uprawnien
  27. header('WWW-Authenticate: Basic realm="Tajne"');
  28. header('HTTP/1.0 401 Unauthorized');
  29. echo 'Brak uprawnieе└ do przeglд┘dania strony';
  30. die;
  31. }
  32. echo 'Witaj!';
  33. ?>


Nie ma u mnie w kodzie tych slashy.
acztery
hm nie widze

nie pg_numrows tylko pg_num_rows

i moze zamiast pg_exec daj pg_query
mercii
Poprawilem i jest juz lepiej.
Dziekuje za rade.
Ale nie jest dobrze do konca. teraz laczy mi sie z baza ale nie loguje.
Tzn nie wypisuje napisu witaj co jest wina mysle tego kodu:
  1. <?php
  2. $dane = pg_query($db_handle,$sql) or die(pg_erromessage());
  3. $wierdane = @pg_num_rows($dane);
  4. if ($wierdane == 1) {
  5. if (!dane($dane, false, false))
  6. $auth = true;
  7. }
  8. pg_close($db_handle);
  9. }
  10. ?>

I czemu jak juz raz wpisze dane do okienka autoryzacyjnego HTTP to po odswierzeniu strony sie juz nie pojawia?questionmark.gif?
acztery
Cytat(mercii @ 12.12.2006, 14:08:40 ) *
Poprawilem i jest juz lepiej.
Dziekuje za rade.
Ale nie jest dobrze do konca. teraz laczy mi sie z baza ale nie loguje.
Tzn nie wypisuje napisu witaj co jest wina mysle tego kodu:
  1. <?php
  2. $dane = pg_query($db_handle,$sql) or die(pg_erromessage());
  3. $wierdane = @pg_num_rows($dane);
  4. if ($wierdane == 1) {
  5. if (!dane($dane, false, false))
  6. $auth = true;
  7. }
  8. pg_close($db_handle);
  9. }
  10. ?>

I czemu jak juz raz wpisze dane do okienka autoryzacyjnego HTTP to po odswierzeniu strony sie juz nie pojawia?questionmark.gif?


popraw tak

  1. <?php
  2. $dane = pg_query($db_handle,$sql) or die(pg_erromessage());
  3. $wierdane = pg_num_rows($dane);
  4. if ($wierdane == 1) {
  5. $auth = true;
  6. }
  7. pg_close($db_handle);
  8. ?>





  1. <?php
  2. if (!$auth == true) {
  3.  
  4. echo 'brak dostępu';
  5. } else {
  6.  
  7. echo 'Witaj!';
  8. }
  9. ?>


PS pg_erromessage questionmark.gif? co to questionmark.gif ma byc pg_errormessage
mercii
Dzieki dziala, ale to teraz nie jest do konca to czego bym chcial. Chcialem aby przy sprawdzaniu hasla sprawdzala sie rowniez wartosc pola locked. Jesli jest ona ustawiona na false to sie loguje a jezeli na true to nie udaje sie zalogowac.
A jak rozwiazac problem ze po odswiezeniu strony nie pojawia mi sie okno logowania.
Sprawdzialem i wyglada na to jakbym caly czas byl polaczony z baza a skryp przegladarka pomij pierwsza czesc skryptu z autoryzacja.
acztery
poczytaj o sesjach i tam trzymaj dane wartosci albo ciasteczka. jak ja ci napisze to nic nie zrozumiesz jak sam poszukasz to sie nauczysz powodzenia...
mercii
Po poczytaniu troche o sesjach , stworzylem takie cos i niestety nie chodzi:( . Moja niewprwane oczy nie widza bledu.MOze mi pomozecie:
  1. <?php
  2.  
  3.  
  4. function checkPass($user, $pass)
  5. {
  6. $auth = false;
  7. $db_handle=pg_connect("host=localhost dbname=log user=postgres");
  8. $sql="SELECT COUNT(*) FROM users WHERE username='$user' AND password='$pass'";
  9. $dane = pg_query($db_handle,$sql) or die(pg_errormessage());
  10. $wierdane = @pg_num_rows($dane);
  11. if ($wierdane == 1) {
  12. $auth = true;
  13. }
  14. @pg_close($db_handle);
  15. return $auth;
  16. }
  17. if(isSet($_SESSION['zalogowany'])){
  18. header("Location: glowna.php");
  19. exit();
  20. }
  21. else if(isSet($_POST['user']) && isSet($_POST['haslo']){
  22. if(checkPass($_POST['user'], $_POST['haslo'])){
  23. $_SESSION['zalogowany'] = true;
  24. header("Location: glowna.php");
  25. }
  26. }
  27. ?>
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.