Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Formularz kontaktowy. Problem z wysyłaniem przy zmiennej z pliku, Problem z wczytaniem wartości zmiennej z pliku
zearid
post 11.03.2012, 11:43:56
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 11.03.2012

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


Witam.
Jest skrypt służący do wysyłania wiadomości w PHP z wykorzystaniem AJAX.

W pliku konfiguracyjnym (plik zawierał definicję oraz jej wartość - ręcznie wpisywany adres e-mail, został zastąpiony owy plikiem) jest taki kod.
  1. <?php
  2. // To
  3. $file = 'email.txt';
  4. $handler = fopen($file, 'r');
  5. $adres = fread($handler, filesize( 'email.txt'));
  6. fclose($handler);
  7. define("WEBMASTER_EMAIL", "$adres");
  8. ?>




Plik wczytywany zawiera jedynie adres e-mail i nic więcej.

Plik odpowiedzialny za przesyłanie wiadomości dołącza do siebie plik konfiguracji przez include.
W miejscu użycia definiowanego WEBMASTER_EMAIL wygląda tak:
  1. $mail = mail(WEBMASTER_EMAIL, $subject, $message,
  2. "From: ".$name." <".$email.">\r\n"
  3. ."Reply-To: ".$email."\r\n"
  4. ."X-Mailer: PHP/" . phpversion());




Wartość z pliku jest odczytywana poprawnie i trafia do głównego pliku. Sprawdzane za pomocą echo.
Problem jest taki:
Jeżeli WEBMASTER_EMAIL będzie posiadać wartość wpisaną ręcznie (adres) to wiadomość zostanie wysłana poprawnie.
Jeżeli WEBMASTER_EMAIL będzie miał wartość odczytywaną z pliku wiadomość nie zostanie wysłana ale serwer nie zwróci żadnego błędu (ani błędu, ani potwierdzenia wysłania wiadomości).
Sprawdzałem wartość zmiennej wpisanej ręcznie i z pliku i obie wyświetlają się poprawnie (w pliku nie ma niepotrzebnych pustych znaków, enterów przed czy po wartości tip. czysty ciąg znaków zawierający e-mail).

Pytanie brzmi - co może być przyczyną i jak można to naprawić lub jakakolwiek wskazówka pomagająca ten problem rozwiązać.
Pozdrawiam

PS. Dodam tylko iż bardzo rozbudowanej wiedzy o PHP nie posiadam. Wykorzystuję je tylko chwilami do niektórych zadań.
Go to the top of the page
+Quote Post
pifarek
post 11.03.2012, 13:42:44
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 15
Dołączył: 3.03.2009
Skąd: Włocławek

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


Sprawdź czy w email.txt nie masz żadnych znaków specjalnych (spacji, tabulacji...)

Po za tym odczytywanie tego pliku tekstowego i podstawienie do stałej, możesz trochę skrócić. Np. tak:
  1. <?php
  2. define("WEBMASTER_EMAIL", file_get_contents('email.txt'));
  3. ?>


Możesz też włączyć raportowanie wszystkich błędów i ostrzeżeń dla php, może jednak zwraca jakiś komunikat.


--------------------
www.swiths.com
Go to the top of the page
+Quote Post
zearid
post 11.03.2012, 14:43:05
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 11.03.2012

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


W pliku jest tylko ciąg znaków zawierający email. Zero pustych itp. Kodowanie UTF-8 bez BOM
Na serwerze offline nie wypluwa błędów. Mam raportowanie włączone, lecz nie wysyła.
  1. Warning: mail() [<a href='function.mail'>function.mail</a>]: Failed to connect to mailserver at "localhost" port 25,
  2. verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in SCIEZKA PLIKU on line 57

Jedyny kompunikat dotyczy funkcji mail.
Na online nie mam jak włączyć lub wyłączyć funkcji za bardzo. 1&1 ma bardzo ogranoczony PA.

Z uproszczenim też próbowałem (od tego zaczynałem) i nic nie daje.
Nie rozumiem po prostu gdzie leży problem.
Wyświetla wartość zmiennej poprawnie (sprawdzane echem) więc i powinno poprawnie wysyłać.
Problem polega na braku jakiejkolwiek akcji na serwerze.
Notyfikacji włączyć nie mam jak, ale na domowym nie mam żadnych informacji innych niż powyższa.

PS. Jedyne co mogę zmienić w ustawieniach PHP to PHP5 na PHP dev. Nie przynosi widocznych efektów. nie pojawiają się żadne nowe komunikaty

Ten post edytował zearid 11.03.2012, 14:48:18
Go to the top of the page
+Quote Post
pifarek
post 11.03.2012, 15:03:23
Post #4





Grupa: Zarejestrowani
Postów: 91
Pomógł: 15
Dołączył: 3.03.2009
Skąd: Włocławek

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


a daj na początku skryptu


i powiedz też czy funkcja mail zwraca true czy false przy próbie wysłania


--------------------
www.swiths.com
Go to the top of the page
+Quote Post
zearid
post 11.03.2012, 15:11:40
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 11.03.2012

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


Dodałem na samym początku pliku odpowiedzialnego za przesłanie wiadomości.
Nic się nie wyświetla.
Jak sprawdzić funkcję mail (jaką ma wartość) ?

Zawartość pliku contact.php - plik inicjowany przy wysyłaniu wiadomości:

  1. <?php
  2. /*
  3. Credits: Bit Repository
  4. URL: <a href="http://www.bitrepository.com/" target="_blank">http://www.bitrepository.com/</a>
  5. */
  6.  
  7.  
  8. include 'config.php';
  9.  
  10. error_reporting (E_ALL ^ E_NOTICE);
  11.  
  12. $post = (!empty($_POST)) ? true : false;
  13.  
  14. if($post)
  15. {
  16. include 'functions.php';
  17.  
  18. $name = stripslashes($_POST['name']);
  19. $email = trim($_POST['email']);
  20. $subject = stripslashes($_POST['subject']);
  21. $message = stripslashes($_POST['message']);
  22.  
  23.  
  24. $error = '';
  25.  
  26. // Check name
  27.  
  28. if(!$name)
  29. {
  30. $error .= 'Wpisz swoje imię.<br />';
  31. }
  32.  
  33. // Check email
  34.  
  35. if(!$email)
  36. {
  37. $error .= 'Wpisz swój adres e-mail.<br />';
  38. }
  39.  
  40. if($email && !ValidateEmail($email))
  41. {
  42. $error .= 'Wpisz poprawny adres e-mail!<br />';
  43. }
  44.  
  45. // Check message (length)
  46.  
  47. if(!$message || strlen($message) < 30)
  48. {
  49. $error .= "Wpisz swoją wiadomość. Powinna zawiarać minimum 30 znaków.<br />";
  50. }
  51.  
  52. if(!$error)
  53. {
  54. $mail = mail(WEBMASTER_EMAIL, $subject, $message,
  55. "From: ".$name." <".$email.">\r\n"
  56. ."Reply-To: ".$email."\r\n"
  57. ."X-Mailer: PHP/" . phpversion());
  58.  
  59.  
  60. if($mail)
  61. {
  62. echo 'OK';
  63. }
  64.  
  65. }
  66. else
  67. {
  68. echo '<div class="notification_error">'.$error.'</div>';
  69. }
  70.  
  71. }
  72. ?>


Ten post edytował zearid 11.03.2012, 15:13:03
Go to the top of the page
+Quote Post
pifarek
post 11.03.2012, 15:19:18
Post #6





Grupa: Zarejestrowani
Postów: 91
Pomógł: 15
Dołączył: 3.03.2009
Skąd: Włocławek

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


Cytat(zearid @ 11.03.2012, 15:11:40 ) *
Jak sprawdzić funkcję mail (jaką ma wartość) ?

Sprawdzasz ją na to wychodzi w miejscu if($mail)... skrypt odpowiada OK ?

No i skasuj

  1. error_reporting (E_ALL ^ E_NOTICE);


skoro wcześniej dałeś (-1)


--------------------
www.swiths.com
Go to the top of the page
+Quote Post
zearid
post 11.03.2012, 15:22:03
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 11.03.2012

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


