Подскажите реально решение, как безопасно сохранять данные с формы в базу данных и выводить эти данные в админке сайта? Плюсом будет параллельно слать данные и на мыло тоже.
Можно на Wordpress, Joomla - можно и без.
Пробовал на Joomla с ChronoForms5 - все работало норм без включения ajax (в настройках ChronoForms). Как только включаю ajax - перестает отправлять письмо и сохранять в БД.
Нашел интересный плагин к Wordpress -
Contact Form DB. В описании к нему
вычитал, что он может работать напрямую с html-формами (а не теми, что созданы в wordpress'e, типа contact form 7).
Но пока так и не удалось его заставить работать с моей формой.
Создал тему на форуме модуля (там можно подробнее глянуть весь мой код):
https://wordpress.org/support/topic/how-use-this-p...
Форма в HTML
<form id="f2" action="" method="post">
<input type="text" name="name" placeholder="ФИО" maxlength="50" required>
<input type="text" name="email" placeholder="Email" maxlength="50" required>
<input type="text" name="phone" placeholder="Телефон" maxlength="50" required>
<input type="text" name="org" placeholder="Учебное заведение" maxlength="50" required>
<button class="btn" type="submit">Отправить</button>
</form>
JS обработчик
$(document).ready(function() {
//...
$("form#f2").submit(function() {
var form = $(this),
name = form.find("input[name='wpname']").val(),
email = form.find("input[name='wpemail']").val(),
phone = form.find("input[name='wpphone']").val(),
org = form.find("input[name='wporg']").val();
if (!name || !email || !phone || !org) {
alert("Заполните поля формы.");
return false;
}
var email_regexp = /.+@.+\..+/i;
var email_test = email_regexp.test(email);
if (!email_test) {
alert("Введен некоректный Email-адрес.");
return false;
}
$.ajax({
type: "POST",
url: "wp-content/themes/epixx/mail.php",
data: $("form#f2").serialize(),
success: function(response) {
$(".order_status").show();
$("form#f1").hide();
$("form#f2").hide();
console.log('response: ' + response);
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseCode);
}
}).done(function() {
setTimeout(function() {
$.fancybox.close();
}, 2000);
});
return false;
});
});
и мой mail.php
<?php
$recepient = "me@server.com";
$sitename = "Sitename";
$name = trim($_POST["wpname"]);
$email = trim($_POST["wpemail"]);
$phone = trim($_POST["wpphone"]);
$org = trim($_POST["wporg"]);
$pagetitle = "New message from site \"$sitename\"";
$message = "Name: $name\r\nEmail: $email\r\nPhone: $phone\r\nOrganization: $org";
mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"$EOL From: $name <$email>");
/* contact-form-7-to-database */
require_once(ABSPATH . 'wp-content/plugins/contact-form-7-to-database-extension/CFDBShortCodeSavePostData.php');
$handler = new CFDBShortCodeSavePostData;
$handler->handleShortcode(null);
ajax response:
<br />
<b>Warning</b>: require_once(ABSPATHwp-content/plugins/contact-form-7-to-database-extension/CFDBShortCodeSavePostData.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory in <b>/var/www/u0081082/public_html/donkon.ru/devwp/wp-content/themes/epixx/mail.php</b> on line <b>16</b><br />
<br />
<b>Fatal error</b>: require_once() [<a href='function.require'>function.require</a>]: Failed opening required 'ABSPATHwp-content/plugins/contact-form-7-to-database-extension/CFDBShortCodeSavePostData.php' (include_path='.:') in <b>/var/www/u0081082/public_html/donkon.ru/devwp/wp-content/themes/epixx/mail.php</b> on line <b>16</b><br />
Ссылка на проект в сети:
donkon.ru/devwp
Буду рад любой рекомендации. В back-ende я слабоват.