Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z skryptem logowania
Forum PHP.pl > Forum > PHP
dzesi
Witam was mam problem otóż , nie do końca wiem jak mogę sprawdzić czy dany user podał prawidłowy login i hasło, jeśli poda dobrze przenosi go na inna stronę o to kawałek klasy
  1. <?php
  2. function spr_user()
  3.  {
  4.  $zapytanie="SELECT `login`,`haslo`FROM `user` WHERE `login`='".$this->login."' AND `haslo`='".$this->haslo."'";
  5.  $query=mysql_query($zapytanie)or die ('QUERY_ERROR'.mysql_error());
  6.  if( mysql_num_rows($query) ==1)
  7.  {
  8.  echo"zalogowany";
  9.  $this->log_user();
  10.  }
  11.  }
  12.  function log_user()
  13.  {
  14.  echo "zalogowany";
  15.  // header przeierowanie na strone z sesji
  16.  }
  17.  
  18. }
  19. $start=new logowanie();
  20. $start->polaczenie();
  21. if($start->spr_user())
  22. {
  23. die ("Złe hasło albo login ");
  24. }
  25.  
  26. if (!$start->log_user()) {
  27. die("Nie mozna sie zalogować");
  28. }
  29. ?>

Bardzo proszę o napisanie co robie złe i jak powinnem to zrobić worriedsmiley.gif

Po męczarniach doszyłem mniej więcej
  1. <?php
  2. //Sprawdzanie czy dany uzytkonik znajduje sie w bazie danych
  3.  function spr_user()
  4.  {
  5.  $zapytanie="SELECT `login`,`haslo`FROM `user` WHERE `login`='".$this->login."' AND `haslo`='".$this->haslo."'";
  6.  $query=mysql_query($zapytanie)or die ('QUERY_ERROR'.mysql_error());
  7.  if( mysql_num_rows($query))
  8.  {
  9.  echo"zalogowany";
  10.  //czy lepiej tutaj dac wywołanie funkcji loh_user();, czy może cos innego radzicie ?
  11.  }
  12.  else 
  13.  {
  14.  echo"zle";
  15.  }
  16.  }
  17.  /*function log_user()
  18.  {
  19.  echo "zalogowany";
  20.  // header przeierowanie na strone z sesji
  21.  }*/
  22.  
  23. }
  24. $start=new logowanie();
  25. $start->polaczenie();
  26. if($start->spr_user())
  27. {
  28. die ("Złe hasło albo login ");
  29. }
  30.  
  31. /*if (!$start->log_user()) {
  32. die("Nie mozna sie zalogować");
  33. }*/
  34. ?>

Moje petanko , czy wy używacie takiego mechanizmu ? [if( mysql_num_rows($query))
{
echo"zalogowany";
//czy lepiej tutaj dac wywołanie funkcji loh_user();, czy może coś innego radzicie ?
}], czy może macie inne lepsze sposoby?.

Dodam ze ten skrypt nie do końca jest poprawny i dziś już nie mam pomysłów jak dobrze te logowanie napisać dry.gif , może ktoś pokaże co i jak powinno być, guitar.gif

No to panowie można powiedzieć że prawie skończyłem ale mam pewien dylemacie otóż jak byście radzili zabezpieczyć ten skrypcik
  1. <?php
  2. $zapytanie="SELECT * FROM `user` WHERE `login`='".$this->login."' AND `haslo`='".$this->haslo."'";
  3.  $query=mysql_query($zapytanie)or die ('QUERY_ERROR'.mysql_error());
  4.  /*$num_rows=mysql_num_rows($query);
  5.  if ($num_rows >0)*/
  6.  $fetch_rows=mysql_fetch_row($query);
  7.  $sprawdzanie=$fetch_rows[0];
  8.  if($sprawdzanie >0) {
  9. echo "ok zalogowany ";
  10.  }
  11.  else
  12.  {
  13.  echo"zle";
  14.  }
  15. }
  16. $start=new logowanie();
  17. $start->polaczenie();
  18. $start->spr_user();
  19. ?>

Bo jak np mam formularz logowania i w nim nie wpisze nic to tak mi sie pokazuje komunikat ok zalogowany myślę zęby zabezpieczyć to isset albo empty , albo może macie jakieś inne pomysły?
Tak samo jak wywołam stronę na której znajduje sie ten skrypt w przeglądarce to tak pokazuje ok zalogowany myślę zęby tutaj dać sesje zęby to zabezpieczyć .chociaż nie mam pomysłu jak to tak do końca zrobić worriedsmiley.gif
, a zabezpieczenie SQL Fiction będzie późnej w innej klasie
foka
po pierwsze radze sparwdzac wartosc mysql_num_rows ( wdrugim przypadku to pomijasz), po drugie niepotrzebnie wyciagasz z bazy login i haslo, wydaje mi sie, ze wystarczy Ci np. id usera. a po trzecie jak wyrzucisz wyswietkane komentarze (typu zalogowany) zeby moc wyslac header to powinno byc ok

pozdr
dzesi
Mysle też ze takie rozwiązanie też jest dobre
  1. <?php
  2. $num_rows=mysql_num_rows($query);
  3.  if ($num_rows >0)
  4. ?>

Mam nadzieje ze ktoś w malutki sposób mi pomoże bo jak na razie to na tym forum jest cicho worriedsmiley.gif
foka
chyba lepiej tak:
if (mysql_num_rows($query)==1)
{
dzialanie podczas poprawnego logowania
}
else
{
blad podczas logowania
}
dzesi
foka Nie do końca rozumiem jak sprawdzać wartości chodzi ci o
  1. <?php
  2. if($start->spr_user())
  3. {
  4. die ("Złe hasło albo login ");
  5. }
  6. ?>

Czy może o
  1. <?php
  2. if( mysql_num_rows($query) ==1)
  3. ?>

Jeśli ktoś może pokazać to w kodzie najlepiej party.gif

foka tak naprawdę to już straciłem rachubę w sesie jak to ma być robione bo co czytam na forach angielskich
np to każdy użytkownik /programista inaczej radzi i tutaj jest problem smile.gif
foka
  1. <?php
  2. if( mysql_num_rows($query) ==1)
  3. ?>


wlasnie o to

wg. mnie najprosciej to:
1. wycinam niedozwolone znaki w przeslanych loginie i hasle
2. pobieram np. haslo z bazy dla przeslanego loginu (sprawdzam czy tylko jeden rekord pobrany z bazy)
3. porownuje haslo z haslem przeslanym
4. jezeli rowne to ok, jezeli nie to blad

pozdr
dzesi
foka a byś mógł pokazać w kodzie jak by te porównanie wyglądało ? , bo za bardzo nie wiem jak z tym sobie poradzić zęby to co po zalogowaniu sie tylko pokazywało a nie jak nawet sie nie zaloguje to tak przy odpaleniu tego skryptu to widać jedynie sesja wchodzi w grę czy może coś innego ?
foka
Cytat(dzesi @ 1.10.2007, 14:29:15 ) *
foka a byś mógł pokazać w kodzie jak by te porównanie wyglądało ? , bo za bardzo nie wiem jak z tym sobie poradzić zęby to co po zalogowaniu sie tylko pokazywało a nie jak nawet sie nie zaloguje to tak przy odpaleniu tego skryptu to widać jedynie sesja wchodzi w grę czy może coś innego ?


ze co?? blinksmiley.gif nic z tego nie zrozumialem ;o)
napisz, prosze w bardzuiej przystepnej formie

pozdr

a co do kodu to mniej wiecej tak
  1. <?php
  2. if (isset($_POST['login'])) $login=$_POST['login']; else $login='';
  3. if (isset($_POST['haslo'])) $haslo=$_POST['haslo']; else $haslo='';
  4.  
  5. if ($login and $haslo)
  6. {
  7. $q='select haslo from users where login="'.$login.'"';
  8. $w=mysql_query($q);
  9. if (mysql_num_rows($w)!=1)
  10. {
  11. echo 'bledne logowanie';
  12. }
  13. else
  14.  {
  15. if ($haslo==$o->haslo)
  16. {
  17. //przekierowanie do strony, ustawienie sesji itp, itd
  18. }
  19. else
  20. {
  21. echo 'bledne login lub haslo';
  22. }
  23. }
  24. }
  25. ?>


pisalem na baaardzo szybko, wiec moga byc bledy, ale chodzi o sama zasade

pozdr
dzesi
dzinx ale do tego już doszedłem , chodzi mi o to jak sprawdzić login z bazy ?
Kod
function spr_user()
{
    $zapytanie="SELECT * FROM `user` WHERE `login`='".$this->login."' AND `haslo`='".$this->haslo."'";
    $query=mysql_query($zapytanie)or die ('QUERY_ERROR'.mysql_error());
    $num_rows=mysql_num_rows($query);
    if ($num_rows ==1) {
        
        $this->sesion_login();
        if (isset($_SESSION['login']==$this->login) //`login` ?
        {
         echo 'Wpisany login ' . $login . ' jest zgodny z bazowym ' . $login_z_bazy;        
        }
    
    }

    
}
}
$start=new logowanie();
$start->polaczenie();
if (!$start->spr_user()) {
    echo "Nie zalogowany ";
}

ja prubuje `login` i $this->login ale nic to nie daje , rolleyes.gif , czekam nadal na posty od was może na cuś wpadniecie
foka
no to trza bylo tak od razu ;o)
nie "obrabiasz" wyniku z bazy
dopisz za $query np tak
  1. <?php
  2. $ob=mysql_fetch_object($query);
  3. ?>


i wtedy login z bazy masz w $ob->login

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