2017-01-10 3 views
0

Я думаю об использовании контактной формы с пользовательским вводом для телефона или email (одним вводом).Использование одного входа для телефона/электронной почты в контактной форме

Я хотел бы знать, можно ли как-то использовать для этого HTML-номер/адрес электронной почты? и должен ли я выполнять этот тип проверки на стороне сервера?

HTML форма:

<form name="contact" target="contact.php" method="post"> 
     <input name="fullname" placeholder="Name" type="text" value="" minlength="2" required=""> 
     <input name="emailPhone" placeholder="email/phone" type="email" value="" required=""> 
     <input value="send" type="submit"> 
</form> 

Код из contact.php:

$name = trim(stripslashes($_POST['fullname'])); 
    $ep_input = trim(stripslashes($_POST['emailPhone'])); 

    // Name validation 
    if (strlen($name) < 2) { 
     $error['name'] = "Invalid name"; 
    } 

    // Email and phone number validation. first, the email... 
    if (!preg_match('/^[a-z0-9&\'\.\-_\+][email protected][a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $ep_input)) { 
     $error['email'] = "invalid email address."; 
    } 
    // Now the phone (should be more accurate but we keep it simple for now...) 
    else if (!preg_match('/^[0-9]*$/', $ep_input) { 
     $error['phone'] = "invalid phone number."; 
    } 

Я хотел бы знать, если это возможно, чтобы использовать проверку HTML5 как-то для обоих. если нет, будет хорошо, если кто-нибудь сможет поделиться лучшим способом достижения этого результата с помощью некоторого кода JS/Jquery/AJAX перед отправкой данных формы в файл PHP ...

+1

Не делайте этого. Это запутывает пользователя. Вместо этого, есть два входа, с четким выбором для пользователя. –

+1

Как насчет 'type =" text "'? Это должно работать для обоих. –

+0

Есть ли хороший способ сделать этот вариант похожим на один вход? как бы это сделать с меньшими затратами, просто введите адрес электронной почты или телефон здесь - не можете придумать, как правильно это сделать. – LowMatic

ответ

0

Вот временное решение, используя только HTML & PHP, чтобы получить номер телефона или адрес электронной почты с помощью одного HTML формы ввода:

HTML (с типом текстовому):

<input name="emailPhone" placeholder="email/phone" type="text" value="" required=""> 

php :

<?php 
$name = trim(stripslashes($_POST['fullname'])); 
$ep = trim(stripslashes($_POST['emailPhone'])); 

// Check phone number for 10 digits 
if(is_numeric($ep)) 
{ 
    if(!preg_match('/^\d{10}$/',$ep)) { 
     $error = "invalid phone number."; 
    } 
    $eptype = "phone"; 
    } 

// Check valid email format 
else 
{ 
    if (!filter_var($ep, FILTER_VALIDATE_EMAIL)) { 
    $error = "invalid email address."; 
    } 
    $eptype = "email"; 
} 

// Send the information via email with php or show the error 
    $mailto = "[email protected]"; 
    $massage = "Please contact". $name ."via ". $eptype .": ". $ep; 

if (!$error) { 
    $sendmail = mail($mailto, "Subject", $massage); 
    } 

else { 
    echo $error; 
    } 
?> 

Я предполагаю, что это лучший способ для достижения этой цели с JS, но так как не было никакого ответа, я надеюсь, что этот код может быть полезно тоже.

0
  1. Измените тип ввода на текст ,
  2. Проверьте, если поле ввод содержит только цифры, а затем подтвердите номер телефона 10 цифр
  3. Если он содержит буквенно-цифровым, то проверяет, является ли значение действительного адреса электронной почты или не используя FILTER_VALIDATE_EMAIL.

<?php 
$ep=trim(stripslashes($_POST['emailPhone'])); 
if(is_numeric($ep)) 
{ 
    if(!preg_match('/^\d{10}$/',$ep)) 
    { 
     echo "invalid phone"; 
    } 
} 
else 
{ 
    if (!filter_var($ep, FILTER_VALIDATE_EMAIL)) { 
     echo "Invalid email format"; 
    } 
} 
?> 
+0

Не могли бы вы добавить некоторые пояснения к вашему коду, чтобы другие люди могли легче понять, как работает решение? –

Смежные вопросы