Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]problem z logowaniem
Forum PHP.pl > Forum > Przedszkole
riquelme
Mam problem z logowaniem.Miałem wcześniej tabele users ,które zawierało pola login hasło i rodzaj.Jeżeli zostały wpisany błędny login lub hasło to pojawiał sie komunikat:błędne dane.W przypadku poprawnie wprowadzonych danych zostało uruchomione sprawdzanie czy wpisany login i hasło mają rodzaj "0" czy "1".Jeżeli rodzaj był "0"to została uruchomiana strona admina,"1" to strona pozostałych użytkowników.Wszystko dobrze działało,ale troche pozmieniałem.Utworzyłem formularz i skrypt który rejestruje nowych użytkownikówi dodaje ich do bazy oraz dodałem w tabeli users pola imie,nazwisko,email,hasło2,natomiast skrypt logowanie zostawiłem bez zmian.Problem polega na tym,że wpisując każdy login i hasło z rodzajem 0 lub 1 zawsze przenosi mnie na strone admina.Jeżeli ktoś mógłby wskazać błąd będe wdzięczny.Poniżej przedstawiam kod skryptu logowania

  1. <?php
  2. $polaczenie = mysql_connect("localhost", "w", "e");
  3. mysql_select_db("w", $polaczenie);
  4. $login=$_POST['login'];
  5. $haslo=$_POST['haslo'];
  6. $rodzaj=0;
  7. $wybor = "SELECT * FROM `users` WHERE `login` LIKE '$login'
  8. AND `haslo` LIKE '$haslo' ";
  9. $wynik = mysql_query($wybor, $polaczenie);
  10. $row = mysql_num_rows($wynik);
  11. while( $ilosc = mysql_fetch_array($wynik) )
  12. {
  13. $typ=$ilosc[2];
  14. }
  15. if ($row==1)
  16. {
  17. $_SESSION['login'] = $login;
  18. $_SESSION['haslo'] = $haslo;
  19. if($rodzaj==0)
  20. header("Location: admin.html");
  21. else
  22. header("Location: user.html");
  23. }
  24. else
  25. {
  26. echo "Błędne dane";
  27. }
  28. ?>


----------
prosze pamietac o odpowiednim bbcode!
--
dr_bonzo
krzyszbi
po pierwsze ustawiansz prawie na początku skryptu
  1. <?
  2. $rodzaj=0;
  3. ?>

a póżniej tego nie zmieniasz nawet jeśli
  1. <?php
  2. $row == 1;
  3. ?>

więc sie nie dziw że ci zawsze ładuje si e strona admina
można to mniej więcej tak zrobić
  1. <?
  2. $polaczenie = mysql_connect("localhost", "w", "e");
  3. mysql_select_db("w", $polaczenie);
  4. $login=$_POST['login'];
  5. $haslo=$_POST['haslo'];
  6. $rodzaj=0;
  7. $wybor = "SELECT * FROM `users` WHERE `login` LIKE '$login'
  8. AND `haslo` LIKE '$haslo' ";
  9. $wynik = mysql_query($wybor, $polaczenie);
  10. $row = mysql_num_rows($wynik);
  11. $ilosc = mysql_fetch_array($wynik)
  12. if (!empyt($ilosc))
  13. {
  14. $typ=$ilosc[2];
  15. if ($ilosc['rodzaj'] == 1)
  16. {
  17. $rodzaj = 1;
  18. }
  19. }
  20. if ($row==1)
  21. {
  22. $_SESSION['login'] = $login;
  23. $_SESSION['haslo'] = $haslo;
  24. if($rodzaj==0)
  25. header("Location: admin.html");
  26. else
  27. header("Location: user.html");
  28. }
  29. else
  30. {
  31. echo "Błędne dane";
  32. }
  33. ?>
riquelme
Rodzaj ustawiłem na początku,tylko nie mogę znaleźć przyczyny błędnej składni,którą podałeś w if tzn. if(!empty($ilosc)) bo pojawia sie błąd : Parse error: syntax error, unexpected T_IF .
Gość
a
  1. <?php
  2. ?>


nie powinno czasami byc na samym początku skryptu??
erix
Cytat
nie powinno czasami byc na samym początku skryptu?

byle by bylo przed odwolaniem do $_SESSION
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.