PHP mailer
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:
Illetve a PHP mailer:
Előre is köszönöm a segítséget.
■ 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>
<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>
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>
<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");
}
?>
$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.
Ezeket küldi a böngésző a
<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_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.
Részsiker
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.
A további véleményalkotáshoz
Teljes form script
Upsz. Erre nem számítottam.
Lecseréltem, de nem
Upsz, hiba az e-mail
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?
Email-ellenőrzés most jó
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.
Hát ha nálad nem ez
Akkor arra kell gyanakodjak, hogy valami félrement amikor szerkesztette a JavaScript kódot.
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ó.Egyik böngészőben sem
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. :)
Nos, esetleg ki is hagyhatod
required
attribútum segítségével felkérheted, hogy az üres mezőkért is ő sikítson:Siker
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.! :)
Bár már megoldódott,
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.
Ezen kívül én tennék valami
nl2br()
helyettstr_replace(array("\n"), array("<br>"), …)
van.)Nagyon köszi.
Ezt is nagyon köszi. :)