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

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

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

Студворк — интернет-сервис помощи студентам
Всем привет!
Имеется форма для отправки сообщений на эл. почту. Она работает. Но после отправки мне надо сделать, чтобы на странице появлялся скрытый блок div , который содержит информацию о том, что сообщений успешно отправлено.
Подскажите, что нужно сделать, чтобы после отправки этот блок выскакивал по центру?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.08.2014, 12:26
Ответы с готовыми решениями:

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

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

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

21
16 / 16 / 10
Регистрация: 24.01.2014
Сообщений: 187
08.08.2014, 12:56
использовать какой нибудь 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
 Аватар для Sombrero
74 / 70 / 40
Регистрация: 31.03.2014
Сообщений: 298
08.08.2014, 13:01
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  [ТС]
Сделал по вашему методу, но у меня всё равно уведомление не показывается.
Плюс еще идет после отправки запроса, открывается пустая страница mail.php (там где происходит организация кода отправки данных на почту).
А мне вот это совсем не надо. Хотелось бы по нажатию, увидеть окно уведомления и получить письмо на почту.
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
08.08.2014, 13:12
Я делаю так
Кликните здесь для просмотра всего текста

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
 Аватар для Sombrero
74 / 70 / 40
Регистрация: 31.03.2014
Сообщений: 298
08.08.2014, 13:18
Vlad708, повесь событие на кнопку
JavaScript
1
2
3
$('.button').on('click', function(){
    $('.container-message').css({position:'absulute',left:'50%',right:'50%',display:'block'});
});
.button и .container-message - классы твоих объектов. естественно они у тебя свои
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
08.08.2014, 13:22
Добавьте метку в шаблон составления письма {SEND_EMAIL_COMPLETTE}. Когда пользователь составляет письмо - эта метка заменяется пустой строкой. Когда письмо отправлено (используется шаблон с полями ввода для отправки сообщения?) заменяете метку сообщением об успешной отправке сообщения.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.08.2014, 13:25
а что, без 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
 Аватар для Sombrero
74 / 70 / 40
Регистрация: 31.03.2014
Сообщений: 298
08.08.2014, 13:33
KOPOJI, тут нет ни слова о редиректе. к тому же я еще не встречал, чтоб где-то практиковался вывод сообщения в модальном окне после редиректа
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
08.08.2014, 13:39
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
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.08.2014, 13:41
1. Редирект можно заменить рефрешем страницы
2. Видимо, вы не встречали такого просто, это частая практика. К примеру, авторизация на этом форуме - после введения данных выполняется редирект. Погуглите также "flash сообщения yii/bootstrap/rails/etc". Самая частая причина подобных действий - исключение повторной отправки данных. При отправке письма на почту в основном используется метод передачи данных POST - нажмите F5 и вместо одного письма уйдет два (да, большинство браузеров сообщают о том, что данные будут переданы повторно, но все же). Редирект исключает такое.
Особенно это проявляется если письмо отправляется асинхронно - человек может подумать, что он просто не нажал кнопку и нажать еще несколько раз == несколько сообщений вместо одного.

Добавлено через 1 минуту
Цитата Сообщение от Sombrero Посмотреть сообщение
вывод сообщения в модальном окне
о модальном окне я, кстати, не говорил ни слова.
2
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
08.08.2014, 13:42
KOPOJI, спасибо Вам за объяснение
0
 Аватар для Sombrero
74 / 70 / 40
Регистрация: 31.03.2014
Сообщений: 298
08.08.2014, 13:45
artnazarov, я отталкивался от желаний самого автора выводить сообщение по нажатию кнопки. ваш совет по поводу использования ajax естественно является наиболее правильным, но я не брал во внимания аспект этой задачи, мы ведь не видим всей его реализации. может быть он и пользуется ajax
0
15 / 15 / 8
Регистрация: 29.07.2014
Сообщений: 120
08.08.2014, 14:53
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
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.08.2014, 15:38
Цитата Сообщение от artnazarov Посмотреть сообщение
редирект это основной способ защиты
это самый простой. Помимо всего, очищаются поля формы, что уменьшает возможность отправки формы пользователем повторно, "вручную". Также, не обязательно использование JS. Если исключить JS, то половину вариантов можно смело убрать (т.к. они основаны на нем). Ну и, помимо всего, подумайте, почему во многих фреймворках используют это по дефолту (а фреймворк - есть ни что иное, как набор часто используемого).

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

Не по теме:

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



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

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
Помогите! Не выводится сообщение после отправки заполненной формы. Языковой файл:
SEND A COPY OF THIS MESSAGE TO YOUR OWN ADDRESS="Отправить копию этого сообщения на ваш адрес"
COM_MAILTO_EMAIL_SENT="Письмо было успешно отправлено."
COM_QF_NOT_ALL="не все поля заполнены"

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

Добавлено через 12 минут
Вот PHP код:
Code
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
<?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
А вот JS:
Code
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
/* @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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2016, 23:32
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru