Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.71/135: Рейтинг темы: голосов - 135, средняя оценка - 4.71
4 / 4 / 1
Регистрация: 04.11.2012
Сообщений: 72
1

Вывод уведомления после отправки сообщения

08.08.2014, 12:26. Просмотров 28295. Ответов 21
Метки нет (Все метки)

Всем привет!
Имеется форма для отправки сообщений на эл. почту. Она работает. Но после отправки мне надо сделать, чтобы на странице появлялся скрытый блок div , который содержит информацию о том, что сообщений успешно отправлено.
Подскажите, что нужно сделать, чтобы после отправки этот блок выскакивал по центру?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2014, 12:26
Ответы с готовыми решениями:

Переадресация после отправки сообщения, PHP
Здравствуйте форумчане. В PHP новичек. Отправляю сообщение с прикрепленными файлами. После...

Переадресация на страницу после отправки сообщения
Отправляю сообщение на PHP все норм. Но после(через секунд 5) мне нужно сделать переадресацию на...

Автоматический возврат на страницу после отправки сообщения с сайта
Здравствуйте. Пожалуйста, подскажите как дописать код, чтобы после успешной отправки сообщения с...

Переадресация после отправки сообщения формы обратной связи
Есть форма обратной связи, задуманно что после отправки сообщения пользователя перекидывает на...

21
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
08.08.2014, 12:56 2
использовать какой нибудь JQuery плагин для модальных окон

PHP
1
2
3
if ($send) {
    echo '<div style="margin: 0 auto;">Скрытый</div>';
}
или вот так:
HTML5
1
2
3
4
5
6
7
<script type="text/javascript">
<div id="modal" style="позиционирование по цетру; display: none;">Скрытый блок</div>
function modal() {
    document.getElementById('modal').style.display = "block";
}
</script>
<input type="submit" value="Отправить" onClick="modal();"/>
0
73 / 69 / 40
Регистрация: 31.03.2014
Сообщений: 298
08.08.2014, 13:01 3
Vlad708, можно использовать для этого javascript
PHP
1
echo '<script>alert("Сообщение отправлено")</script>';
но если как ты хочешь, то можешь сделать тоже jquery, присвоив новые стили своему блоку после успешной отправки
Javascript
1
$('.container-message').css({position:'absulute',left:'50%',right:'50%',display:'block'});
0
4 / 4 / 1
Регистрация: 04.11.2012
Сообщений: 72
08.08.2014, 13:08  [ТС] 4
Сделал по вашему методу, но у меня всё равно уведомление не показывается.
Плюс еще идет после отправки запроса, открывается пустая страница mail.php (там где происходит организация кода отправки данных на почту).
А мне вот это совсем не надо. Хотелось бы по нажатию, увидеть окно уведомления и получить письмо на почту.
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
08.08.2014, 13:12 5
Я делаю так
Кликните здесь для просмотра всего текста

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
Прослушиваем события, наблюдаем.
var ev = new SCHEME();
ev.item = '#sendMail';
ev.url = '/mail.php';
ev.data = function() 
        { 
        return {action : 'mail'}
        };
 
var my_ui = [ ev ];
 
U.watch(my_ui);
Чистая разметка
HTML5
1
2
3
...
<input type='button' id='sendMail' value='Send Message' />
...
Отправляем команды в JS контроллер из PHP контроллера.
Что-то вроде SAJAX
PHP
1
2
3
4
5
6
7
8
$server = new LazyJS();
$server->addCommand(
        $server->insertNodes(
            array(
                'list' => array('where'=>'after', 
                'content'=>'<div class="notify">Отправлено</div>'),                                       
                )));                                    
$server->sendResponce();
0
73 / 69 / 40
Регистрация: 31.03.2014
Сообщений: 298
08.08.2014, 13:18 6
Vlad708, повесь событие на кнопку
Javascript
1
2
3
$('.button').on('click', function(){
    $('.container-message').css({position:'absulute',left:'50%',right:'50%',display:'block'});
});
.button и .container-message - классы твоих объектов. естественно они у тебя свои
0
761 / 430 / 92
Регистрация: 24.10.2012
Сообщений: 3,138
Записей в блоге: 5
08.08.2014, 13:22 7
Добавьте метку в шаблон составления письма {SEND_EMAIL_COMPLETTE}. Когда пользователь составляет письмо - эта метка заменяется пустой строкой. Когда письмо отправлено (используется шаблон с полями ввода для отправки сообщения?) заменяете метку сообщением об успешной отправке сообщения.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16813 / 6692 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
08.08.2014, 13:25 8
а что, без JS обойтись нельзя?
PHP
1
2
3
4
5
6
7
8
9
10
<?php
session_start();
.....................
....................
if(сообщение отправлено)
{
    $_SESSION['sended'] = true;
    header('Location: /file.php'); //редирект на страницу, где хотите отобразить сообщение
    exit;
}
там, куда выполняете редирект:
PHP
1
2
3
4
5
<?php
session_start();
if(isset($_SESSION['sended']) && $_SESSION['sended'])) : ?>
    <div class="alert-success">Thanks! .........</div>
