powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] формирование email на клиенте
12 сообщений из 12, страница 1 из 1
[PHP] формирование email на клиенте
    #39000613
virtuOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть небольшая форма, написанная с использованием шаблонизатора twig. Данные сохраняются в базу, после этого надо сформировать у пользователя письмо с полями из формы, а на странице под формой дописать статус ("OK" или "FAIL").

Код: 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.
...
    require_once 'Twig/Autoloader.php';
    Twig_Autoloader::register();
    $error_msg='';
    $ok_msg='';

    $loader = new Twig_Loader_Filesystem('templates');
    $twig = new Twig_Environment($loader, array('debug' => true));
    $template = $twig->loadTemplate('index.html');

if (<тут какое-то условие>)
{
				mssql_query("вставляем дынные в базу");
				$sent="mailto:".$adr."?cc=".$adr2."&subject=...");
				$sent=str_replace(' ','%20',$sent);
                    		
				$error_msg = '';
				$ok_msg = 'OK';
				$template -> display(array('err'=>$error_msg,'ok'=>$ok_msg));

				header('Location: '.$sent);
}
else {
$error_msg="FAIL";
}
$template -> display(array('err'=>$error_msg,'ok'=>$ok_msg));



В итоге письмо создается, но нет сообщения $ok_msg. В случае ошибки (например, дубликаты в базе) сообщение об ошибке $error_msg отображается на форме.

Подскажите, почему так происходит.
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39000624
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю из-за редиректа на mailto
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39000661
virtuOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из документации на header тоже подумал что из-за редиректа выполнение скрипта прекращается.
Может есть другой способ сгенерировать письмо?
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39000682
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из js можно вызвать клик ссылки с mailto например, при удачной записи в базу, или сразу открыть окно с mailto? или показать ссылку юзеру, пусть сам нажимает
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39001068
virtuOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
...
<body onload="getMail()">
...

<div class="lblMail">
		<a href="{{sent}}" id="SendMail">Email OTRS</a> 
</div>

...

<script type="text/javascript">
  	function getMail() { 
		document.getElementById('SendMail').onclick(); 
		}
</script>
</body>



Ссылка для почты сформирована корректно, при нажатии на неё создается письмо. Но при загрузке страницы этого не происходит. Где накосячил?
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39001083
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так не будет работать. Самое простое подключить jquery и сделать trigger('click'), либо погугли про dispatchEvent, например, вот
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39001320
virtuOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мда, дебри какие-то. Вот например тестовая страничка. Событие при наведении указателя мыши на кнопку перехватывается.
Но никак не могу понять, как то же самое привязать к загрузке страницы???

Код: html
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.
<HTML>
<head>
    <script type="text/javascript">
        function InitMouseDown (event) {
                if (event.initMouseEvent) {     // all browsers except IE before version 9
                    var mousedownEvent = document.createEvent ("MouseEvent");
                    mousedownEvent.initMouseEvent ("mousedown", true, true, window, 0, 
                                                event.screenX, event.screenY, event.clientX, event.clientY, 
                                                event.ctrlKey, event.altKey, event.shiftKey, event.metaKey, 
                                                0, null);
                    event.target.dispatchEvent (mousedownEvent);
                } else {
                    if (document.createEventObject) {   // IE before version 9
                        var mousedownEvent = document.createEventObject (window.event);
                        mousedownEvent.button = 1;  // left button is down
                        event.srcElement.fireEvent ("onmousedown", mousedownEvent);
                    }
                }
        }
    </script>
</head>
<body>
	<button onmouseover="InitMouseDown (event);" onmousedown="alert ('mousedown event occurred')">
        Hover over this button!
    </button>
	
</body>
</HTML>
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39001360
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так? я в чистом js не силен, наверно надо топик в форум html,javascript перенести
Код: javascript
1.
2.
3.
4.
5.
window.onload(function(){
    var elem = document.getElementById('SendMail');
    var event = new Event('click');
    elem.dispatchEvent(event);
});
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39001401
virtuOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не работает.
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39001600
virtuOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел решение.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
<script type="text/javascript">
  	function getMail() {
  	window.location ="mailto:test@mail.ru"
	}
</script>

<body onload="getMail()">
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39001615
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
virtuOS,

так это же тот же редирект, но на js
...
Рейтинг: 0 / 0
[PHP] формирование email на клиенте
    #39001634
virtuOS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На php после редиректа команды не выполнялись. А на JS скрипт отрабатывает после отрисовки страницы.

PS. Я сел разбираться с php/js/html недели две назад, так что очевидные для профессионалов вещи для меня могут быть не так очевидны.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] формирование email на клиенте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]