одна кнопка отправки для выполнения трех функций

1

прошло некоторое время с тех пор, как я отправил последнее спасибо, заранее за всю вашу помощь в прошлом. У меня есть один почтовый ящик с кнопкой отправки.

Что я хочу сделать, так это проверить этот адрес электронной почты, чтобы убедиться, что он не пуст, если он должен отображать сообщение, а затем попросить пользователя ввести действительный адрес электронной почты, который я хочу проверить, так что это только учетные записи 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>
Теги:
email

2 ответа

0
Лучший ответ
<?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>
  • 0
    Как упомянул @Pevara, никогда не доверяйте пользовательскому вводу! Всегда проверяйте наличие ошибок на стороне сервера, если это не только для удобства пользователя.
  • 0
    Привет, Эндрю, спасибо за тик в мой код, все еще пытаюсь заставить его работать, столкнуться с несколькими ошибками будет на связи, еще раз спасибо, сингхи
Показать ещё 1 комментарий
1

Если вы собираетесь проверять внешний интерфейс (который должен использоваться только для улучшения пользовательского интерфейса, никогда не доверяйте пользовательскому вводу и всегда проверяйте на стороне сервера!), Почему бы не использовать функции 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)

  • 0
    Привет, Певара, спасибо за ценную информацию, которая делает все возможное, чтобы воплотить это в моем коде ... буду на связи, если я сбился с пути, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню