Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL]Newsteller - co lepsze(wydajniejsze) ?
royharger
post 16.02.2009, 20:19:29
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.02.2009

Ostrzeżenie: (0%)
-----


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)?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
erix
post 16.02.2009, 20:29:29
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jedna tabela + kolumna aktywny.

A hasha nie musisz mieć, wystarczy Ci prawda/fałsz z domyślną wartością fałsz.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
royharger
post 16.02.2009, 20:52:09
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
erix
post 16.02.2009, 20:54:29
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
royharger
post 16.02.2009, 21:33:05
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.02.2009

Ostrzeżenie: (0%)
-----


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ę?

Ten post edytował royharger 16.02.2009, 22:09:02
Go to the top of the page
+Quote Post
nexik
post 16.02.2009, 22:16:07
Post #6





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 23.12.2008
Skąd: Radzionków

Ostrzeżenie: (0%)
-----


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

Ten post edytował nexik 16.02.2009, 22:16:56


--------------------
Tomasz Ślązok Nexik
http://www.nexik.net/
Go to the top of the page
+Quote Post
royharger
post 16.02.2009, 22:31:06
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 13.02.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
erix
post 16.02.2009, 23:54:49
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:30