Re: Контакт
есть же плагин lightbox, его и приспособьте
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
есть же плагин lightbox, его и приспособьте
и как я понимаю у всех проблемы с отображением писем когда они приходят на вашу доменную почту ?
попробуйте gmail.com или mail.ru, если все ок, то бейте своих хостеров
В том то и дело, что письма у меня приходят на @mail.ru и в кривой кодировке.
Причем выкладывал сайт на двух разных хостингах, без изменений. Значит хостеры здесь не причем.
Переустановил плагин заново. Тоже самое...
У меня был скрипт обратной связи, где было прописано примерно это
Content-type:text/plain; charset=utf-8\r\n
В нашем же плагине я не нашел подобного.
Может кто подскажет куда можно подставить такую строчку в наше плагин?
надо смотреть код отправки почты, поищите там строчку со словом mail, в теле этой функции есть место под метатеги
Update.. найди
$header
и на следующей строке вставьте это -
$header .= "Content-type: text/plain; charset=\"utf-8\"";
надо смотреть код отправки почты, поищи там строчку со словом mail, в теле этой функции есть место под метатеги
Это?
if (mail($recipient, $subject, $body, $header)) { Notification::set('success', __('A letter has been sent!', 'contact')); Request::redirect(Page::url());
artapp-ds пишет:надо смотреть код отправки почты, поищи там строчку со словом mail, в теле этой функции есть место под метатеги
Это?
if (mail($recipient, $subject, $body, $header)) { Notification::set('success', __('A letter has been sent!', 'contact')); Request::redirect(Page::url());
да, теперь выше там найдите $header и вставьте на следующей строке что я писал пост назад. Должно помочь:)
да, теперь выше там найдите $header и вставьте на следующей строке что я писал пост назад. Должно помочь:)
Спасибо большое, вопрос решен добавлением этой строчки
$header .= "Content-type: text/plain; charset=\"utf-8\"";
artapp-ds пишет:да, теперь выше там найдите $header и вставьте на следующей строке что я писал пост назад. Должно помочь:)
Спасибо большое, вопрос решен добавлением этой строчки
$header .= "Content-type: text/plain; charset=\"utf-8\"";
Все работает?:)
Хм.. У меня не работает.. Пишу всё правильно. Ответ: "Неверный код каптча!".
Что делать?
Добрый день. Тут ( http://forum.template-cms.ru/post/6832/#p6832 ) был описан простой способ прикрепления файлов к сообщению.
Я смог разобраться в форме и языковом файле, но нужно же, чтобы все работало:
Что нужно дописать в файле плагина, чтобы все заработало?
С телефоном просто.
Идете в contact.plugin.php копируйте и вставляйте между имени и емаилом в виде все, что связанно с Name и заменяете name на phone в только что вставленных Вами данных.
Что касается файлов - это сложнее, нужно ставить проверки, ограничения на форматы, заливку и отправку в виде письма. Тут уж лучше попросить, кого конкретно дописать плагин, со всеми проверками.
Хотя согласен Добаление к форме Phone и прикрепление файла типа xlsx docx pdf zip jpg png с ограничением на 5 метров было бы удобным.
Всем здравия!
Уже несколько дней мучаюсь с одной проблемой в форме обратной связи. Добавил в нее поле ввода телефонного номера.
/** * Shorcode: {contact recipient="admin@site.org"} */ Shortcode::add('contact', 'Contact::_shorcode'); /** * Usage: */ class Contact { public static function _shorcode($attributes) { return Contact::form($attributes['recipient']); } public static function form($recipient) { $name = Request::post('contact_name'); $phone = Request::post('contact_phone'); $email = Request::post('contact_email'); $body = Request::post('contact_body'); $errors = array(); if (Request::post('contact_submit')) { if (Security::check(Request::post('csrf'))) { if (Request::post('contact_name') == '' || Request::post('contact_phone') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') { $errors['contact_empty_fields'] = __('Empty required fields!', 'contact'); } if ( ! Valid::email(Request::post('contact_email'))) { $errors['contact_email_not_valid'] = __('Email address is not valid!', 'contact'); } if (Option::get('captcha_installed') == 'true' && ! CryptCaptcha::check(Request::post('answer'))) { $errors['users_captcha_wrong'] = __('Captcha code is wrong', 'users'); } if (count($errors) == 0) { $recipient = $recipient; $subject = $name; $header = "From: ". $name . " \r\n"; if (mail($recipient, $subject, $body, $header)) { Notification::set('success', __('A letter has been sent!', 'contact')); Request::redirect(Page::url()); } else { Notification::set('error', __('A Letter was not sent!', 'contact')); } } } else { die('csrf detected!'); } } return View::factory('contact/views/frontend/form') ->assign('name', $name) ->assign('phone', $phone) ->assign('email', $email) ->assign('body', $body) ->assign('errors', $errors) ->render(); } public static function display($recipient) { echo Contact::form($recipient); } }
Поле успешно добавилось. Номер можно ввести, и даже попытаться отправить НО!
При заполнении формы данными получаем такой результат:
А при отправке номер прыгает в поле "Имя" и данные из формы не посылаются на мыло. При этом внизу сообщается, что "Пустые поля обязательны для заполнения":
Заранее благодарен за любой совет и помощь!
Вы написали как вы ловите данные, а что вы с ними делаете дальше и что у вас прописано в полях вьюхи известно только вам и ГБ. Какой совет вы хотите получить?
Вы добавили телефон только в класс вывода, и повесили на него проверку ошибок, а также в шаблон вывода.
Однако в том же файле ДО шорткода и класса, вы не добавили соответсвующую верификацию поля ТЕЛЕФОН: его запись и отправку. По аналогии с Именем требовалось копировать ВСЕ возможные функции или строки в файле плагина.
Пробема с формой обратной связи.
Вставляю шорткод в контент на странице второго уровня - /blabla/feedback
После нажатия на кнопку Отправить меня переправляет на страницу /feedback - которой не существует, т.е. не учитывается что страница на втором уровне находится.
Faust
Однако в том же файле ДО шорткода и класса, вы не добавили соответсвующую верификацию поля ТЕЛЕФОН: его запись и отправку. По аналогии с Именем требовалось копировать ВСЕ возможные функции или строки в файле плагина.
До шорткода в этом файле присутствуют только эти строчки:
Я хочу разобраться сам, мне бы просто ткнуть носом, где именно прописывать функции телефона. Код имеющегося файла для меня не очевиден
Большое спасибо!
if (mail($recipient, $subject, $body, $header)) { Notification::set('success', __('A letter has been sent!', 'contact')); Request::redirect(Page::url()); } else { Notification::set('error', __('A Letter was not sent!', 'contact')); }
Не вижу здесь телефона
Конкретно в Этом файле требовалось добавить 4 раза:
*** Первый ***
$name = Request::post('contact_name'); $phone = Request::post('contact_phone'); $email = Request::post('contact_email'); $body = Request::post('contact_body');
*** Второй ***
if (Request::post('contact_name') == '' || Request::post('contact_phone') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') { $errors['contact_empty_fields'] = __('Empty required fields!', 'contact'); }
*** Третий ***
if (mail($recipient, $subject, $phone, $body, $header)) { Notification::set('success', __('A letter has been sent!', 'contact')); Request::redirect(Page::url()); } else { Notification::set('error', __('A Letter was not sent!', 'contact')); }
*** Четвертый ***
return View::factory('contact/views/frontend/form') ->assign('name', $name) ->assign('phone', $phone) ->assign('email', $email) ->assign('body', $body) ->assign('errors', $errors) ->render();
P.S. А все же 5 сам пропустил
$recipient = $recipient; $subject = $name; $phone = $phone; $header = "From: ". $name . " \r\n";
А без каких-либо проверок реально написать?
Ну телефон вы ввели уже.
if (Request::post('contact_name') == '' || Request::post('contact_phone') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') { $errors['contact_empty_fields'] = __('Empty required fields!', 'contact'); }
Если отсюда исключите телефон, то проверка заполненного поля на него не потребуется (теоритически отправиться должен он и без проверки, нужно проверять)
а на счет файлов, очень не советую, без проверок вы открываете дыру в безопасности, зальют через него скрипт, что потом делать будите?
Faust, большое Вам человеческое спасибо. Я все именно так и сделал изначально, символ в символ с написанным Вами.
Но, не работает... "Пустые поля обязательны для заполнения". Причем, если телефонное поле убрать - то все отлично отправляет . Мне кажется, что поле не проходит проверку по каким-то критериям. Но ограничений по типу вводимых символов в форме нет! В чем тогда дело?..
UPD: Нашел свою ошибку в form.view.php, вместо
был
И тем не менее, письмо все равно не отправляет. Просто выдает ошибку.
UPD2: Еще выявлено, что отправка не реагирует на капчу. Можно ввести символы отличные от тех, что сгенерированы - и капча их примет.
UPD3: Капчу исправил, работает. Видимо при копипасте кода где-то кавычку убрало.
На данный момент ситуация следующая: письмо просто не отправляет.
На всякий пожарный вложу коды.
contact.plugin.php
*/ class Contact { public static function _shorcode($attributes) { return Contact::form($attributes['recipient']); } public static function form($recipient) { $name = Request::post('contact_name'); $phone = Request::post('contact_phone'); $email = Request::post('contact_email'); $body = Request::post('contact_body'); $errors = array(); if (Request::post('contact_submit')) { if (Security::check(Request::post('csrf'))) { if (Request::post('contact_name') == '' || Request::post('contact_phone') == '' || Request::post('contact_email') == '' || Request::post('contact_body') == '') { $errors['contact_empty_fields'] = __('Empty required fields!', 'contact'); } if ( ! Valid::email(Request::post('contact_email'))) { $errors['contact_email_not_valid'] = __('Email address is not valid!', 'contact'); } if (Option::get('captcha_installed') == 'true' && ! CryptCaptcha::check(Request::post('answer'))) { $errors['users_captcha_wrong'] = __('Captcha code is wrong', 'users'); } if (count($errors) == 0) { $recipient = $recipient; $subject = $name; $header = "From: ". $name . " \r\n"; if (mail($recipient, $subject, $phone, $body, $header)) { Notification::set('success', __('A letter has been sent!', 'contact')); Request::redirect(Page::url()); } else { Notification::set('error', __('A Letter was not sent!', 'contact')); } } } else { die('csrf detected!'); } } return View::factory('contact/views/frontend/form') ->assign('name', $name) ->assign('phone', $phone) ->assign('email', $email) ->assign('body', $body) ->assign('errors', $errors) ->render(); } public static function display($recipient) { echo Contact::form($recipient); } }
form.view.php
На данный момент ситуация следующая: письмо просто не отправляет.
Откуда отправляете если с localhost то у вас скорее всего не установлен sendmail и не настроены данные для SMTP. Если с хостинга то там скорее всего отключена функция mail. Попробуйте hostinger.ru у них точно работает.
NBro, с хостинга все отправляется, в случае, если отключить поле ввода телефонного номера. То есть, плагин функционирует нормально до того момента, как в него внедряю ввод телефона
Форум работает на PunBB, при поддержке Informer Technologies, Inc