Почему не происходит переадресация с форм
Почему не происходит переадресация с форм главной страницы maccoikt.beget.tech/ на страницу maccoikt.beget.tech/?q=good
Комментарии: 15
А по какой причине он должен происходить? Вы бы хоть показали, как редирект реализовываете, с помощью какого компонента сделана форма, если без компонента, то код обработчика. А то получается просто гадание на кофейной гуще.
Но там же формы все видны -а раз есть форма то есть сабмит и файлы формы и action- просто можете сказать куда сейчас action идет — своим более опытным глазом — с форм главной страницы?
Ну вижу я то, что и вы явно видите, что на mail.php идет отправка и что он возвращает status:true, но я не могу знать код обработчика mail.php и мне лень искать код js. Не проще ли вам все таки приложить код, нежели заставлять других его угадывать и искать?
Хорощо приложу код. ТО есть вы хотите сказать что отправка форм идет нормально?? Не так ли?? Вот прикладываю код mail.php что лежал в корне? То есть код формы обрабатывается.
<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
/**@var modX $modx */
define('MODX_API_MODE', true);
require_once 'index.php';
$modx->getService('error', 'error.modError');
$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
$modx->setLogTarget('FILE');
$to = 'webklweb@yandex.ru, sale@subelement.ru, macco@inbox.ru';//почта для заявок
$email = 'noreply@site.ru';
$sitename = 'Элемент';
$subject = "Новая заявка с сайта \"$sitename\"";
if($_FILES)
{
$filename = array();
$i = 0;
foreach ($_FILES["file"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$filename[$i][0] = $_FILES["file"]["tmp_name"][$key];
$filename[$i][1] = $_FILES["file"]["name"][$key];
$i++;
}
}
}
function table_tr($title,$value){
if ($value=='') return false;
return "
<tr>
<td width='200' height='40' bgcolor='#eee' style='padding: 5px;'>
$title
</td>
<td width='300' style='padding: 5px;'>
$value
</td>
</tr>";
}
function checkbox($array){
$check = implode(", ", $array);
$check = substr($check, 1);
return $check;
}
$message="<table border='1'>";
if (isset($_POST['form'])){
$message .= table_tr('Форма',$_POST["form"]);
$amo_mess = 'Форма: '.$_POST["form"].';'. PHP_EOL;
}
if (isset($_POST['name'])){
$message .= table_tr('Имя',$_POST["name"]);
$amo_mess .= 'Имя: '.$_POST["name"].'; '. PHP_EOL;
}
if (isset($_POST['phone'])){
$message .= table_tr('Телефон',$_POST["phone"]);
$amo_mess .= 'Телефон: '.$_POST["phone"].'; '. PHP_EOL;
}
if (isset($_POST['email'])){
$message .= table_tr('Email',$_POST["email"]);
$amo_mess .= 'Email: '.$_POST["email"].';'. PHP_EOL;
}
if (isset($_POST['volume'])){
$message .= table_tr('Объем емкости',$_POST["volume"]);
$amo_mess .= 'Объем емкости: '.$_POST["volume"].'; '. PHP_EOL;
}
if (isset($_POST['scope'])){
$message .= table_tr('Сфера применения',$_POST["scope"]);
$amo_mess .= 'Сфера применения: '.$_POST["scope"].'; '. PHP_EOL;
}
if (isset($_POST['drawing'])){
$message .= table_tr('У меня есть проект/чертеж',$_POST["drawing"]);
$amo_mess .= 'У меня есть проект/чертеж: '.$_POST["drawing"].'; '. PHP_EOL;
}
if (isset($_POST['question'])){
$message .= table_tr('Вопрос',$_POST["question"]);
$amo_mess .= 'Вопрос: '.$_POST["question"].'; '. PHP_EOL;
}
if (isset($_POST['question1'])){
$message .= table_tr('Что планируете постороить',$_POST["question1"]);
$amo_mess .= 'Что планируете постороить: '.$_POST["question1"].'; '. PHP_EOL;
}
if (isset($_POST['question2_1'])){
$message .= table_tr('Ширина',$_POST["question2_1"]);
$amo_mess .= 'Ширина: '.$_POST["question2_1"].'; '. PHP_EOL;
}
if (isset($_POST['question2_2'])){
$message .= table_tr('Длина',$_POST["question2_1"]);
$amo_mess .= 'Длина: '.$_POST["question2_2"].'; '. PHP_EOL;
}
if (isset($_POST['question2_3'])){
$message .= table_tr('Высота',$_POST["question2_3"]);
$amo_mess .= 'Высота: '.$_POST["question2_3"].'; '. PHP_EOL;
}
if (isset($_POST['question3'])){
$message .= table_tr('Готов ли проект, эскиз',$_POST["question3"]);
$amo_mess .= 'Готов ли проект, эскиз: '.$_POST["question3"].'; '. PHP_EOL;
}
if (isset($_POST['question4'])){
$message .= table_tr('Сроки изготовления',$_POST["question4"]);
$amo_mess .= 'Сроки изготовления: '.$_POST["question4"].'; '. PHP_EOL;
}
if (isset($_POST['question5'])){
$message .= table_tr('Адрес',$_POST["question5"]);
$amo_mess .= 'Адрес: '.$_POST["question5"].'; '. PHP_EOL;
}
if (isset($_POST['page'])){
$message .= table_tr('Страница',$_POST["page"]);
//$amo_mess = '<p>Страница: '.$_POST["page"].'; </p>';
}
if ($_SESSION['site_utm'] && is_array($_SESSION['site_utm'])) {
foreach ($_SESSION['site_utm'] as $key => $value) {
$message .= table_tr($key, $value);
$amo_mess .= ''.$key.': '.$value.'; '. PHP_EOL;
}
}
$message .="</table>";
$responce['status'] = send_mail($to, $message, $email, $filename,$subject);
//amo
//ПРЕДОПРЕДЕЛЯЕМЫЕ ПЕРЕМЕННЫЕ
$responsible_user_id = 2294887; //id ответственного по сделке, контакту, компании
$lead_name = 'Заявка с сайта subelement.ru'; //Название добавляемой сделки
$lead_status_id = '32775721';//'32681458'; //id этапа продаж, куда помещать сделку
$contact_name = urldecode($_POST['name']); //Название добавляемого контакта
$contact_phone = urldecode($_POST["phone"]); //Телефон контакта
$contact_email = urldecode($_POST['email']); //Емейл контакта
//АВТОРИЗАЦИЯ
$user=array(
'USER_LOGIN'=>'ay@steelar-zmk.ru', #Ваш логин (электронная почта)
'USER_HASH'=>'b113966441f86ef98df904001ec3aa6629176f85' #Хэш для доступа к API (смотрите в профиле пользователя)
);
$subdomain='podarki';
#Формируем ссылку для запроса
$link='https://'.$subdomain.'.amocrm.ru/private/api/auth.php?type=json';
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($user));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE); #Получим HTTP-код ответа сервера
curl_close($curl); #Завершаем сеанс cURL
$Response=json_decode($out,true);
//echo '<b>Авторизация:</b>'; echo '<pre>'; print_r($Response); echo '</pre>';
//ПОЛУЧАЕМ ДАННЫЕ АККАУНТА
$link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/accounts/current'; #$subdomain уже объявляли выше
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
curl_close($curl);
$Response=json_decode($out,true);
$account=$Response['response']['account'];
//echo '<b>Данные аккаунта:</b>'; echo '<pre>'; print_r($Response); echo '</pre>';
//ПОЛУЧАЕМ СУЩЕСТВУЮЩИЕ ПОЛЯ
$amoAllFields = $account['custom_fields']; //Все поля
$amoConactsFields = $account['custom_fields']['contacts']; //Поля контактов
//echo '<b>Поля из амо:</b>'; echo '<pre>'; print_r($amoConactsFields); echo '</pre>';
//ФОРМИРУЕМ МАССИВ С ЗАПОЛНЕННЫМИ ПОЛЯМИ КОНТАКТА
//Стандартные поля амо:
$sFields = array_flip(array(
'PHONE', //Телефон. Варианты: WORK, WORKDD, MOB, FAX, HOME, OTHER
'EMAIL' //Email. Варианты: WORK, PRIV, OTHER
)
);
//Проставляем id этих полей из базы амо
foreach($amoConactsFields as $afield) {
if(isset($sFields[$afield['code']])) {
$sFields[$afield['code']] = $afield['id'];
}
}
//ДОБАВЛЯЕМ СДЕЛКУ
$leads['request']['leads']['add']=array(
array(
'name' => $lead_name,
'status_id' => $lead_status_id, //id статуса
'responsible_user_id' => $responsible_user_id, //id ответственного по сделке
//'date_create'=>1298904164, //optional
//'price'=>300000,
//'tags' => 'Important, USA', #Теги
//'custom_fields'=>array()
'custom_fields'=>array(
array(
'id' => 382333,
'values' => array(
array(
'value' => isset($_COOKIE['roistat_visit']) ? $_COOKIE['roistat_visit'] : null,
)
)
)
)
)
);
$link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/leads/set';
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($leads));
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
$Response=json_decode($out,true);
//echo '<b>Новая сделка:</b>'; echo '<pre>'; print_r($Response); echo '</pre>';
if(is_array($Response['response']['leads']['add']))
foreach($Response['response']['leads']['add'] as $lead) {
$lead_id = $lead["id"]; //id новой сделки
$responce['lead'] = $lead_id;
};
//ДОБАВЛЯЕМ СДЕЛКУ - КОНЕЦ
//ДОБАВЛЕНИЕ КОНТАКТА
$contact = array(
'name' => $contact_name,
'linked_leads_id' => array($lead_id), //id сделки
'responsible_user_id' => $responsible_user_id, //id ответственного
'custom_fields'=>array(
array(
'id' => $sFields['PHONE'],
'values' => array(
array(
'value' => $contact_phone,
'enum' => 'MOB'
)
)
),
array(
'id' => $sFields['EMAIL'],
'values' => array(
array(
'value' => $contact_email,
'enum' => 'WORK'
)
)
)
)
);
$set['request']['contacts']['add'][]=$contact;
#Формируем ссылку для запроса
$link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/contacts/set';
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($set));
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
//CheckCurlResponse($code);
$Response=json_decode($out,true);
//ДОБАВЛЕНИЕ КОНТАКТА - КОНЕЦ
//ДОБАВЛЕНИЕ Примечания
$note = array(
'element_id' => $lead_id,
'element_type' => '2',
'text' => $amo_mess,
'note_type' => '4',
'responsible_user_id' => $responsible_user_id,
'created_by' => $responsible_user_id,
);
$set['request']['notes']['add'][]=$note;
#Формируем ссылку для запроса
$link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/notes/set';
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($set));
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
//CheckCurlResponse($code);
$Response=json_decode($out,true);
//ДОБАВЛЕНИЕ Примечания - КОНЕЦ
//amo
echo json_encode($responce);
exit;
// Вспомогательная функция для отправки почтового сообщения с вложением
function send_mail($to, $body, $email, $filename,$subject)
{
$boundary = "--".md5(uniqid(time())); // генерируем разделитель
$headers = "From: ".$email."\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
$multipart = "--".$boundary."\r\n";
$multipart .= "Content-type: text/html; charset=\"utf-8\"\r\n";
$multipart .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n";
$body = $body."\r\n\r\n";
$multipart .= $body;
foreach ($filename as $key => $value) {
$fp = fopen($value[0], "r");
$content = fread($fp, filesize($value[0]));
fclose($fp);
$file .= "--".$boundary."\r\n";
$file .= "Content-Type: application/octet-stream\r\n";
$file .= "Content-Transfer-Encoding: base64\r\n";
$file .= "Content-Disposition: attachment; filename=\"".$value[1]."\"\r\n\r\n";
$file .= chunk_split(base64_encode($content))."\r\n";
}
$multipart .= $file."--".$boundary."--\r\n";
$responce['status'] = mail($to, $subject, $multipart, $headers);
return $responce['status'];
}
Ответте на два первых вопроса и как сделать чтобы после отправка форм шел редирект на maccoikt.beget.tech/?q=good, maccoikt.beget.tech/good
Да, отправка идет. Увидел во вкладке Network в DevTools. Так у вас нет редиректа в коде. Почитайте про modx sendredirect. И добавьте его в код в случае успешной отправки
Хорошо я почитаю а куда именно вставлять код в mail.php или куда еще?
Да в mail.php. Прочитайте и поймете, в доке все есть
пришлите доки ссылку
Можете немного расширенно рассказать куда что вставлять?
И во всех ли формах на Главной странице mail.php true.
в какое место именно в моем случае в sendredirect
в какое место mail.php именно в моем случае sendredirect в return $modx->sendRedirect('/?q=good', 0, 'REDIRECT_HEADER', 'HTTP/1.1 301 Moved Permanently');
cтавить — ответте точно
и в каком виде?
Вставил в нескольких местах — некуда не отправил- подскажите в моем случае в каком виде и в какое место вставить?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.