![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 5.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Przedstawiam mój skrypt logowania. Próbuję wydziergać coś takiego, żeby user i admin logowali się z tego samego formularza, ale mam w bazie 2 tabele `users` i `admin`. Moje założenie było następujące: Jeśli wypełniony firmularz ---> znajdź usera w tabeli `users` gdzie pasują dane logowania ---> jeśli brak pasujących wyników ---> znajdź admina w tabeli `admin` gdzie pasują dane logowania. Jak znajdzie usera to ---> header do user_panel.php Jak znajdzie admina to ---> header do admin_panel.php Oto kod:
Co jest nie tak? Usera loguje mi pięknie, ale już po wpisaniu poprawnych danych logowania admina nie dzieje się nic... |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 367 Pomógł: 17 Dołączył: 4.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jaki jest sens trzymania danymch administratora w osobnej tabeli? Bedzie ich więcej niż 1? Chcesz aby za każdym razem kiedy użytkownik nie zostanie znaleziony w tabeli user, był nastepnie wyszukiwany w tabeli admin ?
![]() Ten post edytował kosmos 5.11.2013, 13:50:38 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 5.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Owszem, będzie więcej niż 1.
Pomijam fakt, że w późniejszej fazie będę chciał doklepać do tego jeszcze 3 rodzaj użytkownika - sprzedawca... Ale to już inna bajka, chodzi mi o samą ideę jak poradzić sobie z takim zagadnieniem. Sens jest następujący: Admin potrzebuje tylko pól name, password, email. User potrzebuje pól name, password, email, firma, nip, regon, imie, nazwisko... itd Jak bym chciał to w 1 tabelę dać to admin też musiałby te wszystkie pola posiadać. Oczywiście mogłyby być NULL, ale chce, żeby pola dla usera byłu NOT NULL. Ten post edytował artkow00 5.11.2013, 13:54:21 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 7 Dołączył: 22.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
kod wygląda na poprawny, wina musi leżeć po innej stronie może zła lokalizacja w header może inaczej zapisałeś hasło dla admina niż dla usera
Proponuje usunąć chwilowo header w części admina próbować to debugować linia po lini zaraz po }else{ Ten post edytował Qss 5.11.2013, 13:54:21 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat ale już po wpisaniu poprawnych danych logowania admina nie dzieje się nic... Skoro ci nie znajduje admina, to masz do wyboru:1) Albo zle podales dane admina 2) Albo masz blad zapytania. Sprawdz, wyswietl ten blad, w ogole wyswietlaj wszystkie bledy.... Tu masz wszystko opisane jak masz tak banalne rzeczy rozwiazywac samemu: Temat: Jak poprawnie zada pytanie -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 367 Pomógł: 17 Dołączył: 4.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
wyprintuj sobie na początek dowolny wyraz po ELSE, póxniej sprawdź poprawnośc zapytania do bazy
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 5.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Kosmos wyprintowałem, i nic. Nie printuje, więc problem musi się znajdować gdzieś przed else. name i password z formularza na bank jest ok - jak usunę zupełnie część z adminem to ładnie loguje usera i header również działa.
Po sprawdzeniu zapytania nie loguje admina, ani nie wyświetla 'błąd zapytania do BD'... Po prostu pozostaje wyświetlony formularz z wpisanymi danymi i nic się nie dzieje. Dobra wyświetla mi 'błąd' jeśli po else dam po prostu echo 'błąd'; ale sprawdzenie zapytania nie daje błędu bo dane logowania się zgadzają, nazwy, pola w bazie i inne detale równeiż są poprawnie (sprawdzone 10 razy) ![]() Ten post edytował artkow00 5.11.2013, 14:09:10 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 367 Pomógł: 17 Dołączył: 4.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź co zwraca Ci
w przypadku gdy podajesz do logowania dane admina |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 5.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dałem taki kodzik po else:
CODE $result1 = mysql_query("SELECT `id` FROM `admin` WHERE `admin_name` = '{$_POST['name']}' AND `admin_pass` = '{$_POST['password']}' LIMIT 1") or die ('błąd zapytania do BD'); if(mysql_num_rows($result1) > 0){ echo 'askaskjcn'; } Nie wyświetliło nic. A oto screen z tabeli admina: Po sprawdzeniu zmiennej $result1:
Otrzymuję: resource(5) of type (mysql result) Szczerze - nie mam pojęcia co to oznacza... |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 367 Pomógł: 17 Dołączył: 4.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 5.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Resource id #5
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Pomijam fakt, że w późniejszej fazie będę chciał doklepać do tego jeszcze 3 rodzaj użytkownika - sprzedawca... Czyli dodasz kolejną tabelę do przeszukiwania? Co jeśli w każdej tabeli pojawi się użytkownik o tym samym loginie? Sens jest następujący: Admin potrzebuje tylko pól name, password, email. User potrzebuje pól name, password, email, firma, nip, regon, imie, nazwisko... itd Jak bym chciał to w 1 tabelę dać to admin też musiałby te wszystkie pola posiadać. Oczywiście mogłyby być NULL, ale chce, żeby pola dla usera byłu NOT NULL. Robisz tabelę główną użytkowników z podstatowymi informacjami oraz tabele profilów, np.: user [id, username, password, type] gdzie type to typ użytkownika (np. 1 -> admin, 2 -> użytkownik) user_profile_1 [user_id, ...] gdzie ... to pola charakterystyczne dla admina user_profile_2 [user_id, ...] gdzie ... to pola charakterystyczne dla użytkownika Będzie tutaj problem z zaciągnięciem informacji o profilu użytkownika, ale można to rozwiązać LEFT JOINując obie tabele user_profile_*. Otrzymujesz za to sporą elastyczność: wspólna tabela danych logowania, możliwość tworzenia dowolnej ilości typów użytkowników z dowolną ilością pól. Ewentualnie na swojej strukturze możesz do logowania wykorzystać widok na bazie danych, który będzie zawierał dane użytkowników z obu tabel. // Edit: W kodzie ~kosmosa zamień nic nie mówiące: na: |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 5.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Czyli dodasz kolejną tabelę do przeszukiwania? Co jeśli w każdej tabeli pojawi się użytkownik o tym samym loginie? Nie pojawi się - zadbałem o to. Sprawdzenie zwróciło: int(0) W ostateczności stworzę jedną tabelę z danymi wszystkich, ale to nie zmienia faktu, że do celów choćby edukacyjnych, chciałbym poznać rozwiązanie swojej "zagadki", zwłaszcza, że (jak wielu z was zauważyło) kod napisany jest poprawnie - a nie działa. ![]() |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Nie pojawi się - zadbałem o to. Zadbałeś o to zapewne po stronie aplikacji, ale zmieniając dane np. przez phpMyAdmina możesz doprowadzić do takiej sytuacji. Wolałbym by baza sama z siebie zapewniła mi unikalność nazw użytkowników. Sprawdzenie zwróciło: int(0) Czyli nie ma rekordów spełniających zadane kryteria, czyli nie ma takiego admina w bazie danych. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 04:57 |