Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> zabezpieczenie przed wielokrotnym wyslaniem maila
Prezes
post 1.12.2004, 16:40:55
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 8.12.2003
Skąd: Warszawa

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


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


--------------------
Windsurfing -> way of my life !!!
Go to the top of the page
+Quote Post
hwao
post 1.12.2004, 16:48:42
Post #2


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




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 )
Go to the top of the page
+Quote Post
Prezes
post 1.12.2004, 17:28:10
Post #3





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 8.12.2003
Skąd: Warszawa

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


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!


--------------------
Windsurfing -> way of my life !!!
Go to the top of the page
+Quote Post
Ace
post 1.12.2004, 17:44:52
Post #4





Grupa: Zarejestrowani
Postów: 216
Pomógł: 0
Dołączył: 9.08.2003
Skąd: Warszawa

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


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 ?
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: 12.06.2025 - 15:17