Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zabezpieczenie przed wielokrotnym wyslaniem maila
Forum PHP.pl > Forum > PHP
Prezes
Sprawa jest nastepujaca

Mam skrypt rozsylajacy maile do ludzi z bazy.

Sama sprawa wysylania jest dos prosta i wiadoma:
  1. <?php
  2.  
  3. while($myrow = mysql_fetch_array($wynik))
  4. {
  5. $mail = $myrow['mail'];
  6. mail($mail;$tresc;$naglowek);
  7. }
  8.  
  9. ?>

No i gra gitara!
Ale chce zrobic zabezpieczenie zeby przez przypadaek nie wyslac kilkuset maili do jednej osoby (bo tak juz mialem)

Jak wiadomo powyzszy skrypt pobiera z bazy maila i wysyla na niego tresc i robi tak do mmomentu az przejdzie przez wszystkie maile w bazie.

Moja pomyłka wygladała tak, ze w funkcji mail bylo tak:
  1. <?php
  2. mail(&#092;"mojadres@email\",$tresc,$naglowek);
  3. ?>

Skonczylo sie to tym ze wyslalem na swoj adres mase maili!

Pytanie jak zrobic zabezpieczenie zeby czasem sie akcja nie powtorzyla?
Bo w funkji mail() jesli w miejscu adres poda sie zmienna to problemu nie ma chyba ze jest kilkanascie razy ten sam mail ale to raczej niemozliwe.Jesli jednak wpisze adres@email to przez to ze bedzie petla to mi wysle na jedno konto tyle razy ile jest rekordow w bazie.

Jakies pomysly?

Pozdrawiam
hwao
Jak wysle to niech sobie odznacza w bazie z 0 (nie wysylany) na 1 (wyslanny) co prawda obciazy to baze (w while query) ale mozesz to zrobic na zasadzie tablicy (do tablicy wrzuca maile jak sie juz 1 zanjduje to nie wysyla - zostal juz na niego wyslany )
Prezes
No tak ale co zrobic jak bedzie tam tak:
  1. <?php
  2. mail(&#092;"jakis@adres.email\",$tresc,$naglowek);
  3. ?>

a nie tak
  1. <?php
  2. mail($mail;$tresc,$naglowek);
  3. ?>


chodzi o to zeby zapobiec uzywaniu jednego maila w petli powiedzmy ze tak to wyglada

  1. <?php
  2. while(jakas instrukcja)
  3. {
  4. mail('jakis@adres.email',$tresc,$naglowek);
  5. }
  6.  
  7. ?>

wydaje mi sie ze jest to niemozliwe no ale...

Zeby bylo tak:
Program sobie leci....
Patrzy... O! Trzeba wyslac maila! to go wysle... No i wysyla. Wraca patrzy... o znow trza maila wysala! Ale zaraz zaraz juz gdzies to widzialem 'jakis@adres.email'.. Nie juz nie wysle tam bo zrobilem to sek temu.

Pic polega na tym zeby nie bylo tam zmiennej. Tzn skrypt jest tak napisany ze zmienna jest ale jak jakis debil(czyt. ja tak zrobilem) przez przypadek pomyli sie i zmienna przerobi na konkretny jeden adres zeby wyslac tylko na jednego maila.Wynik bedzie taki jak juz mowilem na tego maila pojdzie tyle maili ile razy petla sie wykona!
Ace
hm mozesz to zrobic w taki sposob ze... dodajesz wszystkie mejle do tabeli w postaci
$tablica[$mail]... wiec np
$tablica['example@example.com']
$tablica['innymail@example.org.pl']
etc...
samo w sobie jest to zabezpieczeniem bo jak w bazie masz kilka razy tego samego mejla, to w tablicy wartosc sie nadpisze i defakto bedzie zapisana jeden raz.
Dale...
lecisz petla... i po wyslaniu mejla robisz unset( $tablica['innymail@example.org.pl'] ) ; i juz z tablicy jest usuniety...

moze tak ?
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.