Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Newsteller - co lepsze(wydajniejsze) ?
Forum PHP.pl > Forum > Przedszkole
royharger
Witam! Pisze aktualnie prosty z newsteller z aktywacją użytkowników przez e-mail.
Postaram się opisać jak najlepiej, choć nie wiem czy ktoś zrozumie mój tok rozumowania.

Czy lepiej jest utworzyć dwie tabele w bazie danych dla użytkowników:
- nie aktywnych (proces aktywacji, bądź usunięcia)
- aktywnych

Czy jedną w której użytkownicy aktywni będą mieli niepotrzebne(puste) pole 'hash'(potrzebne przy aktywacji bądź usunięciu)?
erix
Jedna tabela + kolumna aktywny.

A hasha nie musisz mieć, wystarczy Ci prawda/fałsz z domyślną wartością fałsz.
royharger
Wiem, że to tylko głupi newsteller, którego tworze tylko w celach edukacyjnych, ale muszę to dokładniej opisać.

Gdyby w tabeli nie było pola hash. To użytkownik by potwierdzić dostałby tylko mail z linkiem.
www.stronainternetowa.pl/newsteller_potw.php?id=54(id uzytkownika)
Mądrzejsza osoba mogłaby napisać prosty skrypt który wpisywałby losowy adres do formularza, a następnie newsteller_potw.php?id=54+1 i zapętlił go.

Z polem 'hash' potwierdzenie będzie wyglądać newsteller_potw.php?hash=1bd045eca0d9317fa9075e95cb5ec050
'hash' byłby dodawany do bazy po przesłaniu formularza z adresem e-mail i w przypadku potwierdzenia porównywany z hashem przekazywanym przez adres strony.
erix
Ale realizacja hasha, to już inna sprawa. winksmiley.jpg

Pytałeś o zapis, jak ma wyglądać oznaczenie aktywnego użytkownika w bazie.

Cytat
Gdyby w tabeli nie było pola hash. To użytkownik by potwierdzić dostałby tylko mail z linkiem.

Bynajmniej, nie miałem tego na myśli. winksmiley.jpg Patrz moje poprzednie zdanie.
royharger
W takim razie wszystko już wiem. Dwie tabele jedna z 'id(AI)', 'email', 'active' druga z 'id_user', 'hash', 'data ważności hasha'.
Dzięki erix już drugi raz mi pomogłeś. Cieszy mnie to że dałeś mi trochę pomyśleć.

Jednak nie wiem wszystkiego. Czy pomysł z dwoma powyższymi tabelami jest dobry? Jeśli tak to pojawia się kolejny problem. Jak dodać do nich dane.

a) dodać do tabeli uzytkownicy 'email(xxx@xxx.pl)' i 'active(fałsz)'
pobrać 'id' użytkownika gdzie 'email' = e-mail z formularza
dodać do tabeli hash 'id usera' 'hash' 'data_wazności'

cool.gif w tabeli hash zamiast pola 'id' dać 'email'
dodać do tabeli uzytkownicy 'email(xxx@xxx.pl)' i 'active(fałsz)'
dodać do tabeli z hash 'email' 'hash' 'data_wazności'
c) inny na który wpaść nie mogę?
nexik
nie rozumiem po co na sile chcesz robic dwie tabele

tabela do newslettera ma prosta strukture

id int
email string
active bool

nie musisz tworzyc nawet hasha smile.gif
uzytkownikowi wysylasz mailem z link do strony jako jeden parametr np ?kod= md5($id . $email) i sprawdzasz czy jest podany poprawnie, i ustawiasz active na true

oczywiscie mozna uzywac sha1 albo innej funkcji jednostronnej
royharger
Nie chce robić na siłę dwóch tabel po prostu cały czas zastanawiam się jak to dobrze zrobić.

Cytat(nexik @ 16.02.2009, 22:16:07 ) *
uzytkownikowi wysylasz mailem z link do strony jako jeden parametr np ?kod= md5($id . $email) i sprawdzasz czy jest podany


Myślałem nad tym sposobem, ale miałem inny problem o którym nie napisałem. Serdeczne dzięki.
erix
Cytat
Nie chce robić na siłę dwóch tabel po prostu cały czas zastanawiam się jak to dobrze zrobić.

Nie rób niepotrzebnie drugiej tabeli. Tutaj to nie ma sensu... Dobrze zrobisz, jeśli dodasz osobną kolumnę na flagę aktywacji.

I może być to hash albo jak zaproponował ~nexik.
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.