WordPress как на ладони
Официальная конференция по WordPress в Moскве 18-19 августа, начало в 9:00 wordpress jino

Обязательное поле в phpmailer для сафари

Как добавить обязательное поле в phpmailer для сафари?

Заметки к вопросу:
OLD_Grays 2 месяца назад

Добрый день. Не совсем понятен вопрос. Если вы используете phpmailer (class.smtp.php и class.phpmailer.php) и обработчик, допустим, send.php, где задаются параметры, который выглядит примерно так:

<?php
// Файлы phpmailer
require 'class.phpmailer.php';
require 'class.smtp.php';
// Переменные
$name = $_POST['name'];
$number = $_POST['number'];
$email = $_POST['email'];
// Настройки
$mail = new PHPMailer;
$mail->isSMTP(); 
$mail->Host = 'smtp.yandex.ru'; 
$mail->SMTPAuth = true; 
$mail->Username = 'yourlogin'; // Ваш логин в Яндексе. Именно логин, без @yandex.ru
$mail->Password = 'yourpass'; // Ваш пароль
$mail->SMTPSecure = 'ssl'; 
$mail->Port = 465;
$mail->setFrom('example@yandex.ru'); // Ваш Email
$mail->addAddress('example@mail.ru'); // Email получателя
$mail->addAddress('example@gmail.com'); // Еще один email, если нужно.
// Прикрепление файлов
 for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
 $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct]));
 $filename = $_FILES['userfile']['name'][$ct];
 if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
 $mail->addAttachment($uploadfile, $filename);
 } else {
 $msg .= 'Failed to move file to ' . $uploadfile;
 }
 } 

// Письмо
$mail->isHTML(true); 
$mail->Subject = “Заголовок”; // Заголовок письма
$mail->Body = “Имя $name . Телефон $number . Почта $email”; // Текст письма
// Результат
if(!$mail->send()) {
 echo 'Message could not be sent.';
 echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
 echo 'ok';
}
?>

То при создании формы, Вы можете создать любые поля и дописать переменные в обработчик. Пример формы:

<form enctype="multipart/form-data" method="post" id="form">
 <p>Имя</p>
 <input placeholder="В. В. Путин" name="name" type="text" required />
 <p>Телефон</p>
 <input placeholder="+7 777 77 77 777" name="number" type="text" >
 <p>Email</p>
 <input placeholder="example@mail.com" name="email" type="text" required />
 <p>Прикрепить файлы</p>
 <input type="file" name="userfile[]" multiple id="userfile" class="w100" accept="image/*" >
 <p><input value="Отправить" type="submit"></p>
</form>

Здесь, как мы видим, у полей Имя и Email стоит required. Он работает при поддержке html5 и раньше не всегда корректно работал со всеми браузерами. Поэтому можно написать дополнительную валидацию формы на js. Простейший пример:

function validateForm()
{
var x=document.forms["MyForm"]["name"].value;
if (x==null || x=="")
  {
  alert("Необходимо заполнить поле Имя!");
  return false;
  }
}

А форма принимает вид:

<form name="MyForm" enctype="multipart/form-data" method="post" id="form" onsubmit="return validateForm()">
 <p>Имя</p>
 <input placeholder="В. В. Путин" name="name" type="text" required />
...

Или нужно сделать обязательное поле с условием на то, что браузер пользователя именно safari?

artem-nikulitsa 2 месяца назад

да именно когда браузер сафари, использую этот плагин PHP + AJAX скрипт отправки форм на E-mail

artem-nikulitsa 2 месяца назад

нашел плагин еще один он как раз для сафари https://habr.com/post/181782/ но почемуто конфликтует с тем что было написано для скрипта формы

function send(form,otziv) { 
	jform = $(form); 
	window.form = form; 
	data = jform.serialize() + '&type=' + form.id; 

	console.log(data); 
	jQuery.ajax({ 
		url: '/send_email.php', 
		beforeSend: lock_button, 
		cache: false, 
		async: false, 
		success: function (data) { 
			console.log(data); 
			restore_button(); 
			if (otziv==1) { 
						$('#overlay1').fadeIn(400, 
			function () { 
				$('#modal_form4') 
					.css('display', 'block') 
					.animate({ 
						opacity: 1, 
						top: '35%' 
						}, 200); 
					}); 
					} 
			else { 
						$('#overlay1').fadeIn(400, 
			function () { 
				$('#modal_form3') 
					.css('display', 'block') 
					.animate({ 
						opacity: 1, 
						top: '35%' 
						}, 200); 
					}); 
					}; 
		}, 
		type: 'POST', 
		data: data 
	}); 
} 

если это удалить проверка идет, по другому опять не видит...

0
2 месяца назад

Нет ответов на этот вопрос.

    На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация