Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP]nie wysyła maila
Forum PHP.pl > Forum > Przedszkole
Johnas
Witam mam taki skrypcik w folderze "js/forms.js"
[JAVASCRIPT] pobierz, plaintext
  1. //forms
  2. ;(function($){
  3. $.fn.forms=function(o){
  4. return this.each(function(){
  5. var th=$(this)
  6. ,_=th.data('forms')||{
  7. errorCl:'error',
  8. emptyCl:'empty',
  9. invalidCl:'invalid',
  10. notRequiredCl:'notRequired',
  11. successCl:'success',
  12. successShow:'4000',
  13. mailHandlerURL:'bin/sendmail.php',
  14. ownerEmail:'moj email',
  15. stripHTML:true,
  16. smtpMailServer:'localhost',
  17. targets:'input,textarea',
  18. controls:'a[data-type=reset],a[data-type=submit]',
  19. validate:true,
  20. rx:{
  21. ".name":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},
  22. ".state":{rx:/^[a-zA-Z'][a-zA-Z-' ]+[a-zA-Z']?$/,target:'input'},
  23. ".email":{rx:/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,target:'input'},
  24. ".phone":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
  25. ".fax":{rx:/^\+?(\d[\d\-\+\(\) ]{5,}\d$)/,target:'input'},
  26. ".message":{rx:/.{20}/,target:'textarea'}
  27. },
  28. preFu:function(){
  29. _.labels.each(function(){
  30. var label=$(this),
  31. inp=$(_.targets,this),
  32. defVal=inp.val(),
  33. trueVal=(function(){
  34. var tmp=inp.is('input')?(tmp=label.html().match(/value=['"](.+?)['"].+/),!!tmp&&!!tmp[1]&&tmp[1]):inp.html()
  35. return defVal==''?defVal:tmp
  36. })()
  37. trueVal!=defVal
  38. &&inp.val(defVal=trueVal||defVal)
  39. label.data({defVal:defVal})
  40. inp
  41. .bind('focus',function(){
  42. inp.val()==defVal
  43. &&(inp.val(''),_.hideEmptyFu(label),label.removeClass(_.invalidCl))
  44. })
  45. .bind('blur',function(){
  46. _.validateFu(label)
  47. if(_.isEmpty(label))
  48. inp.val(defVal)
  49. ,_.hideErrorFu(label.removeClass(_.invalidCl))
  50. })
  51. .bind('keyup',function(){
  52. label.hasClass(_.invalidCl)
  53. &&_.validateFu(label)
  54. })
  55. label.find('.'+_.errorCl+',.'+_.emptyCl).css({display:'block'}).hide()
  56. })
  57. _.success=$('.'+_.successCl,_.form).hide()
  58. },
  59. isRequired:function(el){
  60. return !el.hasClass(_.notRequiredCl)
  61. },
  62. isValid:function(el){
  63. var ret=true
  64. $.each(_.rx,function(k,d){
  65. if(el.is(k))
  66. ret=d.rx.test(el.find(d.target).val())
  67. })
  68. return ret
  69. },
  70. isEmpty:function(el){
  71. var tmp
  72. return (tmp=el.find(_.targets).val())==''||tmp==el.data('defVal')
  73. },
  74. validateFu:function(el){
  75. el.each(function(){
  76. var th=$(this)
  77. ,req=_.isRequired(th)
  78. ,empty=_.isEmpty(th)
  79. ,valid=_.isValid(th)
  80.  
  81. if(empty&&req)
  82. _.showEmptyFu(th.addClass(_.invalidCl))
  83. else
  84. _.hideEmptyFu(th.removeClass(_.invalidCl))
  85.  
  86. if(!empty)
  87. if(valid)
  88. _.hideErrorFu(th.removeClass(_.invalidCl))
  89. else
  90. _.showErrorFu(th.addClass(_.invalidCl))
  91. })
  92. },
  93. getValFromLabel:function(label){
  94. var val=$('input,textarea',label).val()
  95. ,defVal=label.data('defVal')
  96. return label.length?val==defVal?'nope':val:'nope'
  97. }
  98. ,submitFu:function(){
  99. _.validateFu(_.labels)
  100. if(!_.form.has('.'+_.invalidCl).length)
  101. $.ajax({
  102. type: "POST",
  103. url:_.mailHandlerURL,
  104. data:{
  105. name:_.getValFromLabel($('.name',_.form)),
  106. email:_.getValFromLabel($('.email',_.form)),
  107. phone:_.getValFromLabel($('.phone',_.form)),
  108. fax:_.getValFromLabel($('.fax',_.form)),
  109. state:_.getValFromLabel($('.state',_.form)),
  110. message:_.getValFromLabel($('.message',_.form)),
  111. owner_email:_.ownerEmail,
  112. stripHTML:_.stripHTML
  113. },
  114. success: function(){
  115. _.showFu()
  116. }
  117. })
  118. },
  119. showFu:function(){
  120. _.success.slideDown(function(){
  121. setTimeout(function(){
  122. _.success.slideUp()
  123. _.form.trigger('reset')
  124. },_.successShow)
  125. })
  126. },
  127. controlsFu:function(){
  128. $(_.controls,_.form).each(function(){
  129. var th=$(this)
  130. th
  131. .bind('click',function(){
  132. _.form.trigger(th.data('type'))
  133. return false
  134. })
  135. })
  136. },
  137. showErrorFu:function(label){
  138. label.find('.'+_.errorCl).slideDown(600)
  139. },
  140. hideErrorFu:function(label){
  141. label.find('.'+_.errorCl).slideUp(600)
  142. },
  143. showEmptyFu:function(label){
  144. label.find('.'+_.emptyCl).slideDown(600)
  145. _.hideErrorFu(label)
  146. },
  147. hideEmptyFu:function(label){
  148. label.find('.'+_.emptyCl).slideUp(600)
  149. },
  150. init:function(){
  151. _.form=_.me
  152. _.labels=$('label',_.form)
  153.  
  154. _.preFu()
  155.  
  156. _.controlsFu()
  157.  
  158. _.form
  159. .bind('submit',function(){
  160. if(_.validate)
  161. _.submitFu()
  162. else
  163. _.form[0].submit()
  164. return false
  165. })
  166. .bind('reset',function(){
  167. _.labels.removeClass(_.invalidCl)
  168. _.labels.each(function(){
  169. var th=$(this)
  170. _.hideErrorFu(th)
  171. _.hideEmptyFu(th)
  172. })
  173. })
  174. _.form.trigger('reset')
  175. }
  176. }
  177. _.me||_.init(_.me=th.data({forms:_}))
  178. typeof o=='object'
  179. &&$.extend(_,o)
  180. })
  181. }
  182. })(jQuery)
  183.  
  184. $(window).load(function(){
  185. $('#form1').forms({ownerEmail:'#'});
  186. })
[JAVASCRIPT] pobierz, plaintext


i taki plik "bin/sendmail.php"
  1. <?php
  2. $owner_email = $_POST["owner_email"];
  3. $headers = 'Od:' . $_POST["email"];
  4. $subject = 'Wiadomość z twojej strony od ' . $_POST["name"];
  5. $messageBody = "";
  6.  
  7. $messageBody .= '<p>Imie i nazwisko: ' . $_POST["name"] . '</p>' . "\n";
  8. $messageBody .= '<br>' . "\n";
  9. $messageBody .= '<p>Adres E-mail: ' . $_POST['email'] . '</p>' . "\n";
  10. $messageBody .= '<br>' . "\n";
  11. $messageBody .= '<p>Wiadomość: ' . $_POST['message'] . '</p>' . "\n";
  12.  
  13. if($_POST["stripHTML"] == 'true'){
  14. $messageBody = strip_tags($messageBody);
  15. }
  16.  
  17. try{
  18. if(!mail($owner_email, $subject, $messageBody, $headers)){
  19. throw new Exception('mail failed');
  20. }else{
  21. echo 'mail sent';
  22. }
  23. }catch(Exception $e){
  24. echo $e->getMessage() ."\n";
  25. }
  26. ?>


hmm... i co ja mam nie tak?
lobopol
Rzuciłeś ponad 200 linii kodu i nie napisałeś co ci dokładnie nie działa. Czy otrzymujesz jakieś komunikaty błędów, czy js nie wyrzuca błędów itp. pomóż nam, pomóc sobie.
Johnas
Błędów nie widzę... Z resztą można zobaczyć na http://teambook.pl
markonix
Cytat(Jonek_1993 @ 16.03.2012, 17:58:04 ) *
Błędów nie widzę... Z resztą można zobaczyć na http://teambook.pl

... 300 postów i takie dziecinne podejście.

Skoro nie ma błędów to je wywołaj, debuguj.
Najpierw sobie odpowiedz na pytanie do jakiego momentu dochodzi skrypt.
Dociera do funkcji mail? Bo moim zdaniem nie bo w konsoli nie widzę informacji o tym czy wysłano bądź nie wysło e-maila.

edit: Po trzecie ten kod jest strasznie nadmiarowy - jest tam pobieranie pól, których w ogóle nie masz.
lobopol
Konsola mówi:
Kod
HTTP/1.1 404 Not Found

Date: Fri, 16 Mar 2012 17:14:39 GMT

Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4

Content-Length: 339

Connection: close

Content-Type: text/html; charset=iso-8859-1
Nie dochodzi do skryptu, popraw sobie adres do niego
Ślesz do http://teambook.pl/eb/bin/MailHandler.php, 404 tam dostajesz
markonix
Jeszcze taka inna uwaga - jeżeli Ty robisz całościowo tę stronę to menu jest kiepskie i irytujące (wyjeżdżanie poza ekran).
Dość często kliknięcie w link nie przenosi (nie wysuwa) odpowiedniej zakładki.
prowseed
I pasek przewijania sie pokazuje nawet jak nie ma co przewijac, co jest troche mylace, tym bardziej, ze nie reaguje na scroll'a.
I nie kiedy w pozycje w menu trzeba klikac dwa razy, bo w czasie animacji tak jakby nie reagowaly...
Johnas
Cytat(markonix)
300 postów i takie dziecinne podejście.


Tu nie chodzi o dziecinne podejście tylko o to że jeżeli pracuje z ajaxem to sam nie wiem jakim cudem to działa. Znam wiele języków ale wszystko najbardziej podobne do PHP.

Cytat(markonix)
Jeszcze taka inna uwaga - jeżeli Ty robisz całościowo tę stronę to menu jest kiepskie i irytujące (wyjeżdżanie poza ekran).
Dość często kliknięcie w link nie przenosi (nie wysuwa) odpowiedniej zakładki.


Wiem, jest parę poprawek... I jak mi sie nie uda naprawić menu to zmienię je na statyczne. Bo javascript działa tam metodą prób i błędów
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.