Skasowałem zaraz po zatwierdzeniu posta (edycji) i nie zwróciło żadnego błedu. Skrypt odpowiada.
Jeżeli podstawię zamiast zmiennej (treść pliku) ręcznie wpisaną wartość wiadomość zostaje wysłana poprawnie.

Wcześniej dla testu miałem na końcu pliku echo w celu sprawdzenia czy przekazywany jest poprawnie email z pliku. Po kliknieciu wyświetlało go nad formularzem i był poprawny (ani przed ani za nim nie było spacji itp).

Teraz bez tego nie widać reakcji choć odpowiada skrypt.
Żadnych błędów nie zwraca, po prostu nie wysyła wiadomości.
Zależało mi na zewnętrzym przechowywaniu adresu e-mail.

Ten post edytował zearid 11.03.2012, 15:25:47
Go to the top of the page
+Quote Post
pifarek
post 11.03.2012, 15:28:33
Post #8





Grupa: Zarejestrowani
Postów: 91
Pomógł: 15
Dołączył: 3.03.2009
Skąd: Włocławek

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


Wrzuciłem sobie ten skrypt na serwer 1and1 i wszystko działa. Nie wiem, o co chodzi. ;D


--------------------
www.swiths.com
Go to the top of the page
+Quote Post
zearid
post 11.03.2012, 15:30:15
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 11.03.2012

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


A przekazujesz wartość z pliku ?
Go to the top of the page
+Quote Post
pifarek
post 11.03.2012, 15:32:32
Post #10





Grupa: Zarejestrowani
Postów: 91
Pomógł: 15
Dołączył: 3.03.2009
Skąd: Włocławek

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


skróciłem to do:

mail.php:
  1. <?php
  2. include 'config.php';
  3.  
  4. $mail = mail(WEBMASTER_EMAIL, 'temat', 'wiadomosc');
  5.  
  6. ?>


config.php:
  1. <?php
  2. define("WEBMASTER_EMAIL", file_get_contents('email.txt'));
  3. ?>


email.txt:
  1. adres@email.pl


--------------------
www.swiths.com
Go to the top of the page
+Quote Post
zearid
post 11.03.2012, 15:40:56
Post #11





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 11.03.2012

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


Ja z ciekawości wrzuciłem katalog kontakt na samą góre struktury i usunąłem niepotrzebne include.
Jedyny efekt działanie jest komunikat o sukcesie.



Nic poza tym. Co ciekawsze nawet po wpisaniu e-maila ręcznie przestało wysyłać.
Teraz już totalnie nie kumam.

Ten post edytował zearid 11.03.2012, 15:43:41
Go to the top of the page
+Quote Post
pifarek
post 11.03.2012, 15:43:18
Post #12





Grupa: Zarejestrowani
Postów: 91
Pomógł: 15
Dołączył: 3.03.2009
Skąd: Włocławek

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


może wiadomości wylądowały w spamie czy coś? tongue.gif


--------------------
www.swiths.com
Go to the top of the page
+Quote Post
zearid
post 11.03.2012, 16:40:17
Post #13





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 11.03.2012

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


Widać co wyżej i nic poza tym ;]
Na bank spam nie ;] oznaczone mam jako nie SPAM haha.gif

W oryginalnym położeniu działa poprawnie tylko ze zdefiniowaną ręcznie wartością WEBMASTER_EMAIL.
Jeżeli jest w "" wysyła bez komunikatu.
Jeżeli bez "" to:
  1. Notice: Use of undefined constant WEBMASTER_EMAIL - assumed 'WEBMASTER_EMAIL' in SCIEZKA PLIKU on line 2
  2. OK


Generalnie problem stanowią zmienne.
Jeżeli zamiast uzytej pierwotnie wartości dam zmienną i określę jej wartość ręcznie (email) to działa.
Jeżeli wezmę tą samą zmienną i jako jej wartość podam otwierany plik i jego zawartość to nie działa.

Ten post edytował zearid 11.03.2012, 15:49:13
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: 24.07.2025 - 20:37