Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] potwierdzenie linkiem
Forum PHP.pl > Forum > Przedszkole
lnn
witam
mam taki problem albowiem nie wiem jak sie zabrac po kolei i co stworzyc zeby mi taka rzecz zadzialala,

zaprojektowalem formularz ktory po wyslaniu dodaje do bazy rekordy i w miedzyczasie ma wyslac maila do osoby ktora go wypelnia z prosba o potwierdzenie wiarygodnosci maila, nastepnie user klika na link i potwierdza ze to on wyslal formularz, co nastepnie wysyla maila z jego danymi (tymi z bazy) do adresata..

i tu pytanie, jak po wyslaniu formularza z wprowadzonymi danym podeslac na maila od razu link z odwolaniem do wpisu w bazie danych i przy okazji zatwierdzic ze rejestracja zostala potwierdzona (co za tym idzie, zlikwidowac mozliwosc ponownego potwierdzenia)

2 kwestia to sprawdzanie przy wysylaniu formularza czy taki email juz istnieje w bazie - jak wykonac takie zapytanie?

generalnie schemat dzialania jest taki:

user wypelnia formularz -> walidacja/sprawdzenie czy dany email juz istnieje w bazie -> wyslanie linka do usera z prosba potwierdzenia -> klikniecie na link potwierdzajacy -> wyslanie do nadawcy danych wprowadzonych uprzednio w formularzu & oznaczenie ze potwierdzono adres email (blokada mozliwosci ponownego wyslania potwierdzenia)

mam juz troche napisane lecz stanalem na bazie danych smile.gif chociaz tak sie zastanawiam czy od niej nie powinienem zaczac?
jak cos to moge zapodac kody zrodlowe, ale narazie o koncepcje was prosze jak mozna to zrealizowac, czym sprawdzac, jak wyciagac dany id z bazy podczas wysylania formularza...

Troche sie rozpisalem, ale za wszelkie rady dziekii wielkie z gory!
melkorm
Cytat
walidacja/sprawdzenie czy dany email juz istnieje w bazie ->


zwykłe odpytanie bazy o taki email, jeżeli zwróci wynik to już istnieje jeżeli nie to nie ;]

Cytat
wyslanie linka do usera z prosba potwierdzenia -

link w postaci twoja_sytrona.pl/auth.php?key=[tutaj np. md5'tka lub sha1 lub cokowliek innego wygenerowanego na postawie danych uzytkownika + jakiś ciąg stałych znaków or w/e u like biggrin.gif] - i możesz gdzies tam dać id user'a lub na końcu by wiedzieć kto to kliknął, pobierasz dane z bazy robisz znowy tego has'a porównujesz jezeli się zgdza to aktywacja, a jeżeli nie to error że niepoprawny link or smth.

Możesz mieć pole w baze typu tinyint - isActive 1/0 i na tej podstawie spardzać czy już kliknął link aktywacyjny itp.

Tyle. - jest 2 w nocy i nie chciało mi się psardzać pisowni i ogólnie przekazu merytorycznego , za wszelkie błędy przepraszam tongue.gif
ts23
Cytat(melkorm @ 13.04.2009, 02:09:32 ) *
zwykłe odpytanie bazy o taki email, jeżeli zwróci wynik to już istnieje jeżeli nie to nie ;]
link w postaci twoja_sytrona.pl/auth.php?key=[tutaj np. md5'tka lub sha1 lub cokowliek innego wygenerowanego na postawie danych uzytkownika + jakiś ciąg stałych znaków or w/e u like biggrin.gif] - i możesz gdzies tam dać id user'a lub na końcu by wiedzieć kto to kliknął, pobierasz dane z bazy robisz znowy tego has'a porównujesz jezeli się zgdza to aktywacja, a jeżeli nie to error że niepoprawny link or smth.

Możesz mieć pole w baze typu tinyint - isActive 1/0 i na tej podstawie spardzać czy już kliknął link aktywacyjny itp.


wystarczy jedno pole "validationCode" typu varchar, z losowym ciagiem znakow (np md5(rand() + user_id), kod znakow wysylasz jako parametr w urlu; jezeli przeslany kod istnieje w bazie to walidujesz uzytkownika i czyscisz pole, jezeli nie, to znaczy ze ktos probuje walidowac drugi raz (wtedy wystarczy wyswietlic stosowny komunikat).
pole isActive nie jest konieczne (mozesz sprawdzac po polu validationCode), ale moze byc przydatne jezeli masz duzo userow i czesto sprawdzasz czy sa aktywni
nie musisz robic 2 razy tego samego hasha, wystarczy porownac czy to co przyszlo jest w bazie danych i do ktorego rekordu pasuje
lnn
dzieki za wskazowki! smile.gif
jako, ze dopiero zaczynam dopiero zabawe z MySQL jak i PHP bede pisał jeszcze w razie jakis problemow lub niejasnosci smile.gif

wole zaczac od zapisu danych w bazach niz w plikach, gdyz to o wiele wygodniejsze rozwiazanie w takich przypadkach

poczatkowo, gdy jeszcze nie znalem szczegolowych wymagan co do dzialania skryptu napisalem cos co działało mniej wiecej tak:
1) dane przesylane przez formularz pobierał $_POST - np. formularz.php -> email.php (2 pliki)
2) wysylal na maila link z pobranymi wartosciami
3) w mailu byl wygenerowany link (zakodowany) ktory wysylal dane do formularza za pomoca $_GET co nastepnie wysylalo dopiero maila do nadawcy, jednakze klient zazyczyl sobie, zeby mozna bylo podac tylko raz dany email i tylko raz potwierdzic (to to zapewne musze w bazie zrobic zeby spradzalo czy jest 1 czy 0 ? np. pole confirm?)

czy da rade tak stworzony formularz przerobic pod baze danych ? winksmiley.jpg czy musze zaczac pisanie od nowa?? ;|?
mecenas
oczywiście, że możesz wykorzystać to, co już masz.

wystarczy równocześnie z przygotowywaniem treści emaila wrzucać całość od razu do bazy danych smile.gif

czyli - skrypt odbierający dane odpowiednio je przerabia i wstawia do bazy, generuje potrzebny losowy ciąg od razu wstawiając go gdzie trzeba i tak przygotowaną całość przesyłasz smile.gif
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.