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 ) был описан простой способ прикрепления файлов к сообщению.
Я смог разобраться в форме и языковом файле, но нужно же, чтобы все работало:
<?php echo (Form::hidden('csrf', Security::token())); ?>
<label><?php echo __('Name', 'contact'); ?></label>
<input type="text" name="contact_name" class="input-xlarge" value="<?php echo $name; ?>" /><br />
<label><?php echo __('Email', 'contact'); ?></label>
<input type="text" name="contact_email" class="input-xlarge" value="<?php echo $email; ?>" /><br />
<label><?php echo __('Phone', 'contact'); ?></label>
<input type="text" name="contact_email" class="input-xlarge" value="<?php echo $phone; ?>" /><br />
<label><?php echo __('Anketa', 'contact'); ?></label>
<input type="file" name="cffile" />Что нужно дописать в файле плагина, чтобы все заработало?
С телефоном просто.
Идете в 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: <?php Contact::display('admin@site.org'); ?>
*/
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 . " <" . $email . ">\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
Однако в том же файле ДО шорткода и класса, вы не добавили соответсвующую верификацию поля ТЕЛЕФОН: его запись и отправку. По аналогии с Именем требовалось копировать ВСЕ возможные функции или строки в файле плагина.
До шорткода в этом файле присутствуют только эти строчки:
<?php
/**
* Contact plugin
*
* @package Monstra
* @subpackage Plugins
* @author Romanenko Sergey / Awilum
* @copyright 2012 Romanenko Sergey / Awilum
* @version 1.1.0
*
*/
// Register plugin
Plugin::register( __FILE__,
__('Contact', 'contact'),
__('Contact plugin for Monstra', 'contact'),
'1.1.0',
'Awilum',
'http://monstra.org/');Я хочу разобраться сам, мне бы просто ткнуть носом, где именно прописывать функции телефона. Код имеющегося файла для меня не очевиден ![]()
Большое спасибо!
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 . " <" . $email . ">\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, вместо
<p><input type="text" name="contact_phone" class="form_contacts" value="<?php echo $phone; ?>" /></p>
был
<p><input type="text" name="contact_name" class="form_contacts" value="<?php echo $phone; ?>" /></p>
И тем не менее, письмо все равно не отправляет. Просто выдает ошибку.
UPD2: Еще выявлено, что отправка не реагирует на капчу. Можно ввести символы отличные от тех, что сгенерированы - и капча их примет.
UPD3: Капчу исправил, работает. Видимо при копипасте кода где-то кавычку убрало.
На данный момент ситуация следующая: письмо просто не отправляет.
На всякий пожарный вложу коды.
contact.plugin.php
<?php
/**
* Contact plugin
*
* @package Monstra
* @subpackage Plugins
* @author Romanenko Sergey / Awilum
* @copyright 2012 Romanenko Sergey / Awilum
* @version 1.1.0
*
*/
// Register plugin
Plugin::register( __FILE__,
__('Contact', 'contact'),
__('Contact plugin for Monstra', 'contact'),
'1.1.0',
'Awilum',
'http://monstra.org/');
/**
* Shorcode: {contact recipient="admin@site.org"}
*/
Shortcode::add('contact', 'Contact::_shorcode');
/**
* Usage: <?php Contact::display('admin@site.org'); ?>
*/
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 . " <" . $email . ">\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
<h2><?php if (Notification::get('success')) Alert::success(Notification::get('success')); ?></h2>
<h4><?php if (Notification::get('error')) Alert::error(Notification::get('error')); ?></h4>
<br />
<form method="post">
<?php echo (Form::hidden('csrf', Security::token())); ?>
<label><?php echo __('Name', 'contact'); ?></label>
<p><input type="text" name="contact_name" class="form_contacts" value="<?php echo $name; ?>" /></p>
<label><?php echo __('Phone', 'contact'); ?></label>
<p><input type="text" name="contact_phone" class="form_contacts" value="<?php echo $phone; ?>" /></p>
<label><?php echo __('Email', 'contact'); ?></label>
<p><input type="text" name="contact_email" class="form_contacts" value="<?php echo $email; ?>" /></p>
<label><?php echo __('Message', 'contact'); ?></label>
<p><textarea class="form_message" rows="10" name="contact_body"><?php echo $body; ?></textarea><br /></p>
<?php if (Option::get('captcha_installed') == 'true') { ?>
<label><?php echo __('Captcha', 'users'); ?><label>
<input type="text" name="answer"><?php if (isset($errors['captcha_wrong'])) echo Html::nbsp(3).'<span class="error">'.$errors['captcha_wrong'].'</span>'; ?>
<?php CryptCaptcha::draw(); ?><?php } ?><br />
<?php if (count($errors) > 0) { ?>
<ul>
<?php foreach($errors as $error) { ?>
<li><?php echo $error; ?></li>
<?php } ?>
</ul>
<?php } ?>
<input type="submit" class="btn" value="<?php echo __('Send', 'contact'); ?>" name="contact_submit"/>
<p><br /></p>
<p><br /></p>
</form>На данный момент ситуация следующая: письмо просто не отправляет.
Откуда отправляете если с localhost то у вас скорее всего не установлен sendmail и не настроены данные для SMTP. Если с хостинга то там скорее всего отключена функция mail. Попробуйте hostinger.ru у них точно работает.
NBro, с хостинга все отправляется, в случае, если отключить поле ввода телефонного номера. То есть, плагин функционирует нормально до того момента, как в него внедряю ввод телефона ![]()
Форум работает на PunBB, при поддержке Informer Technologies, Inc