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

Как изменить корзину Wicart, чтобы отправлялись сообщения покупателю

06.12.2017, 16:26. Показов 4236. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Я скачал скрипт корзины Wicart для интернет-магазина, и он работает.
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
<div class="mp-detail"><!--noindex--><button id="wicartbutton_1659" onclick="cart.addToCart(this, '1659', priceList['1659'])">В корзину</button><!--/noindex--></div>
 
<script>
priceList[1659] = {"id" : "1659", "subid" : {}, "name" : "Комбинезон " + $("#cat"+ 1659 + " .color").html() , "price" : $("#cat"+ 1659 + " .catoffer-price").html()}
</script>
 
   <!---Форма для магазина-------------------------------->
<div id="order" class="popup">
<a href="#" onclick="cart.closeWindow('order', 0)" style="float:right">[закрыть]</a>
<h4>Введите ваши контактные данные</h4>
 
<form id="formToSend">
<input id="fio" type="text" placeholder="Ваши фамилия и имя"  class="" />
<input id="city" type="text" placeholder="Адрес передачи товара"  class="text-input"/>
<input id="phone" type="text" placeholder="Контактный телефон" class="text-input"/>
<input id="date" type="text" placeholder="Дата доставки" class="text-input"/>
<input id="email" type="text" placeholder="Электронная почта" class="" />
<br>
<textarea id="question" placeholder="Примечание"></textarea>
</form>
<button onclick="cart.sendOrder('formToSend,overflw,bsum');" href="#">Отправить заказ</button>
</div>
<!----------------------------------------------------->
 
<script>
var cart;
var config;
var wiNumInputPrefID;
/* WI-GLOBAL-VARS */
$(document).ready(function(){  
    cart = new WICard("cart");
    config = {'clearAfterSend':true, 'showAfterAdd':false};
    
    cart.init("basketwidjet", config);
    /* WI-MODULES */
    
    
}); 
document.addEventListener('visibilitychange', function(e) {
cart.init("basketwidjet", config);
}, false);
</script>
После нажатия покупателем кнопки ОТПРАВИТЬ ЗАКАЗ, ему не приходит копия заказа, а он только видит, что заявка получена , например, на тестовом email.

Хотелось бы сделать еще и отправку копии заказа покупателю, но не могу понять, как можно из заполненной им формы выделить email.

Файл отправки работает с уже готовым сообщением, в котором email покупателя уже "вшит" в сообщение. Поэтому не могу из него "вырвать" email покупателя.
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
$mail = $_POST["order"];
$subject = htmlentities($_GET["subj"]) . "/ Заказ (".date("d.m.Y h:i").")";
 
$mail = strip_tags($mail, "<b><div><table><tbody><tr><td><html><body><style><h1><th><br>");
$mail = str_replace("<td></td>", "",$mail);
$mail = preg_replace('/<div[^>]+class="basket_num_buttons"[^>]*>.*?<\/div>/i', '', $mail);
$mail = preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>', $mail);
 
