Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz subskrypcji z potwierdzeniem
Forum PHP.pl > Forum > PHP
altar
Witam,

Chodzi o formularz zamówienia newslettera z potwierdzeniem subskrypcji w postaci wiadomości email z linkiem do kliknięcia(lub inne rozwiązanie).
Czy mógłby ktoś podpowiedzieć jak się za to zabrać?
Mam program do wysyłania newslettera, program dodaje dane, czyli imie, adres email itp. itd. do swojej bazy na podstawie wiadomosci wysłanej na konto pocztowe które przeznaczyłem do wysyłania newslettera. Czyli jeśli na to konto przyjdzie wiadomość o danym temacie to program pobiera sobie z treści potrzebne informacje i zapisuje je w bazie danych.

Ale jak zrobić żeby gdy wypełnimy formularz, skrypt wysłał prośbę o potwierdzenie, a potem gdy potwierdzimy, czyli klikniemy w link zeby ponownie wysłał email z tymi danymi z formularza.
thek
A po co? blinksmiley.gif Chcesz zasypać usera prośbami o mailowe potwierdzenie chęci otrzymania na maila newslettera? Źle podchodzisz do tego smile.gif Newsletter się wysyła z częstotliwością określoną (raz na dzień lub kilka) i sprawdza czy aby nie ma nowych informacji z interesującego usera zakresu. Jeśli tak mail idzie. Jeśli nie to olewasz w tym przebiegu usera. Jedynie w samym newsletterze dajesz mu możliwość rezygnacji z otrzymywania go.
Ja swój rozwiązałem tak, że tworzę plik XML z nowościami tego dnia w konkretnych kategoriach i co 24h puszcza się cronem sprawdzanie userów zapisanych do newslettera. Jeśli user ma datę ostatniego mailingu inną od aktualnej i jest zapisany do jakiejś kategorii to sprawdzam czy są w niej nowości. Jesli tak formatuję maila i wysyłam. Jeśli nie to sprawdzam następnego usera. Każdemu sprawdzonemu (nieważne czy posłałem mail czy nie! )aktualizuję datę na aktualną. Dzięki temu nie multiplikuje wywołań do bazy, bo tabelę z nowościami mam zawsze "pod ręką", nawet jeśli coś przerwie mi skrypt. Poza tym jeśli się sypnie skrypt to jego wznowienie nie obejmie już userów do których poszedł mailing bo sprawdzę czy data (dzień i miesiąc) ostatniego mailingu i aktualna nie są takie same winksmiley.jpg I tylko takich biorę pakietami do wysyłki.
altar
Ale tutaj chodzi tylko o jednorazowe potwierdzenie subskrypcji, na poczatku gdy internauta sie zapisuje na newsletter, a potem wysylanie newsletterow to juz inna sprawa.
Crozin
Po wysłaniu formularza zapisania się nie zapisujesz maila bezpośrednio do tabeli newslettera tylko do jakieś pomocniczej tabeli "na wersyfikację". Zapisujesz tam: adres email, losowo wygenerowany token.
Następnie na maila wysyłasz link postaci: aktywaca/adres@email/ewentualnie/jakies/id/wczesniej_wygenerowany_token_(ten_z_bazy)

Po kliknięci na ten link wykonuje się skrypt, który dodaje do tabeli newslettera kolejnego maila.
thek
Trzeba było od razu mówić/pisać że tu chodzi o "link aktywacyjny" smile.gif I pod taką frazą przeszukaj, ewentualnie zwroty bliskoznaczne. Problem poruszany na naprawdę wielu forach. Można to zrobić tak jak kolega poniżej opisał lub ustawić przy danym mailu flagę aktywności. Tak czy inaczej bez dodatkowej tabeli z tokenem się nie obejdzie.
altar
juz wymyslilem ze zrobie to na zasadzie tymczasowego pliku ktory jest tworzony podczas wysylania formularza i kasowany po kliknieciu w link aktywacyjny, oczywiscie po dodaniu danych internauty do bazy.

dzieki za pomoc i pozdarawiam.
Larges
Można też zrobić w bazie na zasadzie manipulowania wartością kolumny np. "aktywny".
Jesli ktoś kliknie link aktywacyjny w mailu, kolumna aktywny z jego wierszem dostaje wartość np. "tak". Jeśli nie, dostaje wartość "nie".
Później śmiało możesz za pomocą Crona ustawić sobie powiadomienia powtórne. Np. Jak ktoś nie aktywuje przez tydzień, dostanie powtórnego maila po 7 dniach.
Inna zaś funkcja może co jakiś czas usuwać nieaktywne maile bez weryfikacji po powtórnym powiadomieniu (np. po kolejnych 7 dniach).
winksmiley.jpg

Sposobów jest cała masa (;

Pozdrawiam.
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.