![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 22.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich.
Proszę o wyrozumiałość gdyż to mój pierwszy post. Dopiero zaczynam przygodę z PHP. Mianowicie mam problem z jedną zmienną, które nie mogę wyłapać. Próbuje na znane mi sposoby, ale widocznie jeszcze za mało umiem. Sprawa wygląda następująco: Mam zrobioną rejestrację która wysyła mail na wpisany adres mail z prośbą o aktywację. Link wygląda następująco: Kod http://moja_domena/weryfikacja.php?weryfikacja=potwierdz&kod=2067450578508451e4155be. Klikając w niego zmienna w bazie zmienia stan z 0 na 1. Poniżej kod z pliku wykonującego zadanie
Po kliknięciu w link pokazuje się informacja o tym że konto zostało pomyślnie aktywowane. I teraz chciałbym aby umieścić tutaj możliwość ustawienia hasła gdzie będzie tylko taka możliwość tylko raz. Mam napisany poniższy kod, dzięki któremu mogę zmienić hasło jak jestem już zalogowany, i trwa sesja.
W żaden znany mi sposób nie mogę odebrać zmiennej "$kod". Z góry dziękuję za pomoc w rozwiązaniu problemu. [php][/php] Ten post edytował kapsel2105 22.10.2012, 16:41:37 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chcesz, żeby kod był przechowywany w zmiennej GET, to formularz musi ją wysyłać:
Poza tym ten kod miał być chyba tylko do weryfikacji maila? Tak więc po co go trzymać dalej? Jeśli użytkownik jest już zalogowany to zwyczajnie zmień warunek WHERE id_user=$id_user. A to czy już zmieniał hasło przechowuj w kolumnie tabeli, np. 0 jeśli nie zmieniał, 1 jeśli zmieniał. No i wyedytuj proszę post i wrzuć kod php między znaczniki php, a nie code, bo ciężko się to czyta kiedy trzeba przewijać. Ten post edytował b4rt3kk 22.10.2012, 16:00:17 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 22.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chcesz, żeby kod był przechowywany w zmiennej GET, to formularz musi ją wysyłać:
Poza tym ten kod miał być chyba tylko do weryfikacji maila? Tak więc po co go trzymać dalej? Jeśli użytkownik jest już zalogowany to zwyczajnie zmień warunek WHERE id_user=$id_user. A to czy już zmieniał hasło przechowuj w kolumnie tabeli, np. 0 jeśli nie zmieniał, 1 jeśli zmieniał. No i wyedytuj proszę post i wrzuć kod php między znaczniki php, a nie code, bo ciężko się to czyta kiedy trzeba przewijać. Dzękuję za szybką odpowiedź. Ogólnie wymyśliłem sobie tak że przychodzący mail z linkiem jednocześnie umożliwia ustanowienie hasła. Czyli klikając w link z maila dostajemy info o tym że weryfikacja przebiegła poprawnie oraz poniżej zostaje wyświetlony formularz (osadzony w include) z dwoma polami oraz walidacją poprawności hasła. Ma się to wyświetlać tylko raz (czyli w przypadku gdy poprawnie się zweryfikowaliśmy). Dlatego wymyśliłem żeby odnieść się do zmiennej $kod, gdyż też jest ona zapisana w bazie, w tej samej tabeli. Tylko właśnie nie mogłem jej wyłapać i zmusić aby odniósł się do niej formularz. Czy mógł byś mi bardziej przybliżyć jak należało by to zrobić? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 511 Pomógł: 143 Dołączył: 13.03.2010 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
dobrze że próbujesz filtrować dane otrzymywane od użytkownika, jednak taki kod niestety nie zabezpiecza przed wszystkimi metodami ataku SQL injection. tylko Twój silnik bazodanowy jest w stanie zagwarantować bezpieczeństwo przekazywania stringów do bazy danych (liczby można można rzutować na int co je zabezpiecza) np. przez funkcje mysql_real_escape_string. A jeszcze lepiej jest używać PDO i prepared statements. Co sugerują twórcy PHP: http://php.net/manual/en/function.mysql-re...cape-string.php |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Dzękuję za szybką odpowiedź. Ogólnie wymyśliłem sobie tak że przychodzący mail z linkiem jednocześnie umożliwia ustanowienie hasła. Czyli klikając w link z maila dostajemy info o tym że weryfikacja przebiegła poprawnie oraz poniżej zostaje wyświetlony formularz (osadzony w include) z dwoma polami oraz walidacją poprawności hasła. Ma się to wyświetlać tylko raz (czyli w przypadku gdy poprawnie się zweryfikowaliśmy). Dlatego wymyśliłem żeby odnieść się do zmiennej $kod, gdyż też jest ona zapisana w bazie, w tej samej tabeli. Tylko właśnie nie mogłem jej wyłapać i zmusić aby odniósł się do niej formularz. Czy mógł byś mi bardziej przybliżyć jak należało by to zrobić? W skrócie, zmienna GET jak wiesz jest dostępna z paska adresu strony, więc każdy adres po kolei, do którego przechodzisz od momentu kliknięcia w link aktywacyjny musi tą zmienną przekazywać dalej. Przykład. Klikamy link aktywacyjny: strona.pl?kod=123.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 22.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Więc tak, chciałbym to spakować do jednego pliku, ale nadal nie chce mi to działać.
Wstawiając include`m plik weryfikacja2.php też coś nie działało. Jeśli można prosił bym o wytłumaczenie, lub choć przybliżenie jak to zrobić by działało poprawnie:
Strona odpala się bez błędów, ale nie zmienia wartości w tabeli (IMG:style_emoticons/default/sad.gif) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 22.10.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za naprowadzenie i pomoc b4rt3kk.
Punkcik poleciał. Temat do zamknięcia. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.09.2025 - 04:31 |