$template = "<html>
<style>
*
{ font-family: Arial;}
table
{ border-collapse: collapse; }
td
{ padding: 5px; border: 1px solid #000;}
th
{
background: #999; padding: 5px;
}
 
</style>
<body>
<h1>".$subject."</h1>
".$mail."</body></html>";
 
$template .= '<hr>' . $_SERVER['HTTP_REFERER'];
 
// Clear form
 
 
$head = "<tr><th>ID</th><th>Название</th><th>Цена</th><th>Кол-во</th><th>Всего</th></tr>";
 
$template = str_replace ( "<tbody>" ,"<tbody>".$head, $template);
 
//$domain = "mysite";
 
$from = "zakaz@mysite.ru"; // от кого
$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: ". $from . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
 
$success = mail("zakaz@mysite.ru", $subject, $template, $headers);
echo ($success) ? 'true' : 'false';
Прикрепил еще wicart.js, который подвязывается, но там вообще чёрт ногу сломит.

Помогите передать с файла, где заполняется форма, данные об email в файл, который отправляет сообщение.
Вложения
Тип файла: rar wicart.rar (4.2 Кб, 14 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2017, 16:26
Ответы с готовыми решениями:

Что надо изменить, чтобы данные отправлялись на сервер только при положительном прохождении проверки?
Имеется функция TestData(), проверяющая корректность введенных в форму данных и возвращающая значение true/false. Что надо изменить в...

Как занести товар в корзину и при нажатии на корзину чтобы пользователь смог увидеть товары в корзине?
очень нужна помощь вот сам проект ТУТ

Как сделать чтобы пост запросы отправлялись через определенное количество времени
Как сделать чтобы пост запросы отправлялись через определенное количество времени (к примеру 10 секунд) и каждый отправленный пост запрос...

19
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
06.12.2017, 18:31
Цитата Сообщение от alanat Посмотреть сообщение
в котором email покупателя уже "вшит" в сообщение.
как он может быть вшит? у всех покупателей один адрес?
0
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
06.12.2017, 19:13
PHP
1
2
$ea = explode("<br><br>", $_POST["order"]);
$ea = $ea[4]; // адрес e-mail
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
06.12.2017, 19:16  [ТС]
Когда формируется сообщение продавцу, то в файл, который отсылает сообщение, приходит уже готовое, со всеми данными, которые заполнил покупатель. Формируется сообщение скорее всего в файле, который прикреплен. Но как именно происходит "склейка" данных, я не понимаю.
По-хорошему, разобраться бы с этим файлом, но там мне почти ничего не понятно.
0
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
06.12.2017, 19:17
JavaScript
1
2
3
4
5
6
7
8
9
10
    this.sendOrder = function(domElm)   
        {
        var bodyHTML = "";
        var arr = domElm.split(",");
        
        for (var f=0; f < arr.length; f++) {
        
            bodyHTML +=  this.getForm(arr[f]) + "<br><br>"; 
            
            };
элементы объединяются строкой
HTML5
1
<br><br>
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
06.12.2017, 19:32  [ТС]
Цитата Сообщение от ytf Посмотреть сообщение
1
$ea = explode("<br><br>", $_POST["order"]);
$ea = $ea[4]; // адрес e-mail
Полагаю это надо вставить в
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
this.sendOrder = function(domElm)   
        {
        var bodyHTML = "";
        var arr = domElm.split(",");
        
        for (var f=0; f < arr.length; f++) {
        
            bodyHTML +=  this.getForm(arr[f]) + "<br><br>"; 
            
            };
        $('.basket_num_buttons').remove();
        $.post( "sendmail.php?subj=Order MonKid.ru", { "order": bodyHTML }).done(function( data ) {
        cart.closeWindow("bcontainer", 1)   
        cart.closeWindow("order", 0);
        if (cart.CONFIG.clearAfterSend)
            {
            cart.clearBasket();
            } 
        alert(local.send);  
        });
        
        }
чтобы получить email. Куда именно?
0
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
06.12.2017, 19:54
PHP
1
2
3
4
5
$success = mail("zakaz@mysite.ru", $subject, $template, $headers);
$ea = explode("<br><br>", $_POST["order"]);
$ea = $ea[4]; // адрес e-mail
$success = mail($ea, $subject, $template, $headers);
echo ($success) ? 'true' : 'false';
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
06.12.2017, 20:54  [ТС]
Цитата Сообщение от ytf Посмотреть сообщение
$ea = explode("<br><br>", $_POST["order"]);
$ea = $ea[4]; // адрес e-mail
$success = mail($ea, $subject, $template, $headers);
echo ($success) ? 'true' : 'false';
Не получается.
В данном случае $ea имеет пустое значение.

Если вместо $ea[4] ставлю $ea[0], то значение $ea выдает, как
HTML5
1
<b>Ваши фамилия и имя</b><div>МояФамилияСлитно</div> <b>Адрес передачи товара</b><div></div> <b>Контактный телефон</b><div></div> <b>Дата доставки</b><div></div> <b>Электронная почта</b><div>test@mail.ru</div> <br> <b>Примечание</b><div></div>
(В форме я заполнил только МояФамилияСлитно и test@mail.ru)

Добавлено через 25 минут
Цитата Сообщение от ytf Посмотреть сообщение
$ea = explode("<br><br>", $_POST["order"]);
Может быть не через explode, а как-то из этой строки email вытащить?
PHP
1
<input id="email" type="text" placeholder="Электронная почта" class="" />
1
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
06.12.2017, 21:24
Лучший ответ Сообщение было отмечено alanat как решение

Решение

JavaScript
1
$.post( "sendmail.php?subj=Order MonKid.ru", { "order": bodyHTML, "email": $("#email").val() }).done(function( data ) {
Добавлено через 1 минуту
PHP
1
2
3
4
$success = mail("zakaz@mysite.ru", $subject, $template, $headers);
$ea = $_POST["email"]; // адрес e-mail
$success = mail($ea, $subject, $template, $headers);
echo ($success) ? 'true' : 'false';
2
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
06.12.2017, 21:37  [ТС]
Цитата Сообщение от ytf Посмотреть сообщение
JavascriptВыделить код1
$.post( "sendmail.php?subj=Order MonKid.ru", { "order": bodyHTML, "email": $("#email").val() }).done(function( data ) {Добавлено через 1 минуту
PHPВыделить код1
2
3
4
$success = mail("zakaz@mysite.ru", $subject, $template, $headers);
$ea = $_POST["email"]; // адрес e-mail
$success = mail($ea, $subject, $template, $headers);
echo ($success) ? 'true' : 'false';
У меня складывается впечатление, что вы на php и JS разговариваете.
Огромное спасибо. Всё работает.
0
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 4
15.01.2019, 12:01
Доalanat,
Добрый день, Analat (Алексей), поделитесь пожалуйста скриптом Wicart (Как изменить корзину Wicart, чтобы отправлялись сообщения покупателю)
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
15.01.2019, 18:37  [ТС]
Цитата Сообщение от B_Alex Посмотреть сообщение
поделитесь пожалуйста скриптом Wicart
Как всё это теперь работает, я уже не разберусь с ходу. Вы же можете посмотреть на страницах сайта http://monkid.ru Там всё html и JS.
1
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 4
15.01.2019, 19:42
спасибо за оперативный ответ, но по данной ссылке магазин детской зимней одежды, может перепутали ссылку?
0
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 4
23.01.2019, 08:49
Цитата Сообщение от alanat Посмотреть сообщение
Как всё это теперь работает, я уже не разберусь с ходу. Вы же можете посмотреть на страницах сайта http://monkid.ru Там всё html и JS.
Добрый день, Алексей!
Все что мог, выдернул с Вашего сайта, на моем почти все заработало.
Не нашел, где формируется отправка сообщений на электронную почту.
Насколько я понимаю, должен быть *.php файл, но на Вашем сайте я его не обнаружил.

Добавлено через 1 минуту
Добрый день, ytf, Вы уже погружались в данный вопрос, иду по стопам Alanat, разбираюсь со скриптом.
Застрял на месте, где всплывает окно заказа, после оформления данных которого он должен отправиться на почту нашему менеджеру с сайта, а подтверждение заказа должно прийти клиенту на почту (которую он заполнил в форме).
Я скачал сайт http://monkid.ru но не обнаружил приведенного в первом сообщении Alanat PHP кода, и в каком месте он вызывается, помогите пожалуйста разобраться.
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
24.01.2019, 20:20  [ТС]
Цитата Сообщение от B_Alex Посмотреть сообщение
формируется отправка сообщений на электронную почту
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
<?
$mail = $_POST["order"];
$subject = htmlentities($_GET["subj"]) . "/ Заказ (".date("d.M.Y H:i:s").")";
 
$mail = strip_tags($mail, "<b><div><table><tbody><tr><td><html><body><style><h1><th><br>");
$mail = str_replace("<td></td>", "",$mail);
$mail = preg_replace('/<div[^>]+class="basket_num_buttons"[^>]*>.*?<\/div>/i', '', $mail);
$mail = preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i",'<$1$2>', $mail);
 
$template = "<html>
<style>
*
{ font-family: Arial;}
table
{ border-collapse: collapse; }
td
{ padding: 5px; border: 1px solid #000;}
th
{
background: #999; padding: 5px;
}
 
</style>
<body>
<h1>".$subject."</h1>
".$mail."</body></html>";
 
$template .= '<hr>' . $_SERVER['HTTP_REFERER'];
 
// Clear form
 
 
$head = "<tr><th>ID</th><th>Название</th><th>Цена</th><th>Кол-во</th><th>Всего</th></tr>";
 
$template = str_replace ( "<tbody>" ,"<tbody>".$head, $template);
 
//$domain = "magazin.ru";
 
$ea = $_POST["email"]; // адрес e-mail клиента
$headers = "From: " . $ea . "\r\n";
$headers .= "Reply-To: ". $ea . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$success = mail("order@magazin.ru", $subject, $template, $headers); //Отправляется в магазин
 
 
$from = "order@magazin.ru"; // от кого
$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: ". $from . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$success = mail($ea, $subject, $template, $headers); //Отправляется на клиенту
 
echo ($success) ? 'true' : 'false';
 
?>
Не забудьте, что на хостинге должны быть включены услуги php и электронной почты.
1
0 / 0 / 0
Регистрация: 15.01.2019
Сообщений: 4
31.01.2019, 14:06
Добрый день!

В этом скрипте есть один недостаток.
Количество товара(ов) можно прибавить и убавить только кнопками "+" и "-", а когда речь идет о количестве 50, 100, 1000 товаров (а у нас специфика B2B), сами понимаете, это становится крайне неудобно.

Можно ли поменять в скрипте (пользователь Alanat прикрепил wicart.rar в первом сообщении) поля ввода количества товара, чтобы дать возможность пользователю изменять это количество с клавиатуры?

Теоретически, понимаю, что можно, но вот насколько это сложно?

Добавлено через 6 часов 2 минуты
Пытаюсь разобраться и сразу возникло несколько вопросов:

1.Для почты используется тот же домен, на котором расположен сайт (magazin.ru)?
Судя по тексту на домене наверное организован почтовый сервер:

//$domain = "magazin.ru";

$success = mail("order@magazin.ru", $subject, $template, $headers); //Отправляется в магазин

$success = mail($ea, $subject, $template, $headers); //Отправляется на клиенту

2. Если Эл. почта магазина расположена, например, на mail.ru?
В таком случае код переделывать надо (smtp, tl, port и аутентификация)?
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
31.01.2019, 20:10  [ТС]
Цитата Сообщение от B_Alex Посмотреть сообщение
на домене наверное организован почтовый сервер
Хостинг предлагает услуги по подключению эл. почты.

Цитата Сообщение от B_Alex Посмотреть сообщение
Если Эл. почта магазина расположена, например, на mail.ru
Тогда вместо order@magazin.ru указываете свой почтовый ящик order@mail.ru

Добавлено через 1 минуту
Цитата Сообщение от B_Alex Посмотреть сообщение
Можно ли поменять в скрипте
Не знаю как.
0
0 / 0 / 0
Регистрация: 05.09.2021
Сообщений: 2
05.09.2021, 12:29
Нашел ответ на свой вопрос (отправка двух писем) - спасибо!
при тестировании корзины возник еще один, может кто знает ответ:
прикрутил корзину к cms DLE, скрипт отправляет письма только если находиться на главной (sait.ru) или на странице товара (sait.ru/stranica.html), если находиться в категории (sait.ru/kategoriya/) то почта не отправляется, кнопка не работает....
помогите с этим вопросом! файл sendmail.php лежит в головной категории..
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
05.09.2021, 13:25
jeka66, попробуйте вписать путь к sendmail.php, начиная от корня сайта: /sendmail.php. Т.е. добавьте слеш в начале.
0
0 / 0 / 0
Регистрация: 05.09.2021
Сообщений: 2
05.09.2021, 14:43
я не могу найти в скрипте где это исправить, проблема в этом

Добавлено через 7 минут
ps: в самом wicart.js нашел строку, добавил полный адрес, заработало
но это не есть гуд.. если адрес сайта неизвестен или поменялся.
возможна какая-то php вставка в скрипт, чтоб указать адрес домена?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.09.2021, 14:43
Помогаю со студенческими работами здесь

Надо : Чтобы файлы из сетевой папки отправлялись в папку с сайта автоматом ?! Как это сделать?
Может какой то скрипт или ещё что-то надо закинуть в папку ?!

Переделать код, чтобы POST-запросы отправлялись последовательно в 1 поток
Есть пример многопоточной отправки пост запросов через проски Чарлеса, нужно переделать чтобы запросы отправлялись последовательно в 1...

Сделать так, чтобы пакеты не отправлялись с клиента если сервер не желает их принимать
Собственно,имеется сервер,который получает пакеты при определённых условиях и клиенты.Проблема в том,что пакеты с клиента отправляются если...

Как удалить папку с файлами, чтобы она попала в корзину?
Привет, это снова я. Не могу понять, куда делся мой вопрос, про удаление папок? В том вопросе я спрашивал, как удалить папку с...

Куки и CookieContainer - нужно, чтобы отправлялись все три куки
Создаю контейнер: CookieContainer cookieContainer = new CookieContainer(); И затем цепляю его к первому запросу: ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru