Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Blokada adresu email *@mail.ru
Forum PHP.pl > Forum > Przedszkole
Malinaa
Witam, szukam sposobu na blokowanie adresu email użytkowników, którzy Spamują strone, wysyłają tekst i foty porn.

Mam coś takiego:
- rekordy do zablokowania
$emaile = 'email[at]mail.ru';
$emaile = '*[at]mail.ru';
$emaile = '*.ru';

Blokowanie całego adresu już mam.
Potrzeba jest jednak, aby skrypt blokował i pozostałe adresy z gwiazdką.

Co jest potrzebne jakiego kodu, funkcji użyć, aby blokować (odczytać, rozpoznać) jeżeli jest z przodu gwiazdka.
Gwiazdka ma oznaczać: blokuj wszystkie adresy, które po znaku gwiazdki posiadają dany ciąg znaków.

Jak to zrobić?
phpion
Cytat(Malinaa @ 14.01.2009, 19:03:15 ) *
Co jest potrzebne jakiego kodu, funkcji użyć, aby blokować (odczytać, rozpoznać) jeżeli jest z przodu gwiazdka.
Gwiazdka ma oznaczać: blokuj wszystkie adresy, które po znaku gwiazdki posiadają dany ciąg znaków.

Wyrażenia regularne czyli wszelkiej maści preg_match.
erix
Cytat
Gwiazdka ma oznaczać: blokuj wszystkie adresy, które po znaku gwiazdki posiadają dany ciąg znaków.

Cytat
Wyrażenia regularne czyli wszelkiej maści preg_match.

Skoro poszukuje tylko jednego, skrajnego wzorca, to wystarczyłoby strpos" title="Zobacz w manualu PHP" target="_manual/strrpos" title="Zobacz w manualu PHP" target="_manual. winksmiley.jpg
Malinaa
Napisałem coś takiego, prosiłbym o ewentualne poprawki, nie mam przekonania, że jest OK?

  1. <?php
  2. $blokada_email = 'email[at]mail.ru,*@mail.ru,*.ru';
  3. $email_form = 'aaaemai[at]aaamail.ru';
  4.  
  5. $tablica_email = explode(",", $blokada_email);
  6. $ile_email = count($tablica_email);
  7.  
  8. for($i=0; $i<$ile_email; $i++) {
  9.  $email_blokuj = str_replace('*', '', $tablica_email[$i]);
  10.  $sprawdz = preg_match("/$email_blokuj/i", $email_form);
  11. }
  12.  
  13. if ($sprawdz <> '') {
  14.  $wynik_match = "Adres email jest blokowany!";
  15. }
  16. else {
  17.  $wynik_match = "Adres email nie jest blokowany!";
  18. }
  19. ?>


Thank's
erix
Cytat
nie mam przekonania, że jest OK?

Nie wywalaj gwiazdki. W tej chwili jej wklepywanie, to tylko zbędne męczenie parsera.

Poza tym, Twoje sprawdzanie zweryfikuje tylko ostatni e-mail z listy (co krok nadpisujesz $sprawdz).
Malinaa
Ten skrypt będę chciał użyć przy rejestracji jest więc istotne, aby działał dobrze.
Proszę o poprawienie jeśli coś jest nie tak.

  1. <?php
  2. $blokada_email = 'email[at]mail.ru,@mail.ru,.ru,.us,.com,@com.ru';
  3. $email_form = 'abcmail[at]email.ru';
  4.  
  5. $tablica_email = explode(",", $blokada_email);
  6. $ile_email = count($tablica_email);
  7.  
  8. for($i=0; $i<$ile_email; $i++) {
  9.  $email_blokuj = $tablica_email[$i];
  10.  if (preg_match("/$email_blokuj/i", $email_form)) $sprawdz = 1;
  11.  else $sprawdz = '';
  12.  $wynik_sprawdz = $wynik_sprawdz . $sprawdz; // $wynik_sprawdz - Można inaczej?
  13. }
  14.  
  15. if ($wynik_sprawdz <> '') {
  16.  $wynik_match = "Adres email jest blokowany!";
  17. }
  18. else {
  19.  $wynik_match = "Adres email nie jest blokowany!";
  20. }
  21. ?>
erix
Widzę, że dalej nie zrozumiałeś... (edit: masz mylący nick, "aś", czy "eś"? tongue.gif)
  1. <?php
  2. for($i=0; $i<$ile_email; $i++) {
  3. $email_blokuj = $tablica_email[$i];
  4. if (preg_match("/$email_blokuj/i", $email_form)) $sprawdz = 1;
  5. else $sprawdz = '';
  6. $wynik_sprawdz = $wynik_sprawdz . $sprawdz; // $wynik_sprawdz - Można inaczej?
  7. }
  8. ?>


Ja bym to widział tak:
  1. <?php
  2. try{
  3.    for($i=0; $i<$ile_email; $i++) {
  4.        $email_blokuj = $tablica_email[$i];
  5.        if(stripos($email_form, $email_blokuj)!==false){
  6.            throw new Exception();
  7.        }
  8.    }
  9.    
  10.    echo 'mail nie jest zablokowany';
  11. }catch(Exception $ex){
  12.    echo 'mail jest zablokowany';
  13. }
  14. ?>
Malinaa
Tak, jeśli zamienimy

echo 'mail nie jest zablokowany'; na echo 'mail jest zablokowany'; i odwrotnie jest OK.

Kłopotliwe i nie zręcznie mówić, ale nie wiem co to są: try, cacht, throw, Exception. I jak to działa?

... eś, a nie widać!
erix
Cytat
echo 'mail nie jest zablokowany'; na echo 'mail jest zablokowany'; i odwrotnie jest OK.

Ale Twój kod sprawdza TYLKO ostatni wpis z tablicy...

Cytat
Kłopotliwe i nie zręcznie mówić, ale nie wiem co to są: try, cacht, throw, Exception. I jak to działa?

A do manuala zaglądał? snitch.gif W skrócie, jest to blok instrukcji (try{ ... }), którego wykonywanie można przerwać wypluwając wyjątek. To jest tylko bardzo pierwotne użycie, bo można jeszcze przekazywać komunikaty, własne parametry, z których można skorzystać w catch, ale tu już odsyłam do manuala. winksmiley.jpg

Cytat
... eś, a nie widać!

Rzeczownik z końcówką -a nie jest raczej rodzaju męskiego (bez urazy, mam na myśli tylko językowo).
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.