прошло некоторое время с тех пор, как я отправил последнее спасибо, заранее за всю вашу помощь в прошлом. У меня есть один почтовый ящик с кнопкой отправки.
Что я хочу сделать, так это проверить этот адрес электронной почты, чтобы убедиться, что он не пуст, если он должен отображать сообщение, а затем попросить пользователя ввести действительный адрес электронной почты, который я хочу проверить, так что это только учетные записи hotmail и gmail, например [email protected] и [email protected] и ничего больше.
мой код ниже работает нормально, чтобы проверить на пустое и выводит на экран предупреждающее сообщение, но я не знаю, как манипулировать проверкой адреса электронной почты, и если все в порядке, как использовать одну и ту же кнопку отправки, чтобы отправить действительное письмо с благодарностью сообщение после представлений.. спасибо заранее... singhy
ps: извиняюсь заранее за любую ошибку новичков, которую я сделал... извините
<?php
if(isset($_POST['email'])) {
$to = '[email protected]';
$subject = '';
$email = $_POST['email_from'];
//$message = "LIST \r\n".
$message = "signoff list name \r\n";
}
$email_from = $_POST['email'];
// create email headers
$message = wordwrap($message, 100, "\r\n");
$headers = 'From: '.$email."\r\n".
'Reply-To: '.$email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($to, $subject, $message, $headers);
?>
<p>If you would like to receive our weekly newsletter email address below.</p>
<script type="text/javascript">
function IsEmpty(){
if(document.forms['isgtest'].email_from.value == "")
{
alert("Email field is empty, please enter email format");
return false;
}
//return submit "email_from.value";
(document.forms['test'].email_from.value == "subscribe")
//return .email_from.value == "";
//alert("thank u for joining the list !");
//return true;
}
</script>
<!--<script type="text/javascript"></script>-->
<form name="isgtest" class="rform" method="post" action="g.php">
<fieldset><legend>testing...</legend>
<label for="email_from"><span style="color: #ff0000;"><strong>*</strong>
</span>Email address:<input id="email_from" type="text" name="email_from" size="25" /> <input id="insert" id="btn" onclick="return IsEmpty();" style="float: right;" type="button" name="submit" value="Subscribe" /></fieldset>
</form>
<?php
$email_from = $_POST['email'];
$errors=array(); //track the errors as the script runs
function isValidEmail($addr) // Check for a valid email
{
return filter_var($addr, FILTER_VALIDATE_EMAIL) ? TRUE : FALSE;
}
if(!isValidEmail($email_from))$errors[]='Please enter a valid email address';
//Next, test for the email provider you wanted to filter by
$atPos=strpos($email_from,'@');//find the @ symbol
$afterAt=substr($email_from,$atPos,strlen($email_from)-$atPos); //get everything after
$dotPos=strpos($afterAt,'.');
$domain=strtolower(substr($afterAt,0,$dotPos)); //get the typed domain, lowercase
if($domain!='hotmail'||$domain!='gmail')$errors[]='Email must be hotmail or gmail';
if(isset($_POST['email'])) {
if(count($errors)<0)
{
$to = '[email protected]';
$subject = '';
$email = $_POST['email_from'];
//$message = "LIST \r\n".
$message = "signoff list name \r\n";
// create email headers
$message = wordwrap($message, 100, "\r\n");
$headers = 'From: '.$email."\r\n".
'Reply-To: '.$email."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($to, $subject, $message, $headers);
}
}// note that I changed the nesting to only trigger the mail on post
?>
<p>If you would like to receive our weekly newsletter email address below.</p>
<script type="text/javascript">
function IsEmpty(){
if(document.forms['isgtest'].email_from.value == "")
{
alert("Email field is empty, please enter email format");
return false;
}
//return submit "email_from.value";
(document.forms['test'].email_from.value == "subscribe")
//return .email_from.value == "";
//alert("thank u for joining the list !");
//return true;
}
</script>
<!--<script type="text/javascript"></script>-->
<?php
if(count($errors)>0)
{
foreach $errors as $e //Now tell the user what went wrong
{
echo "$e<br>"; // you can also use '' to enclose js tags and use alert
}
}
?>
<form name="isgtest" class="rform" method="post" action="g.php">
<fieldset><legend>testing...</legend>
<label for="email_from"><span style="color: #ff0000;"><strong>*</strong>
</span>Email address:<input id="email_from" type="text" name="email_from" size="25" /><input id="insert" id="btn" onclick="return IsEmpty();" style="float: right;" type="button" name="submit" value="Subscribe" /> </fieldset>
</form>
Если вы собираетесь проверять внешний интерфейс (который должен использоваться только для улучшения пользовательского интерфейса, никогда не доверяйте пользовательскому вводу и всегда проверяйте на стороне сервера!), Почему бы не использовать функции HTML5, которые существуют именно для этой цели. Что-то вроде этого:
<form>
<label>Email:
<input type='email' pattern=".+(@gmail.com|@hotmail.com)" required />
</label>
<button type="submit">subscribe</button>
</form>
type=email
позволяет принимать только адреса электронной почтыrequired
чтобы было предоставлено значение, прежде чем оно может быть отправленоpattern
принимает регулярное выражение, которому вход должен соответствовать, прежде чем он может быть отправлен.Лично я не большой поклонник сообщений об ошибках по умолчанию, выпущенных моим браузером, но я даже не поклонник предупреждений, которые вы используете, поэтому...
Если вы настаиваете на том, чтобы перейти на javascript, я бы посоветовал что-то вроде этого (псевдокод, непроверенный):
function isEmpty(input) { ... }
function isEmail(input) { ... }
function isGmailOrHotmail(input) { ... }
function isValid(node) {
var value = node.value;
return ! isEmpty(value) && isEmail(value) && isGmailOrHotmail(value);
}
И тогда вы можете привязать функцию isValid
к вашей кнопке отправки (желательно из вашего файла сценария или блока, но также должен работать встроенный способ onclick
)