![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
Witam wszystkich mam problem z rejestracją użytkowników.
Napisałem sobie prosty kod rejestracji użytkowników. Dane są przechowywane w bazie SQL. A oto kod który napisałem:
Mój problem polega na tym, że gdy wypełniam formularz rejestracyjny to zawsze wywali mi że dane są nieprawidłowe. Męczę się już z tym trochę ale bez żadnych rezultatów. Mam nadzieję że ktoś mi pomoże rozwiązać mój problem. Z góry dzięki. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Pokaż całą klasę User (zwłaszcza statyczne metody: validateUsername, validateEmailAddr oraz getByUsername) i funkcję sendMailRegistred (po angielsku powinno być sendRegisteredEmail). Kilka uwag:
1. stosuj jednak instrukcje if, jak widać sam się gubisz w ternariuszach 2. nie podobają mi się linie 17. i 18 (bo nie znam implementacji klasy User): $user = User::getByUsername($_POST['login']); if ($user->userId) nigdzie nie tworzysz instancji obiektu User, korzystasz z metod statycznych, a w linii 18. próbujesz pobrać (magicznym getterem?) wartość pola userId (chyba, że nie pokazujesz całego kodu i gdzieś wcześniej jest $user = new User(); ![]() 3. pokaż jeszcze formularz rejestracyjny, tak dla pewności Ten post edytował darko 21.12.2009, 02:54:29 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
oto moja klasa user:
oraz dalsza część:
a to formularz rejestracyjny:
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No trochę własnej inwencji...
Cytat to zawsze wywali mi że dane są nieprawidłowe. Skoro ci wyswietla ten blad, znaczy ze ten warunek:if ($password && $captha && User::validateUsername($_POST['login']) && User::validateEmailAddr($_POST['mail']) && $_POST['login'] && $_POST['mail'] && $_POST['regulamin'] && $_POST['dane']) Nie jest spełniony. Usiądź sobie teraz wygodnie i sprawdź każdą z tych składowych a dowiesz się która z nich jest nie prawdziwa. Jak już będziesz wiedział która z nich nawala, to będziesz wiedział gdzie masz szukać błedu. Trudne? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
i jeszcze funkcja wysyłająca email:
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Czy nie jest tak, że w metodach getByUsername oraz getById pomyliłeś mysql_fetch_array z mysql_fetch_object ? Mam wątpliwości czy w metodzie validateUsername jest poprawne wyrażanie regularne. Linia 6. - jesteś pewien, że wcześniej zapisałeś cokolwiek do $_SESSION['captcha'] ?
Ten post edytował darko 21.12.2009, 11:28:30 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
dobra problem z niespełnionym warunkiem if rozwiązany.
a teraz jeszcze jeden problem. dlaczego podczas rejestracji funkcja save() w klasie nic nie dodaje do bazy znaczy dodaje jest nowy rekord ale jest pusty żadnych danych w nim nie ma. dlaczego? powiem wam że pierwszy raz używam klasy i nie znam tej metody za bardzo. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
$this->isActive to boolean, nie wiem czy jak sformatujesz go %d dla sprintf to automatycznie zostanie skonwertowany na 1 lub 0 ?
W którym miejscu był wcześniej błąd w warunku ? Dlaczego raz korzystasz z DB_TBL_PREFIX,, a raz z db_TBL_PREFIX = czy to na pewno ma się znaleźć w zapytaniu? Ten post edytował darko 21.12.2009, 11:35:07 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
przedtem problem tkwił w captcha.
dokładnie w pliku generującym go, nie tworzył sesji w której miał być zapisywany aktualny kod z obrazka. a tym db_TBL_PREFIX to akurat mój błąd. niedociśnięty shift widzę że dokładnie przeanalizowałeś mój kod. za to na pewno poleci + Ten post edytował maxil 21.12.2009, 11:44:48 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Chyba wiem, dodaje puste wartości dlatego, że
$this->login $this->haslo i cała reszta nie istnieje, zobacz mój post kilka "pięter" wyżej - wyciągasz dane za pomocą mysql_fetch_array, a przypisujesz je jakbyś korzystał z mysql_fetch_object (i stdClass). Zmień to albo dodaj odpowiednie pola do klasy User albo zamiast $this->login stosuj $this->fields['login'] (w zapisie i odczycie danych). Ten post edytował darko 21.12.2009, 12:07:17 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 56 Pomógł: 2 Dołączył: 8.02.2004 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
dobra problem z niespełnionym warunkiem if rozwiązany. to napisz rozwiązanie , wiesz .. zawsze jakaś pomoc dla potomnych ... -------------------- ![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat to napisz rozwiązanie , wiesz .. zawsze jakaś pomoc dla potomnych ... Nawet jak napisze to znajdzie sie taki ktos jak ty i nie będzie potrafił tego przeczytać ![]() ps: jak nie zrozumiales aluzji: rozwiązanie przecież juz podał. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
no to czyli jak? mam utworzyć te zmienne przez:
var $login; var $haslo; [...] |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
var $login to kilka lat temu, raczej protected $login; itd. Wszystko opisałem już w poście wyżej.
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
pokażcie mi na przykładzie jak ro zrobić, bo siedzę nad tym od rana i nic mi nie wychodzi ;/
może mi to nie działać poprawnie z powodu że mam zainstalowany na serwerze PHP5? Ten post edytował maxil 21.12.2009, 21:43:48 |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
|
|
|
![]() ![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
![]() ![]() Nie potrafisz korzystać z mysql_fetch_array, dowód ? Metoda getByUsername linia 98. Dane należy w tym wypadku wyciągać za pomocą pętli while, zajrzyj chociaż do manuala. Wytłumacz mi co oznacza ten zapis (linia 99) $u->login = $username; ? Do czego przypisujesz tutaj wartość parametru $username ? Masz gdzieś pole login w klasie User? Nie widzę. Jaka jest różnica pomiędzy $u->username a $u->fields['username'] ? Albo $this->username a $this->fields['username'] ? Jaka jest różnica pomiędzy mysql_fetch_object a mysql_fetch_array ? Zajrzałeś przynajmniej do przykładów w tych linkach, które podałem ? Tak na prawdę ja juz Ci odpowiedziałem na wszystkie pytania w poście #10 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 212 Pomógł: 11 Dołączył: 8.11.2008 Skąd: Sieradz Ostrzeżenie: (10%) ![]() ![]() |
![]() ![]() Nie potrafisz korzystać z mysql_fetch_array, dowód ? Metoda getByUsername linia 98. Dane należy w tym wypadku wyciągać za pomocą pętli while, zajrzyj chociaż do manuala. Wytłumacz mi co oznacza ten zapis (linia 99) $u->login = $username; ? Do czego przypisujesz tutaj wartość parametru $username ? Masz gdzieś pole login w klasie User? Nie widzę. Jaka jest różnica pomiędzy $u->username a $u->fields['username'] ? Albo $this->username a $this->fields['username'] ? Jaka jest różnica pomiędzy mysql_fetch_object a mysql_fetch_array ? Zajrzałeś przynajmniej do przykładów w tych linkach, które podałem ? Tak na prawdę ja juz Ci odpowiedziałem na wszystkie pytania w poście #10 a może jednak potrafię dowód? funkcja getByUsername działa bez zarzutu wyciąga wszystkie wymagane dane. mówisz pętla while tak? ale po co ona jak ja wyciągam dane tylko jednego użytkownika a nie wszystkich więc pętla jest w tym wypadku zbędna chcesz wiedzieć co oznacza linia 99 już mówię do $u->login jest zapisywany nick użytkownika na podstawie którego jest wyciągane wszystko z bazy dowód? public static function getByUsername($username) Ten post edytował maxil 22.12.2009, 02:21:00 |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Luz, jakoś nie zauważyłem magicznego settera i gettera. Szukamy dalej. Mój błąd
![]() Masz spie#@&ony setter, zabrakło s w $this->field[$field] = $value; Powinno być:
Powinno śmigać Ten post edytował darko 22.12.2009, 10:47:18 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 11:04 |