![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
W pocie czoła pracuję nad uruchomieniem formularza rejestracyjnego na mojej stronie. Niestety gotowy skrypt, którym dysponowałem posiada wiele wad i niestety muszę go poprzerabiać. Niestety moja znajomość PHP jest znikoma w związku z czym potrzebuję, aby ktoś fachowym okiem rzucił okiem na efekty mojej pracy. Poniżej przesyłam kod do formularza:
Trochę przekombinowane chyba, no ale tak mi wyszło. Całą resztę, czyli wpisywanie danych do bazy i wysyłanie maila z kluczem jest załatwione przez plik verify.php. W pierwotnej wersji działało ok, ale po moich poprawkach nie działa. W skrypcie jest jeden kod PHP, który, jak mi się wydaje, odsyła do tego pliku:
Nigdzie indziej w kodzie nie pojawia "verify.php", dlatego wnioskuję, że za odsyłanie do tej strony odpowiada właśnie ten fragment kodu. Tylko, że teraz to odsyłanie nie działa i nie wiem dlaczego. Proszę o pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 1 Dołączył: 26.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Niezbyt rozumiem po co ta pętla.
Albo A albo B, zdecyduj się. 2 opcja jest lepsza. Wytłumacz mi po co ci tutaj mysql_real_escape_string, albo powiedz czy rozumiesz chociaż jak ta funkcja działa czy tez używasz jej bo ma w nazwie "mysql". Co konkretnie nie działa i co to za plik w 2 listingu? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
1. Nie wiem po co tam ta pętla. Była w oryginale i nie wiem czy jest potrzebna.
2. Header i Connect muszą być, bo ten drugi odpowiada tylko za połączenia z bazą danych. 3. Jeśli chodzi o mysql_real_escape_string, to nie wiem po co to jest. Było w oryginale. 4. Verify.php odpowiada za dodanie Usera do bazy danych i wysłanie maila z kodem aktywujacym Usera. Wyglada to tak, że ze strony signup.php przechodzi na verify.php, która wysyła maila i dopisuje dane Usera. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 1 Dołączył: 26.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli dobrze zrozumiałem to ten cały kod to 1 plik. Zmienne loginz i mailz to tablice, a tablice zawsze są większe od zera.
Błędy masz przy przypisywaniu wartości tym zmiennym
I analogiczna sytuacja przy $mailz. intval() może być zbędny, nie pamiętam czy jest automatyczne rzutowanie. Tablice to zbiory, a jak wiadomo nie istnieje coś takiego jak pusty zbiór, są zbiory z pustym elementem. A co do include to zobacz jak są zbudowane. Ten post edytował piszczu 10.05.2011, 17:48:47 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak, oba kody pochodzą z tego samego pliku - signup.php.
Poprawiłem wskazane błędy i rzeczywiście za pierwszym razem rejestracja poszła ok i już nawet byłem zadowolony, ale potem okazało się, że formularz przestał wychwytywać błąd o powtarzającym się loginie i mailu. To znaczy wychwytuje go i rejestracja nie przechodzi do pliku verify.php, ale nie wyświetla informacji o tym, że login i mail się powtarzają. Może trzeba poprawić coś tutaj
Ten post edytował artdem 11.05.2011, 09:59:39 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 1 Dołączył: 26.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli robisz coś inaczej niż ci powiedziałem to posyłaj cały kod, a nie jego fragment. Skąd ja mam wiedzieć co to za zmienne, co jest dalej i jak to ma niby działać? Na pierwszy rzut oka widzę, ze twój skrypt najpierw sprawdza czy w bazie istnieje login "Piszczu", potem dodaje do bazy "piszczu". Gdy znowu chcesz dodać "Piszczu", skrypt idzie dalej bo nie ma takiego loginu w bazie. Pominę również fakt że sprawdzasz czy jest "/'piszczu" a dodajesz "'piszczu". Albo usuń strlower() albo dodaj je też przed selectem. Dodaj też mysql_real_escape_string() w insercie.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
No to cały kod wygląda tak:
Teraz sytuacja wygląda tak, że rejestrując nowego użytkownika, jest dobrze - tzn. z formularza przechodzi na stronę verify, która wysyła maila z kodem aktywacji i dopisuje użytkownika do bazy. Ale jeśli próbuję dopisać jeszcze raz użytkownika z takim samym loginem (niezależnie czy pisane z małej czy wielkiej) lub mailem, to po wciśnięciu buttona rejestracji odświeża mi stronę signup i nie wyświetlają się żadne błędy. Inne błędy - niewypełnione pola, niewłaściwe hasło, niewłaściwy email się pojawiają. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ale jeśli próbuję dopisać jeszcze raz użytkownika z takim samym loginem A nie lepiej jest sprawdzić czy użytkownik istnieje już w bazie? ![]() Jeśli tak to przerwać rejestracje,np komunikatem Podany użytkownik istnieje już w naszej bazie danych ,proszę użyć innej nazwy użytkownika. Jeśli nie to normalnym tokiem rejestracja. Dodatkowego zabezpieczenia można użyć wartości unique w kolumnie z loginem w bazie danych. Ten post edytował Rid 11.05.2011, 15:10:58 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Przecież sprawdzam i jeśli użytkownik już jest, to nie da się dopisać drugiego takiego samego, ale nie wyświetla mi się o tym błąd o tym informujący.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 715 Pomógł: 47 Dołączył: 5.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
$idlogincheck = mysql_query($logincheck);
Możnaby użyć if: if ($idlogincheck==0){ ......To zarejestruj} else { ........wyświetl komunikat z błędem} |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
To jest później:
I analogicznie dla pola z mailem. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 1 Dołączył: 26.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zastanów się. Najpierw posłałeś 3 kawałki kodu i powiedziałeś, że to wszystko, potem dosłałeś jeszcze coś i właściwie nie wiadomo z którego to pliku. Jeżeli chcesz żeby ktoś ci pomógł to posyłaj kod w formie niezakodowanej w czytelny tylko dla Ciebie sposób. Mnie uczyli, że każdy skrypt PHP zaczyna się od <?php, u ciebie tego nie widzę, więc wnioskuję, że to nie cały kod. To raz.
Druga sprawa to zakładając, że kod dosłany w ostatnim poście jest częścią pierwszego pliku, używasz $loginz jako tablicy, a jak wiadomo jest to liczba (wynika to chociażby z intval()) Trzecia sprawa. PHP ma wbudowaną z pozoru niepotrzebną funkcję, która w rzeczywistości jest potężnym narzędziem do debugowania, mowa tu o var_dump(). Dodaj ją po ob_start() [$loginz jako argument] i przeanalizuj wyniki. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 6.05.2011 Ostrzeżenie: (0%) ![]() ![]() |
Poniżej przesyłam całość kodu dla strony signup.php. Wcześniej tego nie zrobiłem, bo myślałem, że wystarczą tylko te phpowe fragmenty. Będę wdzięczny za pomoc i sprawdzenie.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 1 Dołączył: 26.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zdebugowałeś? Nie!
Zmieniłeś $loginz[0] na $loginz? Nie! Przeczytałeś moje porady do końca? Nie! Człowieku, nikt nie będzie poprawiał za Ciebie kodu. Daje ci wskazówki a czytasz je wybiórczo. A skoro czytasz wybiórczo to skrypt również działa wybiórczo. Jeżeli chcesz żeby ktoś napisał za Ciebie kod to nie proś o pomoc tylko o numer konta. Ten post edytował piszczu 12.05.2011, 13:55:00 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 16:04 |