<?php $_SESSION['sended'] = null; endif; ?>
0
73 / 69 / 40
Регистрация: 31.03.2014
Сообщений: 298
08.08.2014, 13:33 9
KOPOJI, тут нет ни слова о редиректе. к тому же я еще не встречал, чтоб где-то практиковался вывод сообщения в модальном окне после редиректа
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
08.08.2014, 13:39 10
Javascript
1
2
3
$('.button').on('click', function(){
    $('.container-message').css({position:'absulute',left:'50%',right:'50%',display:'block'});
});
не вижу связи между JS и PHP...

Этот код будет исполняться по щелчку. CSS можно заранее прописать.
Запроса к серверу не увидел. И проверку ответа сервера тоже.

Где гарантия, что сообщение отправлено?

Сферическая mail в PHP может иметь 2 значения FALSE и TRUE.

Vlad708, почитайте про AJAX и JQUERY, который запросы к серверу без перезагрузки всей
страницы позволяет писать.

Кликните здесь для просмотра всего текста

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var data = {
    name: $("#form_name").val(),
    email: $("#form_email").val(),
    message: $("#msg_text").val()
};
$.ajax({
    type: "POST",
    url: "email.php",
    data: data,
    success: function(data){
    // в data отправили статус операции
    // если письмо отправлено успешно, то
        $('.notify').html('какое-то там сообщение').show();
    }
});


Это не по PHP вопрос, а по JS/AJAX больше.

Добавлено через 2 минуты
Цитата Сообщение от Sombrero Посмотреть сообщение
KOPOJI, тут нет ни слова о редиректе. к тому же я еще не встречал, чтоб где-то практиковался вывод сообщения в модальном окне после редиректа
KOPOJI, а зачем редирект делать? тоже не встречал такого
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16813 / 6692 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
08.08.2014, 13:41 11
1. Редирект можно заменить рефрешем страницы
2. Видимо, вы не встречали такого просто, это частая практика. К примеру, авторизация на этом форуме - после введения данных выполняется редирект. Погуглите также "flash сообщения yii/bootstrap/rails/etc". Самая частая причина подобных действий - исключение повторной отправки данных. При отправке письма на почту в основном используется метод передачи данных POST - нажмите F5 и вместо одного письма уйдет два (да, большинство браузеров сообщают о том, что данные будут переданы повторно, но все же). Редирект исключает такое.
Особенно это проявляется если письмо отправляется асинхронно - человек может подумать, что он просто не нажал кнопку и нажать еще несколько раз == несколько сообщений вместо одного.

Добавлено через 1 минуту
Цитата Сообщение от Sombrero Посмотреть сообщение
вывод сообщения в модальном окне
о модальном окне я, кстати, не говорил ни слова.
2
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
08.08.2014, 13:42 12
KOPOJI, спасибо Вам за объяснение
0
73 / 69 / 40
Регистрация: 31.03.2014
Сообщений: 298
08.08.2014, 13:45 13
artnazarov, я отталкивался от желаний самого автора выводить сообщение по нажатию кнопки. ваш совет по поводу использования ajax естественно является наиболее правильным, но я не брал во внимания аспект этой задачи, мы ведь не видим всей его реализации. может быть он и пользуется ajax
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
08.08.2014, 14:53 14
KOPOJI, редирект это основной способ защиты от повторной передачи данных?
А как же что-то вроде
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<? 
 if(!empty($_POST['code']) && $_POST['code']==$_SESSION['code']) 
 { 
   // Проверка остальных данных 
  ...  
  // Если проверка успешна - Запись данных 
  ... 
  //Если все успешно прошло 
  $_SESSION['code'] = rand(1000,9999); 
 } 
// или так?
if (isset($_POST['rand'])) {
if ($_POST['rand']==$_SESSION['rand']) {
unset($_POST);
}
else {
$_SESSION['rand'] = $_POST['rand'];
}
}
rand — hidden поле со случайно сгенерированным значением.
Там схему накидали. В случае Ajax я так понимаю что будет: POST уходит у нас на обработчик данных, мы редиректим на страницу результата (добавляем случайный параметр для борьбы с кэшированием), выставляем нужный header и отправляем данные в js. Обработчик в один файл, представление выплевываем в нужном формате по другому маршруту. Т.е. в ajax понадобится следовать по редиректам (накопал 1 и 2) Получается Post-redirect-get Интересная тема, по JS накидали вариантов. Пока все выглядит так, что какой-то способ должен быть проще от повторных отправок оградится. Озадачился.
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16813 / 6692 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
08.08.2014, 15:38 15
Цитата Сообщение от artnazarov Посмотреть сообщение
редирект это основной способ защиты
это самый простой. Помимо всего, очищаются поля формы, что уменьшает возможность отправки формы пользователем повторно, "вручную". Также, не обязательно использование JS. Если исключить JS, то половину вариантов можно смело убрать (т.к. они основаны на нем). Ну и, помимо всего, подумайте, почему во многих фреймворках используют это по дефолту (а фреймворк - есть ни что иное, как набор часто используемого).

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от artnazarov Посмотреть сообщение
PHP
1
if(!empty($_POST['code'])
$_POST['code'] проверили, а $_SESSION['code'] проверять не надо?)



Добавлено через 1 минуту
Цитата Сообщение от artnazarov Посмотреть сообщение
PHP
1
unset($_POST);
не поможет. При повторной отправке он опять "появится"
0
29 / 8 / 2
Регистрация: 22.10.2013
Сообщений: 442
11.02.2016, 20:59 16
У меня отправляется письмо с редиректом на форму:

PHP
1
2
3
4
5
6
7
8
9
if(isset($_POST['submitted']))
{
   if($formproc->ProcessForm())
   { 
       
    $formproc->RedirectToURL("spes-mail.php");
 
   }
}
Также мне нужно: вывод уведомления после отправки сообщения.
Скрипт здесь: http://www.html-form-guide.com... hment.html

Полный код формы:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<?PHP
/*
    Contact Form from HTML Form Guide
    This program is free software published under the
    terms of the GNU Lesser General Public License.
    See this page for more info:
    http://www.html-form-guide.com/contact-form/contact-form-attachment.html
*/
require_once("./include/fgcontactform.php");
require_once("./include/captcha-creator.php");
 
$formproc = new FGContactForm();
$captcha = new FGCaptchaCreator('scaptcha');
 
$formproc->EnableCaptcha($captcha);
 
//1. Add your email address here.
//You can add more than one receipients.
$formproc->AddRecipient('info@mail.ru'); //<<---Put your email address here
 
 
//2. For better security. Get a random tring from this link: http://tinyurl.com/randstr
// and put it here
$formproc->SetFormRandomKey('XsHVufPpgD9Epwl');
 
$formproc->AddFileUploadField('photo','jpg,jpeg,gif,png,bmp',2024);
$formproc->AddFileUploadField('resume','doc,docx,pdf,txt',2024);
 
if(isset($_POST['submitted']))
{
   if($formproc->ProcessForm())
   {
      $formproc->RedirectToURL("contactform.php");
    //    $formproc->RedirectToURL("spes-mail.php");
        echo '<p style="color: #008000;">Письмо отправлено</p>';
   }
}
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
      <meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
      <title>Contact us</title>
      <link rel="STYLESHEET" type="text/css" href="contact.css" />
      <script type='text/javascript' src='scripts/gen_validatorv31.js'></script>
      <script type='text/javascript' src='scripts/fg_captcha_validator.js'></script>
 <style type="text/css">
 label {display:inline-block; width:150px;} 
</style>     
</head>
<body>
 
<!-- Form Code Start -->
<form id='contactus' action='<?php echo $formproc->GetSelfScript(); ?>' method='post' enctype="multipart/form-data" accept-charset='UTF-8'>
 
<fieldset ><legend>Форма 1</legend>
 
<input type='hidden' name='submitted' id='submitted' value='1'>
<input type='hidden' name='<?php echo $formproc->GetFormIDInputName(); ?>' value='<?php echo $formproc->GetFormIDInputValue(); ?>'>
<input type='text'  class='spmhidip' style="display:none;" name='<?php echo $formproc->GetSpamTrapInputName(); ?>'>
 
 
<div><span class='error'><?php echo $formproc->GetErrorMessage(); ?></span></div>
<div class='container'>
<!-- Ф.И.О. ставим на форме-->
    <label for='name'>Ф.И.О. *: </label>
    <input type='text' name='name' id='name' value='<?php echo $formproc->SafeDisplay('name') ?>' maxlength="50" style="width: 300px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;"><br>
    <span id='contactus_name_errorloc' class='error'></span>
</div>
<!-- E-mail ставим на форме-->
<div class='container'>
    <label for='email' >E-mail *:</label>
    <input type='text' name='email' id='email' value='<?php echo $formproc->SafeDisplay('email') ?>' maxlength="50" style="width: 300px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;"><br>
    <span id='contactus_email_errorloc' class='error'></span>
</div>
 
<!-- Населенный пункт ставим на форме -->
<div class='container'>
    <label for='gorod' >Населенный пункт *:</label>
    <input type='text' name='gorod' id='gorod' value='<?php echo $formproc->SafeDisplay('email') ?>' maxlength="50" style="width: 300px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;"><br>
    <span id='contactus_gorod_errorloc' class='error'></span>
</div>
<!-- Телефон ставим на форме -->
<div class='container'>
    <label for='phone' >Телефон *:</label>
    <input type='text' name='phone' id='phone' value='<?php echo $formproc->SafeDisplay('email') ?>' maxlength="50" style="width: 300px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;"><br>
    <span id='contactus_phone_errorloc' class='error'></span>
</div>
 
 
<div class='container'>
    <label for='message' style="margin-top:-5%; vertical-align:middle;">О себе, методы и приёмы в работе просим писать больше: *</label>
    <span id='contactus_message_errorloc' class='error'></span>
    <textarea name='message' id='message' style="width: 300px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;" rows=10><?php echo $formproc->SafeDisplay('message') ?></textarea>
</div>
<div class='container'>
    <label for='photo' >Файл 1:</label>
    <input type="file" name='photo' id='photo'><br>
    <span id='contactus_photo_errorloc' class='error'></span>
</div>
<div class='container'>
    <label for='photo' >Файл 2:</label>
    <input type="file" name='resume' id='resume'><br>
    <span id='contactus_resume_errorloc' class='error'></span>
</div>
<div class='container'>
    <div><img alt='Captcha image' src='show-captcha.php?rand=1' id='scaptcha_img'></div>
    <label for='scaptcha' >Введите код:</label>
    <input type='text' name='scaptcha' id='scaptcha' maxlength="10"> <a href='javascript: refresh_captcha_img();'>Обновить код</a>
    <span id='contactus_scaptcha_errorloc' class='error'></span>
</div>
 
 
<div class='container'>
    <input type='submit' name='Submit' value='Отправить'>
</div>
 
</fieldset>
</form>
<!-- client-side Form Validations:
Uses the excellent form validation script from JavaScript-coder.com-->
 
<script type='text/javascript'>
// <![CDATA[
 
    var frmvalidator  = new Validator("contactus");
    frmvalidator.EnableOnPageErrorDisplay();
    frmvalidator.EnableMsgsTogether();
    frmvalidator.addValidation("name","req","Please provide your name");
 
    frmvalidator.addValidation("email","req","Please provide your email address");
 
    frmvalidator.addValidation("email","email","Please provide a valid email address");
 
    frmvalidator.addValidation("message","maxlen=2048","The message is too long!(more than 2KB!)");
 
    frmvalidator.addValidation("photo","file_extn=jpg;jpeg;gif;png;bmp","Upload images only. Supported file types are: jpg,gif,png,bmp");
 
    frmvalidator.addValidation("scaptcha","req","Please enter the code in the image above");
 
    document.forms['contactus'].scaptcha.validator
      = new FG_CaptchaValidator(document.forms['contactus'].scaptcha,
                    document.images['scaptcha_img']);
 
    function SCaptcha_Validate()
    {
        return document.forms['contactus'].scaptcha.validator.validate();
    }
 
    frmvalidator.setAddnlValidationFunction("SCaptcha_Validate");
 
    function refresh_captcha_img()
    {
        var img = document.images['scaptcha_img'];
        img.src = img.src.substring(0,img.src.lastIndexOf("?")) + "?rand="+Math.random()*1000;
    }
 
// ]]>
</script>
 
 
</body>
</html>
0
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 6
29.06.2016, 18:12 17
Помогите! Не выводится сообщение после отправки заполненной формы. Языковой файл:
SEND A COPY OF THIS MESSAGE TO YOUR OWN ADDRESS="Отправить копию этого сообщения на ваш адрес"
COM_MAILTO_EMAIL_SENT="Письмо было успешно отправлено."
COM_QF_NOT_ALL="не все поля заполнены"

Но после отправки пустое окно....
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16813 / 6692 / 879
Регистрация: 12.06.2012
Сообщений: 19,968
30.06.2016, 10:34 18
и мы должны угадать на основе этих пару слов, как вы выводите (и выводите ли) эти сообщения и что там надо исправить?
В таком случае, ошибка на 17 строчке.
0
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 6
03.07.2016, 23:31 19
Да нет, я ж просто как бы еще учусь.... А так как сайт у меня стоит на Джумле, и все файлы раскиданы по папкам, где я плохо ориентируюсь, потому и не скинула больше ничего. В общем мне понятно что написаного мной мало для помощи мне. Поищу больше информации.

Добавлено через 12 минут
Вот PHP код:
Код
<?php
/**
* 
* 
* @license    GNU/GPL
*/

defined('_JEXEC') or die;
require_once JPATH_ADMINISTRATOR.'/components/com_quickform/helpers/quickform.php';

$reqForm=JRequest::getInt('formreq', NULL);
if($reqForm){
	header ("Content-type: text/html; charset=utf-8");
	require_once(JPATH_ADMINISTRATOR."/components/com_quickform/helpers/form.php");
	
	$contents = new QuickForm((int)$reqForm);
	echo $contents->ajaxHTML();
	exit;
}
	
JRequest::checkToken() or jexit( 'Invalid Token' );
require_once JPATH_COMPONENT.'/helpers/class.php';

if(JRequest::getCmd( 'task')!='form')return;
if(!JRequest::getInt('id', NULL))return;

$post = JRequest::get('post');
$db		= JFactory::getDBO();
$user = JFactory::getUser();

$qfCheck = new qfCheck;
$row = $qfCheck->getClonerQuery((int)$post['id']);


$groups	= $user->getAuthorisedViewLevels();
if(!in_array($row->access, $groups))return;

$start=(float)str_replace(',','.',$row->price);
$sum=$GLOBALS['qfSum']=0;
$c=$row->calc?1:0;
$params=json_decode($row->params, TRUE);

if(!$tmpl=$params['tmpl']) $tmpl='default';
$html =$qfCheck->getFilds($row->cod,$c, $post['id'],$tmpl) ;

$res=NULL;
if($c){
	$arr=explode(';',$GLOBALS['qfSum']);
	if(!$params['formul']){
		$sum=$start;
		foreach($arr as $ar){
			if($ar{0}=='*')$sum*=substr($ar, 1);
			elseif($ar{0}=='=')$sum=substr($ar, 1);
			elseif($ar{0}=='-')$sum-=substr($ar, 1);
			elseif($ar{0}=='+')$sum+=substr($ar, 1);
		}
		$res=$sum;
	}
	elseif($params['formul']==1){
		foreach($arr as $ar){
			if($ar{0}=='*')$start*=substr($ar, 1);
			elseif($ar{0}=='=')$start=substr($ar, 1);
			elseif($ar{0}=='-')$sum-=substr($ar, 1);
			elseif($ar{0}=='+')$sum+=substr($ar, 1);
		}
		$res=$start+$sum;
	}
	elseif($params['formul']==2){
		$sum=$start;
		$mul=1;
		foreach($arr as $ar){
			if($ar{0}=='*')$mul*=substr($ar, 1);
			elseif($ar{0}=='=')$sum=substr($ar, 1);
			elseif($ar{0}=='-')$sum-=substr($ar, 1);
			elseif($ar{0}=='+')$sum+=substr($ar, 1);
		}
		$res=$sum*$mul;
	}
}

include JPATH_COMPONENT.'/helpers/mailtmpl/'.$tmpl.'.php';


if(strpos($mailHtml, '_claster')) $mailHtml = preg_replace("/(_claster)(.+?)(claster_)/e", "qfCheck::clasterreplace('\\2',".$c.")", $mailHtml);
if($tmpl=='json'){
	$mailHtml= preg_replace('/(<td style=[^>]*?>)([^<]*?)(<\/td><\/tr>)/', '\\1\\2\\3,<br/>', $mailHtml);
	$mailHtml= preg_replace('/(<td style=[^>]*?>)([^<]*?)(<\/td>)/', '"\\2",', $mailHtml);
	$mailHtml= str_replace(array('<tr>','</tr>'), '', $mailHtml);
	$mailHtml= str_replace(',,', '', $mailHtml);
}


//echo $mailHtml;die;


$mailer = JFactory::getMailer();
$jAp = JFactory::getApplication();

$lsFromEmail = $jAp->getCfg('mailfrom');
$lsFromName  = $jAp->getCfg('fromname');
$lsFrom 	 = array($lsFromEmail, $lsFromName);

if($row->toemail){
	$arr=explode(',',$row->toemail);
	foreach($arr as $ar){
		$mailer->addRecipient(trim($ar));
	}
}
else $mailer->addRecipient($lsFromEmail);

if($post['back'])$mailer->addRecipient($post['email']);

$mailer->setSender($lsFrom);
$mailer->addReplyTo($lsFrom);
$mailer->setSubject(JText::_('MESSAGE').' '.$_SERVER['HTTP_HOST']);
$mailer->setBody($mailHtml);
$mailer->isHTML(true);

$files = $jAp->input->files->get( 'qffile', array(), 'array' );
foreach ( $files as $file ) {
	$mailer->addAttachment( $file['tmp_name'], $file['name'] ); 
}


if ($mailer->Send() !== true)$msg=JText::_('JERROR_LAYOUT_ERROR_HAS_OCCURRED_WHILE_PROCESSING_YOUR_REQUEST');
else {
	$msg=JText::_('COM_MAILTO_EMAIL_SENT');
	
	$fields = array(
		'st_formid' => (int)$row->id, 
		'st_date' => gmdate('Y-m-d H:i:s'),
		'st_form' => str_replace("'","\'",$mailHtml), 
		'st_title' => $row->title, 
		'st_cur' => $row->cur, 
		'st_price' => $start+$sum, 
		'st_ip' => $qfCheck->getip(), 
		'params' => '', 
		'st_user' => $user->get('id'), 
		'st_status' => 0
	);
	foreach($fields as $key=>$value){
		$v_key.=",$key";
		$v_value.=",'$value'";
	}
	$v_key=substr($v_key, 1);
	$v_value=substr($v_value, 1);

	$db->setQuery("INSERT INTO `#__quickform_ps` ($v_key) VALUES ($v_value)");
	$db->query();
	
	$db->setQuery("UPDATE `#__quickform` SET hits = ( hits + 1 ) WHERE id = ".(int)$row->id);
	$db->query();
}
0
0 / 0 / 0
Регистрация: 29.06.2016
Сообщений: 6
03.07.2016, 23:32 20
А вот JS:
Код
/* @Copyright ((c) bigemot.ru
v 3.4.1
 */
window.addEvent('domready', function() {
	var int='qfrut',h={};
	$$('.qfblock form').each(function(el){
		h[el]=el.qfcod.value;
		if(el.start){
			el.addEvent('change', function() {
				qfsumBox(el,int,h[el]);
			});
		}
		qfGetReq(el,int,h[el]);
		cloneClass(el);
		qfRestorForm(el);
	});
});



function qfEvents(f) {
	if(!f.option)return;
	f.getElements('input[name="qfctext[]"]').each(function(el){
		var Num=function(){
			el.value=strNum(el.value);
		}
		el.addEvents({
			'keyup': Num,
			'change': Num
		});
	});
	
//	f.getElements('input[name="qftext[]"]').each(function(el){
//		if(el.previousSibling.innerHTML=='И. Фамилия'){
//			var Num=function(){
//				el.value=el.value.toUpperCase();
//			}
//			el.addEvents({
//				'keyup': Num,
//				'change': Num
//			});
//		}
//	});
	
}
function strNum(x) {
	var r = ""; 
	for(var n=0; n<x.length; n++) {
		var base= x.charAt(n);
		if ((base!=' '&&isNaN(base)==false)||base==','||base=='.')
			r = r + base;
	}
	return r.replace(/,/g,".");
}

function cloneClass(x) {
	if (x)x.getElements('.qfcloneone').each(function(el){
		if (el.className.charAt(15)<2)return;
		var i=1; for (var childItem in el.childNodes){
			if(!(['qfclonep', 'qfclonem', 'qfclonesum'].join('').indexOf(el.childNodes[childItem].className)>=0)
			&& typeof el.childNodes[childItem]=='object')el.childNodes[childItem].addClass('qfc_'+i);i++;
		}
	});
}
function qfsumBox(form,c,h) {
	qfEvents(form);
	if(!form.start)return;
	var start = parseFloat(form.start.value.replace(",",".")),q='qfbig',add,qq=1;
	var el=form.elements;c=c.slice(2,4);
	oldprice=q.slice(2)+(qq?'em':'');clflags(form);
	if(form.formul.value==1)price=qfCalculator1(el,start);
	else if(form.formul.value==2)price=qfCalculator2(el,start);
	else price=qfCalculator(el,start);
	oldprice+='key[ot.'.slice(4);
	if(parseInt(price)!=(price*1))price=parseFloat(price).toFixed(2);
	form.getElement('.qfpriceinner').innerHTML=qfstrPrice(price,c,h);
}

function qfstrPrice(x,c,h) {
	x = x.toString();var qfstr=oldprice+c,q='.qflin'+'k a',y = x.charAt(0);
	var qf=$$(q).length?($$(q)[0].href.slice(7,17)==qfstr):0,qf_h=h;
	for(var n=1; n<x.length; n++) {
		if (Math.ceil((x.length-n)/3) == (x.length-n)/3) y = y + " ";
		y =(!$$(q).length||!$$(q)[0].rel)? y + x.charAt(n):'';
	}
	return((!qf&&''+h!=qfel())?'':y.replace(" .",","));
}

function checClon(f) {
		var els=f.getElements('.qfclone');
		if(els.length<1) return;
		var str='';
		els.each(function(x){
			var ferst=x.childNodes[0],n=1;
			while(ferst.nextSibling&&'qfcloneone'.indexOf(ferst.nextSibling.className)){
				ferst=ferst.nextSibling;
				n++;
			}
			str+=','+n;
		});
		var fl=document.createElement("input");
		fl.type = 'hidden';fl.name ='clonStr';fl.value =str.slice(1);
		f.appendChild(fl);
	
		els=f.getElements('.qflong');
		if(els.length<1) return;
		n=0;str='';
		while(n<els.length) {
			var hits=els[n].parentNode.getElements('.qflong').length;
			str+=','+hits;
			n+=hits;
		}
		var fl=document.createElement("input");
		fl.type = 'hidden';fl.name ='qffl';fl.value =str.slice(1);
		f.appendChild(fl);
}
function qfsubmit(x) {
	var a=1,f=x.form;
	f.getElements('.validat').each(function(el){
		if(!checkfild(el)){qfanimat(el);a=null;}
	});
	if(a)
	{
		checClon(f);
		var ch=document.createElement("input");
		ch.type = 'hidden';ch.name =qfCh().slice(1);ch.value =1;
		f.appendChild(ch);f.submit();
	}
	else{
		var div = document.createElement("div");
		div.className='alertvalidat';
		div.innerHTML=allthefieldsare;
		f.getElement('.qfsubmit').insertBefore(div, f.getElement('.qfsubmit label'));
		setTimeout(function(){animHtml(div,'')}, 3000);
	}
}

function checkfild(el) {
	if(!el.value) return null;
	else if(el.name=='email[]'&&!isValidEmail(el.value)) return null;
	else if(el.type === 'checkbox'&&!el.checked) return null;
	return true;
}

function qfanimat(el) {
	el.getParent().setStyles({'color':'#F00','font-weight':'700'});
	if(typeof(Fx.Morph)=='function'){
		new Fx.Morph(el.getParent(), {duration: 3000}).start({'color': '#666'}).chain(function(){
			el.addEvent('keyup', function() {
				if(checkfild(el))
					el.getParent().setStyle('font-weight','normal');
				else el.getParent().setStyle('font-weight','700');
			});
			el.addEvent('click', function() {
				if(checkfild(el))
					el.getParent().setStyle('font-weight','normal');
				else el.getParent().setStyle('font-weight','700');
			});
		});
		var nsw=function() {
			var effect = new Fx.Morph(el.getParent().getElement('label'), {duration: 1500});
			effect.start({'opacity': 0.1}).chain(function() {
				effect.start({'opacity': 1});
			});
			if(el.getParent().style.fontWeight=='700') var timeout_id = setTimeout(nsw, 3000);
			el.form.getElement('.qfsubmit').addEvent('click', function() {clearTimeout(timeout_id);});
		 }
		setTimeout(nsw, 3000);
	}
}



function isValidEmail (email, strict){
 if ( !strict ) email = email.replace(/^\s+|\s+$/g, '');
 return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);
}

function qfel() {
	var ue = function (inArr){
		var uniHash={}, outArr=[], i=inArr.length;
		while(i--) uniHash[inArr[i]+'??']=i;
		for(i in uniHash) outArr.push(i.replace('??',''));
		return outArr
	}
	var a=(ue(window.location.hostname.replace(/[w|.|-]/g,'').split(''))),c=[],i=a.length;
	while(i--)
		c[i]=a[i]+a[a.length-i-1];
	return c.join('').slice(a.length);
}
//Object.prototype.clone2 = function(obj) {
//    var newObj = (this instanceof Array) ? [] : {};
//    for (i in this)  {
//
//        if (obj[i] && typeof obj[i] == "object")
//            newObj[i] = Object.clone(obj[i]);
//        else 
//            newObj[i] = obj[i]
//    } 
//    return newObj;
//};
var tmplRadioNum=0;
function qfclonep(x,m){
	x=x.parentNode;
	if(m&&m<=x.parentNode.parentNode.getElements('.qfcloneone').length)return;
	var xclone=x.parentNode.clone();
	var dr=xclone.getElements('input[type="radio"]');
	dr.each(function(el){
		el.name='dubl'+tmplRadioNum+el.name;
	});
	tmplRadioNum++;
	
	var d=insertAfter(xclone, x.parentNode);
	
	dr=d.getElements('input[type="radio"]');
	var i=[];
	dr.each(function(el){
		if(!i[el.name])el.checked='checked';
		i[el.name]=1;
	});
	
	
	var ds=d.getElements('select');
	ds.each(function(el){
		el.selectedIndex=0;
	});
	
	qfGetReq2(ds.concat(dr));
	showLabel(d);
	var z=d.getElement('label')
	qfsumBox(z.form,'htrut',z.form.qfcod.value);
//		animSum(d.getElement('.qfclonesum'));
}
function qfclonem(x){
	x=x.parentNode;
	var row = x.parentNode,clon=row.getParent('.qfclone');
	if(clon.getElements('.qfcloneone').length-row.getElements('.qfcloneone').length>1){
		animHtml(row,'');
	}
	var f=clon.getParent('form');
	qfsumBox(f,'htrut',f.qfcod.value);
	(function(){showLabel(clon.getElement('.qfcloneone'))}).delay(800);
}
function showLabel(x){
	var z=x.className.charAt(15),a=0;
	if(z<2)return;
	var divs=x.getParent().getElements('.len_'+z);
	divs.each(function(el){
		var leb=el.getElements('label');
		if(leb){
			if(a)leb.setStyle('height',0);
			else leb.setStyle('height','auto');
			a=1;
		}
	});
}
function noClon(x) {
	while(true){
		x=x.parentNode;
		if(x.className.indexOf('qflong')>0)return null;
		if(x.getElement('form'))return true;
	}
}
function clflags(form){
	form.getElements('.qfclone').setStyle('display','');
}
function getClasterSum(x) {
	var clon=x.parentNode.parentNode.parentNode;
	if(clon.style.display=='block')return 0;
	clon.setStyle('display','block');
	var clonSum=0;
	clon.getElements('.qfcloneone').each(function(el){
		var els=el.getElements('select').concat(el.getElements('input'));
		var price=qfCalculatorClone(els,0);
		if(parseInt(price)!=price)price=price.toFixed(2);
		clonSum+=price*1;
		el.getElement('.qfclonesum').innerHTML=qfstrPrice(price,'ot.ru',x.form.qfcod.value);
	});
	return clonSum;
}
//function animSum(d){
//	var old=x=d.innerHTML,i=30;
//	while(i--){(function(){
//		for(var n=0; n<=old.length; n++) {
//			if (isNaN(x[n])==false)x=x.replace(x[n],Math.floor(Math.random() *9));
//		}
//		d.innerHTML=x;
//	}).delay(100);}
//	(function(){d.innerHTML=old;}).delay(500);
//}


function qfGetReq(form,c,h){
	var el=form.elements,cn='.'+c.slice(2,4);
	var qf=$$('.qfli'+'nk a').length?($$('.qfli'+'nk a')[0].href):null,qf_h='ot'+cn;
	if(qf&&qf.slice(12,17)!=qf_h) animHtml(form,'');
	else if(!qf||qf.rel)h!=qfel()?animHtml(form,''):'';qfGetReq2(el);
	qfsumBox(form,c,h);
}
function qfGetReq2(el){
	for(var n=0; n<el.length; n++) {	
		if(el[n].type==='select-one'){qfGetReqEL(el[n],'s');el[n].addEvent('change', function(){
			qfGetReqEL(this,'s');});}
		else if(el[n].type === 'radio'){qfGetReqEL(el[n],'r');el[n].addEvent('change', function(){
			qfGetReqEL(this,'r');});}
		qfEvents(el[n]);
	}
}
function qfGetReqEL(el,t){
	if(t=='s'&&el.options[el.selectedIndex].className.length>6){
		var a=el.options[el.selectedIndex].className;
		var req=a.slice(a.indexOf("_")+1);
		qfReqInner(el,req);
	}else if(t=='r'&&el.className.length>6 && el.checked){
		req=el.className.slice(el.className.indexOf("_")+1);
		qfReqInner(el,req);
	}else if(el.getParent().getNext()&&el.getParent().getNext().className=='qfblockch'){
		if(t=='s')animHtml(el.getParent().getNext(),'');
		if(t=='r'&& el.checked)animHtml(el.getParent().getNext(),'');
	}
}
function qfReqInner(el,req){
	new Request({url: qfroot+'/index.php?option=com_quickform', onSuccess: function(html){
		if(el.getParent().getNext()&&el.getParent().getNext().className=='qfblockch')animHtml(el.getParent().getNext(),html);
		else {
			var div=document.createElement('div');
			div.className='qfblockch';
			insertAfter(div,el.getParent());
			animHtml(div,html);
		}
		qfsumBox(el.form,'htrul',el.form.qfcod.value);
		cloneClass(el.getParent('.qfcloneone'));
	}}).get({'formreq':req});
}
function insertAfter(elem, refElem) {
	return refElem.parentNode.insertBefore(elem, refElem.nextSibling);
}
function animHtml(el,html) {
	var f=el.getParent().getElement('label').form;
	if(html){
		el.innerHTML=html;
		if(typeof(Fx.Morph)=='function'){
			el.setStyles({'overflow':'hidden'});
			new Fx.Morph(el, {duration: 600}).start({'opacity': [0, 1]});
		}
		var s = el.getElements('select');qfGetReq2(s);
		var r = el.getElements('input[type="radio"]');qfGetReq2(r);
		qfRestorForm(f);
	}else{
		if(typeof(Fx.Morph)=='function')new Fx.Morph(el, {duration: 600}).start({'opacity': [0.6, 0]}).chain(function(){
			var f=el.getParent().getElement('label').form;
			el.parentNode.removeChild(el);
			qfsumBox(f,'htrul',f.qfcod.value);
			qfRestorForm(f);
		});
		else {el.parentNode.removeChild(el);qfRestorForm(f);}
	}
		
}
function getAdd(el) {
	var add;
	if(el.type==='select-one'){add=el.options[el.selectedIndex].value;add=add.slice(add.indexOf("_")+1);}
	else if(el.type === 'radio' && el.checked)add=el.value.slice(el.value.indexOf("_")+1);
	else if(el.type === 'checkbox' && el.checked)add=el.value.slice(el.value.indexOf("_")+1);
	else if(el.name === 'qfctext[]'){
			el.removeEvents('keyup');
			el.addEvent('keyup', function() {
				qfsumBox(el.form,'htrul',el.form.qfcod.value);
			});
		var next=el.getNext().value;
		add=next.slice(0,1)+(el.value.replace(",",".")*next.slice(1));
	}
	else add='';
	return add;
}
function qfCalculator(el,start) {
	var price=start;
	for(var n=0; n<el.length; n++) {	
		if(noClon(el[n])){
			var add=getAdd(el[n]);
			if(add.length>1){	
				var modifer=add.slice(0,1);
				var val=add.slice(1);
				if(modifer=='=') price=val*1;
				else if(modifer=='*') price*=val;
				else if(modifer=='-') price-=val*1;
				else price=(price+val*1);
			}
		}
		else price+=getClasterSum(el[n]);
	}
	return price;
}

function qfCalculatorClone(el,start) {
	var price=start;
	for(var n=0; n<el.length; n++) {	
		var add=getAdd(el[n]);
		if(add.length>1){	
			var modifer=add.slice(0,1);
			var val=add.slice(1);
			if(modifer=='=') price=val*1;
			else if(modifer=='*') price*=val;
			else if(modifer=='-') price-=val*1;
			else price=(price+val*1);
		}
	}
	return price;
}
function qfCalculator1(el,start) {
	var price='';
	for(var n=0; n<el.length; n++) {	
		var add=getAdd(el[n]);
		if(add.length>1){	
			var modifer=add.slice(0,1);
			var val=add.slice(1);
			if(modifer=='=') start=val;
			else if(modifer=='*') start*=val;
			else price=(price+add);
		}
	}
	return eval(start+price);
}
function qfCalculator2(el,start) {
	var price=start,mul=1;
	for(var n=0; n<el.length; n++) {	
		var add=getAdd(el[n]);
		if(add.length>1){	
			var modifer=add.slice(0,1);
			var val=add.slice(1);
			if(modifer=='=') price=val*1;
			else if(modifer=='*') mul*=val;
			else if(modifer=='-') price-=val*1;
			else if(modifer=='+') price+=val*1;
		}
	}
	return price*mul;
}
function qfRestorForm(f) {
	
	if(f.getElements('.qfradio').length){
		var dr=f.getElements('.qfradio input[type="radio"]'), num=0;
		var oldtmp=dr[0].name;
		dr.each(function(el){
			var tmp=el.name;
			if(tmp!=oldtmp){num++;oldtmp=tmp;}
			el.name='r'+num;
		});
	}
	
	if(f.getElements('.qfinlabel').length){
		var inp=$$('.qfinlabel input');
		inp.each(function(el){
			var lab=el.getParent().getElement('label');
			if(!el.value){el.value=lab.innerHTML;
			lab.style.visibility='hidden';}
		});
		var textarea=$$('.qfinlabel textarea');
		textarea.each(function(el){
			var lab=el.getParent().getElement('label');
			if(!el.innerHTML){
				el.innerHTML=lab.innerHTML;
				lab.style.visibility='hidden';
				el.addEvent('focus', function() {
					if(el.value==lab.innerHTML)el.value='';
				});
				el.addEvent('blur', function() {
					if(!el.value)el.value=lab.innerHTML;
				});
			}
		});
		inp.addEvent('focus', function() {
			if(this.value==this.getParent().getElement('label').innerHTML)this.value='';
		});
		inp.addEvent('blur', function() {
			if(this.value=='')this.value=this.getParent().getElement('label').innerHTML;
		});
	}
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2016, 23:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Скрипт отправки формы и получения уведомления
Добрый день, уважаемые товарищи, нужно бабушкам на вахте сделать некий локальный сайт, с отправкой...

Вывод сообщения после авторизации
Добрый день есть такой код авторизации пользователя, авторизация проходит пост запросом, по нему...

Вывод сообщения после редиректа
Здравствуйте. При выборе одного из пунктов меню (index.php?id=3) грузится вот такой контент: ...

Различные сообщения и уведомления на сайте
Подскажите какие вы использовали способы реализации сообщений на сайте. О чем я:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.