Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]funkcja mail() i automatycznie rozsyłające się wiadomości?
Forum PHP.pl > Forum > Przedszkole
gosia21
Witam,

Mam problem, mianowicie na stronie posiadam proste logowanie na haslo wyciagane z bazy danych szyfrowane md5 z definiowana sesja - jeśli nie podasz hasła to system przenosi na strone logowania. Po zalogowaniu jest system wysyłki maili, który po kliknięciu "Wyślij" z odpowiedniego rekordu tabeli wyświetlającej się na stronie wysyła zawartość jednej z komórek na maila który jest na następnej komorce tego rekordu. Wszystko wyciagane z bazy MySQL a wysyłane za pomocą funkcji mail().

Problem polega na tym, ze nikt oprocz mnie hasla nie zna ale co jakiś czas o najróżniejszych godzinach część maili zostaje wysłana na moje testowe adresy. Pytanie czy raczej robia to boty ktore tam wchodza (mimo jakiejs tam ochrony za pomoca hasla) czy tez jest to wina skryptu. Jestem raczej początkująca więc proszę o zrozumiala na poczatkujacych pomoc. Będę bardzo wdzieczna.

Wykrywacz
Generalnie samo się nic nie robi. Pokarz jak to wygląda to może będziemy wstanie ci pomóc.
gosia21
  1. <?php
  2. $id = $_GET["id"];
  3. mysql_connect("serwer", "nazwa bazy", "haslo");
  4.  
  5.  
  6. mysql_select_db("nazwa_bazy");
  7.  
  8.  
  9. if(!isset($cmd))
  10. {
  11.  
  12. $result = mysql_query("select * from zapytania WHERE id=$id");
  13.  
  14.  
  15. while($r=mysql_fetch_array($result))
  16. {
  17.  
  18. $zapytanie=$r["zapytanie"];
  19. $email=$r["email"];
  20. $opinia=$r["opinia"];
  21. $autor=$r["autor"];
  22. $id=$r["id"];
  23. }
  24. }
  25. $message = "<html><body>Twoje zapytanie: <p />$zapytanie<p /> Opinia:<p /> <b>$opinia</b><p />Pozdrawiam<br />$autor<a href='mailto:adres@email.pl'>adres@email.pl</a></body></html>";
  26.  
  27. $header = "MIME-Version: 1.0\r\n".
  28. "Content-type: text/html; charset=iso-8859-2\r\n".
  29. "From: adres@email.pl <adres@email.pl>" . "\r\n";
  30. $header .= "Disposition-Notification-To: <adres@email.pl>";
  31. @mail("$email","Opinia ID: $id ","$message","$header")
  32. or die('Nie udało się wysłać opinii');
  33. // wyświetlenie komunikatu w przypadku powodzenia
  34. echo "Opinia została wysłana.";
  35.  
  36. ?>
  37.  


Po kliknięciu "Wyśli" włącza się strona z tym skryptem. Tylko proszę na mnie nie krzyczeć bo pewnie trochę mu do miana poprawnego brakuje:P
nospor
no i gdzie w tym skrypcie masz to zabezpieczenie? Nigdzie nie widze bys sprawdzala tu jakies haslo

gosia21
na gorze strony mam

  1. <?
  2.  
  3. if(!session_is_registered("uzytkownik")){
  4. header("location:panel_wejscie.php");
  5. }
  6. ?>


nie udalo sie nikomu znalesc odpowiedzi ?:/
1010
A czy w pliku, który wysyła maile też to masz?
gosia21
tak w każdym pliku jest sprawdzanie sesji. A ten który wysyła maila to ten który wyżej napisałam czyli wszystko niby jest:(
redelek
hej,

Moim zdaniem, funkcja mail jest poza wszelkimi if-ami, więc jeśli dotknisz ten plik po zalogowaniu od razu zostaje wysłany e-mail, nawet jeśli dane są puste.
Cofnij o jedną klamerkę wysyłanie o tak
  1. if(!isset($cmd))
  2. {
  3.  
  4. $result = mysql_query("select * from zapytania WHERE id=$id");
  5.  
  6.  
  7. while($r=mysql_fetch_array($result))
  8. {
  9.  
  10. $zapytanie=$r["zapytanie"];
  11. $email=$r["email"];
  12. $opinia=$r["opinia"];
  13. $autor=$r["autor"];
  14. $id=$r["id"];
  15. }
  16. $message = "<html><body>Twoje zapytanie: <p />$zapytanie<p /> Opinia:<p /> <b>$opinia</b><p />Pozdrawiam<br />$autor<a href='mailto:adres@email.pl'>adres@email.pl</a></body></html>";
  17.  
  18. $header = "MIME-Version: 1.0\r\n".
  19. "Content-type: text/html; charset=iso-8859-2\r\n".
  20. "From: adres@email.pl <adres@email.pl>" . "\r\n";
  21. $header .= "Disposition-Notification-To: <adres@email.pl>";
  22. @mail("$email","Opinia ID: $id ","$message","$header")
  23. or die('Nie udało się wysłać opinii');
  24. // wyświetlenie komunikatu w przypadku powodzenia
  25. echo "Opinia została wysłana.";
  26. }


jeśli warunek $cmd spełni się wiadomość dopiero zostanie wysłana. Osobiście dodał bym sprawdzanie czy mysql coś zwrócił i jeśli tak to dopiero odczytał dane i wysłał. Na razie cofnij kod o jedną klamerkę i zobacz czy będzie oki.

gosia21
Dziękuję bardzo! Zmianiłam co trzeba i czekam na efekty:)

Niestety, powyższe rozwiązanie nie wyeliminowało problemu:/. Nadal przychodzą niechciane wiadomości i nic nie potrafię z tym zrobić. Może powinnam zabezpieczyć ten skrypt w jakiś inny sposób? Może samo definiowanie sesji to za mało? Baaardzo prosze o pomoc.

pzd
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.