ugrás a tartalomhoz

PHP mailer

Astroman · 2019. Feb. 5. (K), 11.51
Sziasztok,
Az alábbiban kérném a segítségeteket.

Adott egy form, amiből szeretnék majd üzeneteket kapni (saját honlapom mailere). Részben működik - az email megjön - de a text mezőkbe (subject, név, mailcím, illetve a message) írt tartalom nem jön át.

A form:
<script language="javascript">
function CheckAll(x)
{


return true;
}

/// email check

function checkemail(myemail)
{
var str=myemail;
var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
{
testresults=true
}
else
{
testresults=false
}
return (testresults)
}

/// to check that perticular value is EMPTY OR NOT
function ISBLANK(xx)
{
var cc=0,tt;
for(tt=0; tt<xx.length; tt++)
{
if (xx.charAt(tt)==' ')
{
cc=cc+1; // count blank character
}
}
if (cc==xx.length)
{
return true; //// means it is BLANK
}
return false; //// means it is NOT BLANK
}

function is_radio_button_selected(fieldnm)
{
// set var radio_choice to false
var radio_choice = false;

// Loop from zero to the one minus the number of radio button selections
for (counter = 0; counter < fieldnm.length; counter++)
{
// If a radio button has been selected it will return true
// (If not it will return false)
if (fieldnm[counter].checked)
radio_choice = true;
}

if (!radio_choice)
{
return (false); /// means not selected
}
return (true); /// means selected
}
</script>
<form method="POST" action="_sendmail.php">
<label class="form-label-top" id="label_1" for="input_1">
Subject:
<input type="text" name="subject" size="20">
<span class="form-required">*</span>
</label>
<br/>
<br/>
<label class="form-label-top" id="label_1" for="input_1">
Name:
<input type="text" name="name" size="20">
<span class="form-required">*</span>
</label>
<br/>
<br/>
<label class="form-label-top" id="label_1" for="input_1">
E-mail:
<input type="email" name="email" size="20">
<span class="form-required">*</span>
</label>
<br/>
<br/>
<label class="form-label-top" id="label_1" for="input_1">
Message:
<br/>
<textarea rows="9" name="message" cols="30">
</textarea>
<br/>
<br/>
<div id="cid_2" class="form-input-wide">
<div style="margin-left:66px" class="form-buttons-wrapper">
<button id="input_2" type="submit" class="form-submit-button">
Send
</button>
&nbsp;
<button id="input_reset_2" type="reset" class="form-submit-reset">
Clear Form
</button>
</div>
</div>
</li>
<li style="display:none">
Should be Empty:
<input type="text" name="website" value="" />
</li>
</ul>
</div>
</form>


Illetve a PHP mailer:

<?php ob_start();
$fromemail="Optech<example.com>"; // change here if you want
$toemail="example.com"; // change here if you want
$sub="Optech-üzenet"; // change here if you want
$success_page_name="thanks.html";
////// do not change in following
if($_SERVER['REQUEST_METHOD']=="POST")
{
$fieldnm_1=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_1']));
$fieldnm_2=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_2']));
$fieldnm_3=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_3']));
$fieldnm_4=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_4']));


$contentmsg=stripslashes("<br><b><font style=color:#CC3300>$sub</font></b><br>
<table width=708 border=0 cellpadding=2 cellspacing=1 bgcolor=#CCCCCC>

<tr>
<td width=165 align=right valign=top bgcolor=#FFFFFF><B>Subject:</b> </td>
<td width=565 align=left valign=top bgcolor=#FFFFFF>$fieldnm_1</td>
</tr>

<tr>
<td width=165 align=right valign=top bgcolor=#FFFFFF><B>Name:</b> </td>
<td width=565 align=left valign=top bgcolor=#FFFFFF>$fieldnm_2</td>
</tr>

<tr>
<td width=165 align=right valign=top bgcolor=#FFFFFF><B>E-mail:</b> </td>
<td width=565 align=left valign=top bgcolor=#FFFFFF>$fieldnm_3</td>
</tr>

<tr>
<td width=165 align=right valign=top bgcolor=#FFFFFF><B>Message:</b> </td>
<td width=565 align=left valign=top bgcolor=#FFFFFF>$fieldnm_4</td>
</tr>

</table>
");

////
$headers = "MIME-Version: 1.0

";
$headers .= "Content-type: text/html; charset=iso-8859-1

";

$from=$fromemail;

$headers .= "From: ".$from."

";

@mail($toemail,$sub,$contentmsg,$headers);


header("Location:$success_page_name");

}
?>


Előre is köszönöm a segítséget.
 
1

Ezeket küldi a böngésző a

kuka · 2019. Feb. 5. (K), 12.28
Ezeket küldi a böngésző a szerverre:
<input type="text" name="subject" size="20">
<input type="text" name="name" size="20">
<input type="email" name="email" size="20">
<textarea rows="9" name="message" cols="30">
</textarea>
<input type="text" name="website" value="" />

Ezeket küldi tovább a PHP e-mailben:
$fieldnm_1=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_1']));
$fieldnm_2=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_2']));
$fieldnm_3=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_3']));
$fieldnm_4=str_replace ( array("\n"), array("<br>"),trim($_REQUEST['fieldnm_4']));

Próbáld ugyanazokat a mezőneveket használni mindenhol ahol ugyanazokat az adatokat szándékszol kezelni.
2

Részsiker

Astroman · 2019. Feb. 5. (K), 12.47
Valóban a fieldnameket nem írtam át. :)
Viszont úgy tűnik van még mit csiszolgatni. Az egyik, hogy az ékezetes karaktereket nem kezeli. Ezt hogyan lehetne kiküszöbölni. - Ezt átkódolással megoldottam.


A másik pedig szeretném, hogy az üresen hagyott mezőknél figyelmeztessen. Azt hittem ezt sikerült megoldani, de csak a mailcím mezőben figyelmeztet a "@" hiányára.
3

A további véleményalkotáshoz

kuka · 2019. Feb. 5. (K), 12.55
A további véleményalkotáshoz szükséges volna a teljes szkript. (Ha kérhetnénk, olvasható állapotban, azaz [colorer] és [/colorer] között.) A fentebbiben nem találom, hogy vannak meghívva azok az ellenőrző függvények.
4

Teljes form script

Astroman · 2019. Feb. 5. (K), 13.03
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  2. <html xmlns="http://w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>Kapcsolat - OPTECH</title>  
  6. <link href="css/style.css" rel="stylesheet" type="text/css" />  
  7. </head>  
  8. <body id="index_2">  
  9. <div class="container_all">  
  10.     <div class="level_1">  
  11.         <div class="width">  
  12.             <ul>  
  13.                 <li><a href="index.html">GAL&Eacute;RI&Aacute;K</a></li>  
  14.                 <li><a href="about.html">MAGAMR&Oacute;L</a></li>  
  15.                 <li><a href="contacts.html" class="active">KAPCSOLAT</a></li>  
  16.                 <li class="last"><a href="index.html"><img alt="home" src="css/img/home.png" /></a></li>  
  17.             </ul>  
  18.               
  19.         </div>  
  20.     </div>  
  21.     <div class="level_2">  
  22.         <div class="width">  
  23.         </div>  
  24.     </div>  
  25.     <div class="level_3">  
  26.         <div class="width">  
  27.             <h3>KAPCSOLAT</h3>  
  28.             <br><br>  
  29.             <div class="right"><div class="indent"><div class="w100">  
  30.                 <h6><font size="2" color="#bb5e00">Ha b&aacute;rmilyen k&eacute;rd&eacute;sed van az al&aacute;bbi lehet&otilde;s&eacute;geken el&eacute;rsz!</font></p>  
  31.                 <br><br>  
  32.             </div></div></div>  
  33.             <div class="clear"></div>  
  34.             <CENTER>  
  35.             <script language="javascript">  
  36. function CheckAll(x)  
  37. {  
  38.       
  39.    
  40.      return true;  
  41. }  
  42.   
  43. /// email check  
  44.   
  45. function checkemail(myemail)  
  46. {  
  47. var str=myemail;  
  48. var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i  
  49. if (filter.test(str))  
  50. {  
  51. testresults=true  
  52. }  
  53. else  
  54. {  
  55. testresults=false  
  56. }  
  57. return (testresults)  
  58. }  
  59.   
  60. /// to check that perticular value is EMPTY OR NOT  
  61. function ISBLANK(xx)  
  62. {   
  63.         var cc=0,tt;  
  64.         for(tt=0; tt<xx.length; tt++)  
  65.         {  
  66.              if (xx.charAt(tt)==' ')  
  67.              {  
  68.                 cc=cc+1; // count blank character  
  69.              }  
  70.         }  
  71.         if (cc==xx.length)  
  72.         {  
  73.             return true;  //// means it is BLANK  
  74.         }  
  75.          return false;  //// means it is NOT BLANK  
  76. }  
  77.   
  78. function is_radio_button_selected(fieldnm)  
  79. {  
  80. // set var radio_choice to false  
  81. var radio_choice = false;  
  82.   
  83. // Loop from zero to the one minus the number of radio button selections  
  84. for (counter = 0; counter < fieldnm.length; counter++)  
  85. {  
  86. // If a radio button has been selected it will return true  
  87. // (If not it will return false)  
  88. if (fieldnm[counter].checked)  
  89. radio_choice = true;   
  90. }  
  91.   
  92. if (!radio_choice)  
  93. {  
  94. return (false); /// means not selected  
  95. }  
  96. return (true); /// means selected  
  97. }  
  98. </script>  
  99.              <form method="POST" action="_sendmail.php">  
  100.              <label class="form-label-top" id="label_1" for="input_1">  
  101.                  Subject:  
  102.                  <input type="text" name="subject" size="20">  
  103.                  <span class="form-required">*</span>  
  104.         </label>  
  105.                  <br/>  
  106.                  <br/>  
  107.                  <label class="form-label-top" id="label_1" for="input_1">  
  108.                  Name:  
  109.                  <input type="text" name="name" size="20">  
  110.                  <span class="form-required">*</span>  
  111.         </label>  
  112.                  <br/>  
  113.                  <br/>  
  114.                  <label class="form-label-top" id="label_1" for="input_1">  
  115.                  E-mail:  
  116.                  <input type="email" name="email" size="20">  
  117.                  <span class="form-required">*</span>  
  118.         </label>  
  119.                  <br/>  
  120.                  <br/>  
  121.                  <label class="form-label-top" id="label_1" for="input_1">  
  122.                  Message:  
  123.                  <br/>  
  124.                  <textarea rows="9" name="message" cols="30">  
  125.                  </textarea>  
  126.                  <br/>  
  127.                  <br/>  
  128.                   <div id="cid_2" class="form-input-wide">  
  129.           <div style="margin-left:66px" class="form-buttons-wrapper">  
  130.             <button id="input_2" type="submit" class="form-submit-button">  
  131.               Send  
  132.             </button>  
  133.             &nbsp;  
  134.             <button id="input_reset_2" type="reset" class="form-submit-reset">  
  135.               Clear Form  
  136.             </button>  
  137.           </div>  
  138.         </div>  
  139.       </li>  
  140.       <li style="display:none">  
  141.         Should be Empty:  
  142.         <input type="text" name="website" value="" />  
  143.       </li>  
  144.     </ul>  
  145.   </div>  
  146.              </form>  
  147.              <br>  
  148.              <br>  
  149.          </CENTER>  
  150.          <CENTER>  
  151.      2019. All Rights Reserved.   
  152.             <p>Designed by Tam&aacute;s N&eacute;meth  
  153.             </CENTER>  
  154.         </div>  
  155.     </div>  
  156. </div>  
  157. </body>  
  158. </html>              
  159.      </body>  
  160.  </html>  
  161.  </body>  
  162. </html>  
