Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]wysylanie automatycznych powiadomien na e-mail
Forum PHP.pl > Forum > Przedszkole
17misiek09
mam taki problem:
otoz chcialbym w swoim serwisie ogloszeniowym zrobic cos takiego, aby do kazdego kto wrzucil ogloszenie platne (specjalne, max) otrzymal powiadomienie na e-mail, ktory zostal podany jako kontakt o konczacej sie dacie waznosci ogloszenia - np 3 dni przed uplywem daty waznosci.

zadanie mialoby byc wykonywane codziennie np o 00:01.
hmm pewnie pasowaloby to wykonac w CRON'ie.

tylko pytanie JAK?i CZY jest taka mozliwosc?
do e-maila powiadamiajacego pasuje dodac link z mozliwoscia przedluzenia ogloszenia na kolejny okres, jesli ogloszenie platne to mozliwosc doplaty.
przedluzenie od daty zakonczenia na wybrany okres.

jakies wskazowki?bede wdzieczny!
cycofiasz
A czego konkretnie nie wiesz i czego nie znalazłeś na googlu?
17misiek09
nie wiem jak napisac funkcje sprawdzajaca, ktore ogloszenie konczy sie za 3 dni i wyslac e-mail z trescia, w ktorej bedzie link z mozliwoscia przedluzenia...

strona jest stworzona w kohanie - jesli to ma znaczenie.
wydaje sie, ze wszystko jest przygotowane, aczkolwiek nie działa :/
dlaczego??

plik cron.php
  1. <?php
  2.  
  3. class Cron_Controller extends Controller
  4. {
  5.  
  6. public function do_jobs( $hash )
  7. {
  8. if( $hash != Kohana::config('config.cron_hash') )
  9. throw new Exception("Błędny parametr hash");
  10.  
  11. $this->_send_extend_emails();
  12. }
  13.  
  14. private function _send_extend_emails()
  15. {
  16. $adverts = new Adverts_Model();
  17. $emails = new Emails_Model();
  18. $yesterday_expired = $adverts->getYesterdayExpired();
  19. //echo kohana::debug($yesterday_expired);
  20. //die();
  21. foreach( $yesterday_expired as $advert )
  22. {
  23. $data = (array) $advert;
  24. $emails->send($data['contact_email'],null, 'Wygaśnięcie ogłoszenia', View::factory('emails/expired')->bind('data',$data)->render() );
  25. }
  26. }
  27.  
  28.  
  29.  
  30. }
  31.  


dziwi mnie brak na koncu ?>

plik emails.php
  1. <?php
  2.  
  3. class Emails_Model extends Model
  4. {
  5.  
  6. public function send( $to, $from, $subject, $message )
  7. {
  8. $from = array('kontakt@mojastrona.pl', 'mojastrona.pl');
  9.  
  10.  
  11. email::send($to, $from, $subject, $message, TRUE);
  12.  
  13.  
  14. }
  15.  
  16.  
  17. }


znow na koncu brak ?>

znalazlem tez folder emails
a w nim pliki: expired.php
  1. <style>
  2. body{
  3. font-family:arial,tahoma,verdana;
  4. font-size:12px;
  5. color:#5B5B5B;
  6. }
  7. a{
  8. color:#3366D5;
  9. }
  10. a:hover{
  11. text-decoration:underline;
  12. }
  13. </style>
  14.  
  15. Ważność Twojego ogłoszenia wygasła.<br/>
  16. <br/>
  17.  
  18. <b>Tytuł:</b> <?php echo $data['title'];?><br/>
  19. <b>Imię / nazwa firmy:</b> <?php echo $data['name']; ?><br/>
  20. <b>Treść ogłoszenia:</b> <?php echo nl2br($data['text']);?><br/>
  21. <b>Cena:</b> <?php if( $data['price'] == 0 ): ?>do uzgodnienia<?php else: ?><?php echo $data['price'];?><?php endif;?><br/>
  22. <b>Data wygaśnięcia:</b> <?php echo date::format($data['expiry_date']) ?><br/>
  23. <b>Email kontaktowy:</b> <?php echo $data['contact_email'];?><br/>
  24. <b>Telefon kontaktowy:</b> <?php echo $data['contact_phone'];?><br/>
  25. <b>Numer GG:</b> <?php echo $data['contact_gg'];?><br/>
  26. <b>Miejscowość:</b> <?php echo $data['contact_city'];?><br/>
  27. <br/>
  28. <b>Data wygaśnięcia ogłoszenia:</b> <?php echo date::format($data['expiry_date']) ?><br/>
  29. <br/>
  30. Jeśli chcesz przedłużyć podane ogłoszenie kliknij tutaj<br/>
  31. <?php echo html::anchor('przedluz/'.$data['unique_code']);?>
  32. <br/>
  33. <br/>
  34.  
  35.  


