Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Blokowanie adresów email z danego zakresu - jak to rozegrać?, wildcard sql
cycofiasz
post
Post #1





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Witam, muszę dodać w skrypcie sklepu który wcześniej napisałem taką opcję: administrator może zablokować odbieranie płatności od użytkowników których maile pasują do wzorca który on wprowadzi. Przykładowo: *gmail.com , *gov.pl , piter* itd... Oczywiście takich wzorców może być duużo, będą one zapisane w bazie sql. Jak najwydajniej sprawdzić czy dany email pasuje do wzorca zapisanego w bazie?

Przychodzą mi do głowy tylko małowydajne rozwiązania polegające na pobraniu wszystkich wzorców do php i zamienieniu ich na wyrażenia regularne z którymi następnie konfrontuję dany email użytkownika. Jak można to zrealizować przy użyciu tylko zapytania SQL? Czy konieczne będzie wykorzystanie regexp w mysql? Jeśli tak to czy może ktoś podesłać przykładowe zapytanie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
morbic
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 29
Dołączył: 13.12.2010
Skąd: Warszawa

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


Można o wiele prościej - operator NOT LIKE:
  1. SELECT * FROM tabela_zakazanych_maili WHERE 'testowy@email.pl' NOT LIKE email


Powyższe zapytanie sprawdzi, czy testowy@email.pl nie pasuje do żadnej maski w tabeli.

A w tabeli tabela_zakazanych_maili w kolumnie email maski zabronionych adresów:
%gmail.com
%gov.pl
piter%

Jedyne o czym trzeba pamiętać, to że MySQL używa % zamiast * - ale to można zamienić w locie w PHP podczas dodawania. W każdym razie w bazie musi być z %.

Ten post edytował morbic 8.07.2011, 00:33:16
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 07:31