5

Upsz. Erre nem számítottam.

kuka · 2019. Feb. 5. (K), 13.33
Upsz. Erre nem számítottam. Az a teljes szkript úgy használatlan ahogy van. Egyelőre minimálisra fogva a változtatások mennyiségét, először is meg kellene hívni a CheckAll() függvényt űrlapküldés előtt (bárhova beszúrható, én a szkript legvégére szoktam hagyni):
  1. window.addEventListener('load'function() {  
  2.     document.querySelector('form[action="_sendmail.php"]').addEventListener('submit', CheckAll, false)  
  3. }, false)  
A CheckAll() függvényben meg elvégezni az ellenőrzéseket:
  1. function CheckAll(esemeny)  
  2. {  
  3.     var hibaLista = []  
  4.   
  5.     ;['subject''name''email'].forEach(function(mezo) {  
  6.         if (ISBLANK(esemeny.target.elements[mezo].value)) {  
  7.             hibaLista.push(mezo + ' kitöltése kötelező')  
  8.         }  
  9.     })  
  10.           
  11.     if (ISBLANK(esemeny.target.elements['email'].value)) {  
  12.         hibaLista.push('email értéke e-mail cím kell legyen')  
  13.     }  
  14.           
  15.     if (hibaLista.length) {  
  16.         alert(hibaLista.join('\n'))  
  17.         esemeny.preventDefault();  
  18.     }  
  19.   
  20.     return true;  
  21. }  
6

Lecseréltem, de nem

Astroman · 2019. Feb. 5. (K), 13.49
Lecseréltem a függvényt, de valamiért ugyanúgy engedi kiküldeni üresen.
7

Upsz, hiba az e-mail

kuka · 2019. Feb. 5. (K), 14.08
Upsz, hiba az e-mail ellenőrzésben, a feltétel így kell kinézzen:
  1. if (! checkemail(esemeny.target.elements['email'].value)) {  
  2.     hibaLista.push('email értéke e-mail cím kell legyen')  
  3. }  