added.php - wydaje sie dzialac poprawnie poniewaz potwierdzenie przychodzi
rejected.php - tez poprawnie dziala
payment_required.php - tez dziala
extended.php - zawiera tresc e-maila wysylanego po przedluzeniu - nie dziala, bo nie przychodzi email powiadamiajacy o koncu waznosci
accepted.php - dziala poprawnie

czy na podstawie tych danych jestescie w stanie pomoc mi wyjasnic ta sprawe?
niby wszystko jest a jednak czegos brakuje...
untorched
Jakieś błędy? Cokolwiek innego? Patrząc na ten kod, chociaż nie jestem obeznany z Kohaną to śmiało mogę stwierdzić, że na pierwszy rzut oka wszystko powinno być okej. Tylko dalej nie wiem czego nie potrafisz zrobić, tj. zrozumiałem czego nie potrafisz zrobić, ale jaki to ma związek z tym co tu podałeś? To jest ten twój kod, który przerobiłeś? Brak źródeł innych plików jakoś nie bardzo pomaga zrozumieć co "tu" nie działa. skoro napisałeś że plik extended.php Ci nie działa, to dlaczego nie umieściłeś tu jego źródełquestionmark.gif Nikt nie jest jasnowidzem, chyba, że to ja jestem na prawdę tak ślepy i nie jestem w stanie ci pomóc.
17misiek09
cron wyrzuca blad taki, jakbym chcial wejsc na strone ktorej odnosnik nie istnieje.
czyli error 404.

tez wydaje sie to byc dobre...
funkcja ktora sprawdza jakie ogloszenia zakonczyly sie wczoraj

  1. public function getYesterdayExpired()
  2. {
  3. $yesterday = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d')-1, date('Y')) );
  4. $this->db->where('expiry_date', $yesterday);
  5. $query = $this->db->get('advertisements');
  6. return $query->as_array();
  7.  
  8. }

to akurat jest proste.

plik extended.php
to tresc emaila jaki bylby wyslany w przypadku wygasniecia ogloszenia:

  1. <style>
  2. body{
  3. font-family:arial,tahoma,verdana;
  4. font-size:12px;
  5. color:#5B5B5B;
  6. }
  7. a{
  8. color:#3366D5;
  9. }
  10. a:hover{
  11. text-decoration:underline;
  12. }
  13. </style>
  14. Witamy,<br/><br/>
  15. Pragniemy potwierdzić przedłużenie ważności Twojego ogłoszenia.<br/>
  16. Ogłoszenie zostanie teraz zweryfikowane pod względem zgodności z regulaminem serwisu.<br/>
  17. Po pomyślnej weryfikacji Twoje ogłoszenie zostanie opublikowane.<br/>
  18. <br/>
  19. <b>Jeśli wybrano ogłoszenie płatne, dane zostaną przesłane w osobnej wiadomości.</b><br/>
  20. <br/>
  21. Oto podane przez Ciebie dane:<br/>
  22. <br/>
  23. <b>Tytuł:</b> <?php echo $data['title']; ?><br/>
  24. <b>Imię / nazwa firmy:</b> <?php echo $data['name']; ?><br/>
  25. <b>Treść ogłoszenia:</b> <?php echo nl2br($data['text']);?><br/>
  26. <b>Cena:</b> <?php if( $data['price'] == 0 ): ?>do uzgodnieni<?php else: ?><?php echo $data['price'];?><?php endif;?><br/>
  27. <b>Data wygaśnięcia:</b> <?php echo date::format($data['expiry_date']) ?><br/>
  28. <b>Email kontaktowy:</b> <?php echo $data['contact_email'];?><br/>
  29. <b>Telefon kontaktowy:</b> <?php echo $data['contact_phone'];?><br/>
  30. <b>Numer GG:</b> <?php echo $data['contact_gg'];?><br/>
  31. <b>Miejscowość:</b> <?php echo $data['contact_city'];?><br/>
  32. <br/>


