![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 11 Dołączył: 17.12.2008 Skąd: LU Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:http://forum.php.pl/style_emoticons/default/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! |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 1 Dołączył: 20.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:http://forum.php.pl/style_emoticons/default/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 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 361 Pomógł: 11 Dołączył: 17.12.2008 Skąd: LU Ostrzeżenie: (0%) ![]() ![]() |
dzieki za wskazowki! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
jako, ze dopiero zaczynam dopiero zabawe z MySQL jak i PHP bede pisał jeszcze w razie jakis problemow lub niejasnosci (IMG:http://forum.php.pl/style_emoticons/default/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 ? (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) czy musze zaczac pisanie od nowa?? ;|? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 80 Pomógł: 5 Dołączył: 23.09.2008 Skąd: Chełmno/Toruń Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 22:25 |