Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: potwierdzenie rejestracji
Forum PHP.pl > Forum > PHP
remstar
Problemy:

1. Chciałbym, aby po rejestracji, użytkownik otrzymał e-mail z potwierdzeniem. W treści listu chciałbym umieścić link do strony, na której zostanie aktywowane jego konto. Jakie informacje powinny być poprzez ten link przekazywane?

2. Jak zorganizować usuwanie nieaktywowanego konta? Czy da się to zrobić automatycznie, czy będzie to robił administrator?

Z góry dzięki za rady i sugestie.
NuLL
Skrypty forum -> php
Puciek
No to popatrz.
Do bazy gdzie dodales wpis uzytkownika, dodajesz jeszcze jedno pole o nazwie np. kod. Przy rejestracji wstawiasz tam cokolwiek, np. bierzesz losowe slowo i haszujesz je w md5 i zapisujesz je do bazy. Potem piszesz skrypt ktory przyjmuje argument z get-a np w forme aktywuj.php?kod=fgdf5gbfdg5 i skrypt sprawdza poprawnosci kodu i uaktywnia dane konto.

Co do drugiego problemu to poprstu zrob skrypt ktory raz dziennie sprawdzi czy wszyscy bez aktywowanej rejestracji maja np konto niestarsze niz 7 dni, jezeli tak to usuwasz.
LBO
a czy nieaktywne konta bedzie usuwal admin.. hmmm.. to zalezy.. jezeli na serwie masz CRONA... podpinasz odpowiedni skrypt pod niego.. jezeli CRON'a jednak nie ma.. odpowiedni skrypt uruchamia Admin...
jest 3 mozliwosc: w kodzie strony..dodajesz kilka if'ow, czyli gdzies w pliku (albo w bazie danych) wpisujesz date i godzine..sprawdzasz te date przy kazdym uruchomieniu skryptu..jezeli minelo 24h uruchamiasz "kasowacz nieaktywnych kont" i wpisujesz w pliku (w DB) aktualne date i godz
dtb
mozna zrobic zeby zamiast aktywacji do bazy dano jakies tam losowe haslo, np:
substr (md5 (microtime()),0 , 8);
a w mailu wyslac te haslo.
user se wchodzi do ustawien i je zmienia na takie jakie chce.
tiraeth
1. Dodajesz trzy pola do tabeli
Kod
user_active int(1) NOT NULL DEFAULT 0,
user_activation_code char(255) NOT NULL DEFAULT '',
user_registration_time int(9) NOT NULL DEFAULT UNIT_TIMESTAMP()

Po rejestracji użytkownika zapisujesz czas zarejestrowania (znacznik unixowy). Pole 'user_active' dajesz na 0. Generujesz kod aktywacyjny:
  1. <?php
  2. $activation_code = md5(uniqid(rand(), true));
  3. ?>

Tworzysz plik activate.php gdzie przez $_GET['code'] przekazesz kod aktywacji (wysyłasz mailem link http://strona.pl/activate.php?code=TEN_KOD) po czym sprawdzasz czy 'user_active = 0' a następnie jeżeli tak to aktualizujesz odpowiednie pola (zmieniasz user_activation_code na '')

2. CRON lub odpowiedni kod w np. index.php, jeżeli chcesz aby automat to za Ciebie robił... jeżeli chcesz to robić ręcznie to możesz do panelu administracyjnego nową stroną "Aktywacja użytkowników" zrobić a w niej wszystko co potrzebne smile.gif
kszychu
A po co zawalać sobie bazę przez nieużywane pole activation_code?
Nie lepiej zrobić md5 z loginu podanego podczas rejestracji, albo jeszcze lepiej z kilku pól naraz, np. sklejone razem login+haslo+data_aktywacji.
czachor
2. Jeśli nie ma CRON'a to chyba lepiej jakiegoś triggera albo coś podobnego (oczywiście jeśli masz taką możliwość) wywoływanego przy np. SELECT'cie? Nie bedzie potrzeby zaprzęgać do tego jeszcze php...
ave
Cytat(kszychu @ 2006-01-12 19:02:22)
A po co zawalać sobie bazę przez nieużywane pole activation_code?
Nie lepiej zrobić md5 z loginu podanego podczas rejestracji, albo jeszcze lepiej z kilku pól naraz, np. sklejone razem login+haslo+data_aktywacji.

a co potem jak user kliknie
w aktywuj?k=md5(login+haslo+data_aktywacji)
jechac do calej bazie wybierac md5(login+haslo+data_aktywacji) i ?
zaznaczyc pole aktywowany ?

ja osobiscie wole osobna tabele na userow nieaktywnych i jak sie aktywuje przerzucam do userow..
Vogel
Cytat(ave @ 2006-01-13 02:29:34)
a co potem jak user kliknie
w aktywuj?k=md5(login+haslo+data_aktywacji)
jechac do calej bazie wybierac md5(login+haslo+data_aktywacji) i ?
zaznaczyc pole aktywowany ?

aktywowac usera przez podanie loginu i md5. a potem nie zaznaczac pole aktywowany tylko wypelnic LastLogin i wuala... dwa zupelnie zbedne (czy_aktywny i kod_aktywacji) pola odpadly z bazy
ToPeR
Ja doklejam do linku id usera oraz hash loginu+id+'jakis mi znany string'
np:
  1. <?php
  2.  
  3. $id // ID usera po rejestracji
  4. $login // login na jaki user się zarejestrował
  5. $link = 'register.php?a=active&userid='.$id.'&key='.md5($id.$login.'jakis tajny string');
  6.  
  7. ?>

i potem jak odbieram
to sprawdzam, czy podane ID w bazie, wyciągam login i porównuje:
  1. <?php
  2.  
  3. $id // ID usera po rejestracji
  4. $login // login na jaki user się zarejestrował
  5. if ($_GET['key']==md5($id.$login.'jakis tajny string')) { 
  6. // ustawiam użytkwnika na aktywny
  7. }
  8. else { // podejrzewane XSS tongue.gif }
  9.  
  10. ?>
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.