to jest kod ktory juz istnieje - dostalem go razem ze strona...
hmm podalbym zrodla, tylko jakie pliki Cie interesuja?

najdziwniejsz jest to, ze zadajac zadanie cronowi - on zachowuje sie jakby chcial otworzyc strone...a tu chodzi o wykonanie skryptu..
dla pewnosci podaje zapytanie do crona:lynx -dump http://mojastrona.pl/application/controllers/cron.php

dziękuję za podjęcie dyskusji i proby pomocy.zalezy mi na rozwiazaniu zadania...

error z crona:
Kod
Return-path: <xxxxx@x49.linuxpl.com>
Envelope-to: xxxxxx@x49.linuxpl.com
Delivery-date: Wed, 25 Jan 2012 02:18:02 +0100
Received: from xxxxxx by x49.linuxpl.com with local (Exim 4.76)
    (envelope-from <xxxxxx@x49.linuxpl.com>)
    id 1RprUv-0004DK-Sq
    for xxxxxx@x49.linuxpl.com; Wed, 25 Jan 2012 02:18:01 +0100
From: root@s49.linuxpl.com (Cron Daemon)
To: xxxxxx@x49.linuxpl.com
Subject: Cron <xxxxxx@x49> lynx -dump [url="http://mojastrona.pl/application/controllers/cron.php"]http://mojastrona.pl/application/controllers/cron.php[/url]
Content-Type: text/plain; charset=ISO-8859-2
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/xxxxxx>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=xxxxxx>
Message-Id: <E1RprUv-0004DK-Sq@x49.linuxpl.com>
Date: Wed, 25 Jan 2012 02:18:01 +0100

   Bl/ad 404
     * [1]Strona gl/ówna
     * [2]Dodaj ogl/oszenie
     * [3]Regulamin
     * [4]Kontakt
     * [5]Cennik
     * [6]Pl/atnosci
     * [7]Reklama

   Bl/ad 404: Nie znaleziono podanej strony
   Przejdz na [8]strone gl/ówna lub [9]spróbuj znowu.
   © 2010 mojastrona.pl Wszystkie prawa zastrzezone. Korzystanie z
   serwisu oznacza akceptacje Regulaminu.

References

   1. http://www.mojastrona.pl/
   2. http://www.mojastrona.pl/dodaj
   3. http://www.mojastrona.pl/regulamin
   4. http://www.mojastrona.pl/kontakt
   5. http://www.mojastrona.pl/cennik
   6. http://www.mojastrona.pl/platnosci
   7. http://www.mojastrona.pl/reklama
   8. http://www.mojastrona.pl/
   9. http://www.mojastrona.pl/403.shtml


17misiej09
ma ktoś jakiś pomysł?bo ja jakoś nie bardzo..
17misiek09
jest ktoś w stanie mi pomoc?
nospor
Dla crona zapodaje się komendę linuxową odpalenia skryptu php z dysku a nie przeglądarkę ze stroną
Kod
php sciezka/do/skryptu.php
phpion
Ten link:
http://mojastrona.pl/application/controllers/cron.php
wydaje się nie być poprawny. Powinno być raczej coś na wzór:
http://mojastrona.pl/index.php/cron/do_jobs/abc123
gdzie
index.php - plik odpalający całą aplikację,
cron - nazwa kontrolera,
do_jobs - nazwa metody kontrolera,
abc123 - hash z pliku konfiguracyjnego
17misiek09
po wpisaniu takiej komendy:

lynx -dump http://mojastrona.pl/index.php/cron/cron.php/j3hash3

wyrzuca taki sam blad jak poprzednio...
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.