De az ürsség ellenőrzésnek ettől függetlenül működnie kell.

Gondolom az alert() sem jelenik meg a hibaüzenettel, úgy-e? Ha hozzáadsz egy sornyi naplózást az eseménykezelőhöz akkor megjelenik valami a böngésző fejlesztőeszközeinek Console fülében?
  1. window.addEventListener('load'function() {  
  2.     console.log('window onload folyamatban, az űrlap :', document.querySelector('form[action="_sendmail.php"]'));  
  3.     document.querySelector('form[action="_sendmail.php"]').addEventListener('submit', CheckAll, false)  
  4. }, false)  
8

Email-ellenőrzés most jó

Astroman · 2019. Feb. 5. (K), 14.27
Email-ellenőrzés most jó, de a többi mező ellenőrzése továbbra sem működik.

Csak ezt a figyelmeztetést találtam:

/deep/ combinator is deprecated. See https://www.chromestatus.com/features/6750456638341120 for more details.
tree.css.js:9 The -webkit-canvas CSS feature is deprecated. Please use a positioned <canvas> element instead.
9

Hát ha nálad nem ez

kuka · 2019. Feb. 5. (K), 14.52
Hát ha nálad nem ez történik:

Akkor arra kell gyanakodjak, hogy valami félrement amikor szerkesztette a JavaScript kódot.
Email-ellenőrzés most jó
Ha nem a fenti alert() figyelmeztetést kapod, attól tartok az a böngésző beépített ellenőrzése, mivel type="email" attribútumot adtál meg az beviteli mezőnek. Vagyis a szkripttel való ellenőrzés szempontjából valószínűleg az sem jó.
10

Egyik böngészőben sem

Astroman · 2019. Feb. 5. (K), 15.24
Egyik böngészőben sem jelenik meg a figyelmeztetés, továbbra is csupán az email mező kitöltésénél szól a "@" hiányára.
Attól tartok ezt már nem értem (eddig sem nagyon szagoltam hozzá) :) :( , hiszen bármit írok át a függvényben, nem történik változás.
Azt hiszem Te megtettél minden tőled telhetőt, amiért nagyon hálás vagyok. :)
11

Nos, esetleg ki is hagyhatod

kuka · 2019. Feb. 5. (K), 15.46
Nos, esetleg ki is hagyhatod a teljes JavaScript részt. Ha a böngésző beépített ellenőrzése megfelel, akkor a required attribútum segítségével felkérheted, hogy az üres mezőkért is ő sikítson:
  1. <input type="text" name="subject" size="20" required="required">  
https://caniuse.com/#feat=form-validation szerint a támogatottsággal manapság már nem kellene gond legyen.
12

Siker

Astroman · 2019. Feb. 5. (K), 16.01
WOW, Te mekkora király vagy!!!
Kombináltam a kettőt. Bent hagytam a mailcím-ellenőrzéshez a scriptet és beírtam a attribútumot és teljes siker!
Ezer köszi.! :)
13

Bár már megoldódott,

Pepita · 2019. Feb. 5. (K), 17.06
annyit azért célszerű "elkövetni", hogy ha valamilyen felhasználótól érkező adatot ellenőrizni akarsz, akkor azt szerver oldalon (is) ellenőrzöd.
Ne felejtsük el, hogy bármit írsz html-be vagy javascript-be, az a böngészőben tetszés szerint módosítható.
Ha csak annyi az ellenőrzés, hogy valami ne legyen üres, akkor arra (a trimmelések, egyéb átalakítások után) a php empty függvénye a legalkalmasabb.

Ezen kívül én tennék valami captcha-t is, hogy ne töltsék tele a postaládámat kedves robotok.
14

Ezen kívül én tennék valami

kuka · 2019. Feb. 5. (K), 17.19
Ezen kívül én tennék valami captcha-t is, hogy ne töltsék tele a postaládámat kedves robotok.
Szerintem erre lett volna hivatott a website mező:
  1. <li style="display:none">  
  2. Should be Empty:  
  3. <input type="text" name="website" value="" />  
  4. </li>  
Csak éppen kellene hozzá a PHP kód legelejére egy
  1. // ha egy naiv bot rákattant és kitöltötte, akkor felejtős  
  2. if (! emptyempty($_REQUEST['website'])) {  
  3.     return;  
  4. }  
(Mondjuk személyesen már ott kirúgtam volna a szkriptet ahol nl2br() helyett str_replace(array("\n"), array("<br>"), …) van.)
15

Nagyon köszi.

Astroman · 2019. Feb. 5. (K), 20.45
Már tolom is be. :) Erre sem gondoltam, de nagyon hasznos.
Ezt is nagyon köszi. :)