Пример: .
Здесь сделано модальное окно и реализована простая функция php mail.
На HTML страницу добавляем
<style> #mail {visibility: hidden;} #mail:checked ~ #popup form {visibility: visible;} #mail:checked + label { position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 99; color: rgba(0,0,0,0); background: rgba(180,180,180,.9); cursor: pointer; } #popup { visibility: hidden; position: fixed; top: 0; left: 0; bottom: 0; right: 0; z-index: 100; } #popup form { position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); padding: .5% 1% 1%; border: 1px solid rgb(100,100,100); font-size: 140%; font-weight: 600; text-align: right; text-shadow: -1px -1px #666; color: rgb(240,240,240); background: rgb(150,150,150) linear-gradient(rgb(100,100,100), rgb(170,170,170)); } #popup div:nth-of-type(1) {padding-top: 3%;} #popup div:nth-last-of-type(1) {padding: 1% 0 4%;} #popup div:after { content: attr(data-title); display: block; font-size: 70%; font-weight: normal; text-shadow: none; } #popup input {font-size: 90%;} #popup [type='submit'] {cursor: pointer;} #popup label:hover { color: #dbeaf9; cursor: pointer; } </style> <input type="checkbox" id="mail"/><label for="mail">заказать звонок</label> <!-- Для того, чтобы label шёл не сразу после input, нужно менять немного селекторы: ссылка1, ссылка2 --> <div id="popup"> <form method="post" action="mail.php"> <label for="mail" title="Отменить">✕</label> <div data-title="Например, Мария Петровна">Ваше имя: <input type='text' name='name' required /></div> <div data-title="Например, 89270000000">Моб. телефон: <input type="tel" name='tel' required maxlength="11" value='8' pattern="8\d{10}"/></div> <input type='submit' value='Заказать'/> </form> </div>
Создаём файл mail.php, куда вставляем
<? if($_POST['name']){ // заносим в массив значение полей, их может быть больше $znach = array( 1 => $_POST['name'], 2 => $_POST['tel'], ); mail("name@yandex.ru", "заказ звонка ".$_SERVER['HTTP_REFERER'], $znach[2]." ".$znach[1]); // письмо на свой электронный ящик, измените на свой email } Header("Refresh: 8; URL=".$_SERVER['HTTP_REFERER']); // спустя 8 секунд человек будет возвращён на предыдущий URL ?> <!DOCTYPE html> <title><? print "$znach[1], данные успешно отправлены!"; ?></title> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <meta name="robots" content="noindex"/> <style> body {background: rgba(180,180,180,.9);} body > div { position: absolute; top: 50%; left: 50%; -ms-transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); padding: .5% 1% 1%; border: 1px solid rgb(100,100,100); font-size: 140%; font-weight: 600; text-align: right; text-shadow: -1px -1px #666; color: rgb(240,240,240); background: rgb(150,150,150) linear-gradient(rgb(100,100,100), rgb(170,170,170)); } label:hover { color: #dbeaf9; cursor: pointer; } body > div > div {padding-top: 3%;} </style> <div> <label title="Продолжить">✕</label> <div><? print "$znach[1]"; ?>, Ваша заявка получена!<br> Мы позвоним Вам в течении часа.</div> </div> <script> // нажав на label посетитель вернётся на предыдущую страницу, где заполнял форму document.getElementsByTagName('label')[0].onclick = function() { window.location.href="<? print $_SERVER['HTTP_REFERER']; ?>" } </script>
Я постаралась употребить как можно меньше кода и у меня это получилось. Вам остаётся подогнать форму под свой дизайн.
133 комментария:
К сожалению, не смотря на то, что с HTML знаком аж с 6 лет, в PHP полный нолик. Поводов изучить особо не было.
Советую не делать всё на одном CSS. В целом, тут самые универсальные селекторы, но повесить событие на кнопку всё-таки надо на всякий случай.
Скрыть при щелчке (хтмл атрибут):
onclick="document.getElementById('айдишник элемента').style.display = 'none';"
Показать:
onclick="document.getElementById('айдишник элемента').style.display = 'block';"
Можно, но мне лень заниматься тем, что уже через пару лет неактуально будет. :checked понимают даже мобильные сайты
Ну и что, что с CSS можно сделать вариант модального окна без скриптов, всё равно это останется на уровне велосипедов, и функционал минимальный.
- - - - - - - - - - - - - - - - - - - - - -
Ко всем кнопкам вешай свойство cursor: pointer; , так курсор будет меняться при наведении и будет лучше ясно, что это кнопка, а не декорация. Поведенческий фактор х)
- - - - - - - - - - - - - - - - - - - - - -
А движок блога и просто CMS нетрудно будет сделать =.= придётся немного mySQL изучить, но человеческие мозги - понятие растяжимое.
Давай ты сделаешь техническую начинку, а я сделаю лучшую скриптовую часть админки и виджетов с визуальными редакторами и асинхронностью?) Оформление пополам XD
Таких движков достаточно :) Да, для конкретного сайта это имеет место быть, а для массы не вижу смысла.
На почту яндекса в нормальном виде.
<?
if($_POST['name']){
$znach = array(
1 => $_POST['name'],
2 => $_POST['tel'],
);
$to = "name@mail.ru";
$subject = "=?utf-8?B?".base64_encode("заказ звонка ".$_SERVER['HTTP_REFERER'])."?=";
$headers = "Content-type: text/html; charset=utf-8 \r\n";
$message = $znach[2]." ".$znach[1];
mail($to, $subject, $message, $headers);
}
Header("Refresh: 8; URL=".$_SERVER['HTTP_REFERER']);
?>
По началу не хотел отображать кнопку ЗАКАЗАТЬ. Вместо неё была тонкая короткая полоска.
Решил так:
Заменил < input type='submit' value='Заказать'/> на
< buttоn type='submit'>< H3 >Заказать
И еще попутно вопрос. Может кто знает в чем проблема. На моем втором сайте (клоне) эноант.рф этот скрипт не работает. Т.е все как положено появляется, форму заполняю, жму ЗАКАЗАТЬ - сообщение о том что перезвоним появляется. НО письма не долетают. Хостинг один и тот же на обоих сайтах.
#mail:checked + label {
нужно
#mail:checked ~ label {
И смотреть весь код на странице. Теория
http://shpargalkablog.ru/2011/10/css-selectors.html
http://shpargalkablog.ru/2013/08/checked.html
http://shpargalkablog.ru/2011/08/kak-ispolzovat-css.html
Подскажите, пожалуйста, где создать и куда разместить файл mail.php?
Огромное спасибо за Ваш блог и массу полезной информации!!!
Татьяна
Мой блог на гугл блоггер и к личному домену пока не подключен. Но блоггер же не поддерживает php? Будет работать, если файл загрузить на Google Disc?
Извините за большое количество вопросов. Заранее спасибо.
Татьяна
Все сделала как описано
Создала файл mail.php - залила его в корневую папку на хостинг
Все отлично открывается и проявлется
НО! Письма на почту ( с указанныи E-mail) Не приходят. Перебрасывает на страницу с надписью "Запрошенный ресурс не доступен"
Подскажите пожалуйста в чем может быть проблема?
Спасибо!
Наташа, с ( давнего) вашего позволения написала на вашу почту личку.
Очень надеюсь на ответ. Спасибо большое, что как всегда не отказали в помощи.
Все получилось, добавила по совету driver http://dbmast.ru/
полный адрес mail.php
Огромное Вам Спасибо за помощь, советы и ваш труд!!!
Марина.
Все проблемы с отправкой и кодировкой - РЕШЕНЫ!
Проблема была у хостинга ( их настойки)
СПАСИБО большое за вашу помощь и ваш труд! Вы делаете неоценимое дело для людей, которые еще не все знают о создании сайтов и всех примыкающих к этому функций!
С Уважением, Марина.
81111111111sa@yandex.ru Администратор ( т е в одну строчку слитно)
Подскажите пожалуйста, как сделать, чтобы данные выводились каждая на новой строке
81111111111
sa@yandex.ru
Администратор
Я искала по учебникам знак пробела в php, но ничего не проходит
Спасибо!
То есть вместо
$znach[2]." ".$znach[1]
нужно
$znach[2]."\n".$znach[1]
$znach[2]."\nФИО: ".$znach[1]
сделала вот так $message = $znach[2]."\n".$znach[3]."\n".$znach[1];
в письме отобразилось с пробелами, но не на отдельной сточке
sa@yandex.ru 89999999999 Администратор Ирина
В чем может быть ошибка?
И еще
В строчке < title >< /title > выдает ошибку, через перевод пишет, что PHP Предупреждение: Не удается изменить информацию в заголовке - заголовки уже прислал (выход начался в / главная / м /
xxxx / xxxxx.ru / public_html / почты / почте. PHP: 1) в / главная / м / xxxx /xxxxx.ru / public_html / почты / mail.php в строке 14
Спасибо!
В строчке после DOCTYPE html (наверное вам понятно про что я говорю)
Попробуйте вместо "\n" использовать
<br>
"Не удается изменить информацию в заголовке - заголовки уже прислал" - эх, не понимаю что это и как исправить
Про заголовки напишу на почту, может и вам это пригодится.
))))))))))) Еще вопрос.
Хочу добавить доп поле в форму и нужно позицию Название (товара например)
сделала name и ))))) выдало и имя и название одинаково. Подскажите пожалуйста как правильно прописать
в 1 => $_POST['name'],
а может у вас ссылочка есть на этот материал ( именно как прописывать позиции )
СПАСИБО!!!
заменить на
<div data-title="Например, Мария Петровна">Ваше имя: <input type='text' name='name' required /></div>
<div data-title="Например, самовар">Название товара: <input type='text' name='catalog' required /></div>
В скрипте
$znach = array(
1 => $_POST['name'],
2 => $_POST['tel'],
);
mail("name@yandex.ru", "заказ звонка ".$_SERVER['HTTP_REFERER'], $znach[2]." ".$znach[1]); // письмо на свой электронный ящик, измените на свой email
}
заменить на
$znach = array(
1 => $_POST['name'],
2 => $_POST['tel'],
3 => $_POST['catalog'],
);
mail("name@yandex.ru", "заказ звонка ".$_SERVER['HTTP_REFERER'], $znach[2]." ".$znach[1]." ".$znach[3]);
}
было два поля ( до моего сообщения вам) 1 => $_POST['name'], 2 => $_POST['tel'],
я сделала четыре 1 => $_POST['name'], 2 => $_POST['Email'], 3 => $_POST['tel'], 4 => $_POST['name'],
ведь правильно?! )))
Но не знала как прописать там, где name, Email и т д . Как прописывать значения . Вот теперь понятно - catalog
По второму совету, все правильно, именно со страницы нужного ему товара человек и будет нажимать эту ссылку
Я вашу форму немного расширила именно для использования как обратная связь. ВСЕ РАБОТАЕТ! )))
Если б вы знали, СКОЛЬКО я перелопатила информации, чтобы сделать независимую форму обратной связи. Вы ГЕНИЙ!
Минимум скрипта и стилей вашего кода и стильная форма готова.
Спасибо еще раз Наташа!
1 => $_POST['name'], 2 => $_POST['Email'], 3 => $_POST['tel'], 4 => $_POST['name'],
Зачем два раза использовать одинаковый name?
Те, у кого был блог на Blogger легко осваивают код ))
Вы ответили и суть я поняла (можно устанавливать любые значения) , а здесь забыла исправить - конечно в п4 catalog как вы и сказали. Нашла в инете значения такие
Time, datetime, number, address, City, fullname, head, Region day ну и т д .
Блог на Blogger есть (неплохой), но пока сейчас в замороженном виде, так как море интересного по созданию именно сайтов. Вот сейчас осваиваю webasyst и джумлу ))) Жутко интересно, особенно когда получается)))
Сейчас пытаюсь встроить позицию с выпадающим списком (очень нужно для выбора времени заказа авто)
HtML понимаю как сделать (
<s e l e ct name=day size=1> clas s="???"> (это должен быть выпадающий список или с прокруткой)
<option value=1>10.00</option>
<option value=2>11.00</option>....</s e lect>.)
А вот как в скрипт mail добавить, чтобы список отображался, никак не доходит. Тут у меня просто заело, я должна это освоить раз саму суть понимаю.
Спасибо.
Вопрос от новичков, если терпения на них хватит) Не могу разобраться, если можно пошагово:
1) Беру любую HTML страницу со своего сайта, называю ее zvonok.html, выкидываю все из body и заливаю туда Ваш код.
2) Создаю страницу mail.php, заливаю обе страницы в корень сайта.
3) Вставляю в нужное место на сайте заказать звонок.
А как мне связать zvonok.html и mail.php? а то у меня без содержания модальное окно получается)
(на label слитно комметарий ругается))
5 => $_POST['day'],
Дмитрий, доброе время суток. zvonok.html с mail.php связывается с помощью action в форме. Путь может быть прописан как абсолютный, так и относительный
<form method="post" action="mail.php">
<form method="post" action="http://shpargalkablog.ru/mail.php">
Код в комментариях пишите через форму http://shpargalkablog.ru/2010/12/napisat-kod-tekstom.html
Подробности всех исправлений я вам написала на почту, надеюсь вам это пригодится для статей. Понимаю теперь очень какой это труд!
Наташенька!!! Огромное вам Спасибо за вашу помощь и ваш ТРУД!
??????????
К слову, даже у браузеров косяков много, что говорить об CMS.
Подробности на почту. Спасибо еще раз!
С Уважением, Марина.
Так что, Наташа, вот такой опыт)))
Пошла дальше с почтой. Хочу, чтобы в обратном письме админу данные приходили в виде таблицы (css не проблема, настрою).
-----------начало-------------
12 => $_POST['time_to'],
13 => $_POST['min_to'],
);
$to = "xxxxxx8@mail.ru";
$subject = "=?utf-8?B?".base64_encode("Заказ звонка".$_SERVER['HTTP_REFERER'])."?=";
$headers = "Content-type: text/html; charset=utf-8 \r\n";
$message = $znach[1]. $znach[2]. $znach[3]. $znach[4]. $znach[5]. $znach[6]. $znach[7]. $znach[8]. $znach[9]. $znach[10]. $znach[11]. $znach[12]. $znach[13];
$subject = "Заказ звонка";
<table width='600' border='1' cellpadding='1' cellspacing='0'>
<tr>
<td>Имя заказчика</td><td>$name</td>
</tr><tr>
<td>Почтовый адрес</td><td>$Email</td>
</tr><tr>
--------------------тут код --------------------------
</tr><tr>
<td>Окончание аренды час:</td><td>$time_to</td>
</tr><tr>
<td>Окончание аренды минут:</td><td>$min_to</td>
</tr>
</table>";
mail($to, $subject, $message, $headers);
}
Header("Refresh: 8; URL=".$_SERVER['HTTP_REFERER']);
?>
Не проходит, белая страница. Перепробовала все. Никак Не подскажите где может быть ошибка? Спасибо!
"текст, текст, <table><tr><td>Имя заказчика<td>".$znach[1]."<tr><td>Почтовый адрес..."
Тороплюсь, чтобы скорей получилось вот иневнимательно написала в скрипте.
Сейчас попробую как вы сказали сделать. Вы как спасательный круг))), чуть что, стразу к вам))).
Спасибо. О результатах обязательно отпишусь)))
Ваши пояснения все учла и все получилось))) Еще раз Большое спасибо))) Марина.
Подскажите пожалуйста, как заменить текст на кнопку?
a.knopka {
пишите
.knopka {
Поздравляю вас с 8 марта! С нашим, законным праздничком))) Здоровья вам и успехов. Пусть все будет и будет - ВСЕ!
Марина.
вот так примерно приходят сообщения каждый день
Имя заказчика StevenHak
Почтовый адрес vgqyhdy@fremails.com
Номер телефона 123456
На какой день аренда
Время начала аренды: 21
Сообщение: По моему мнению Вы не правы. Я уверен. Могу отстоять свою позицию. Пишите мне в PM, поговорим. сайт http://balsharov.ru This situation is familiar to me. Let's discuss. Википедию как показатель гуманитарной креативности нации | Блог недовольный контентом украинских новостей блог
Спасибо.
Наташ, напишу в личку.
Спасибо. Марина.
Любая из кнопок. Но вопрос остался теперь только в выводом времени аренды в более достойном виде. А так, все на ура работает.
Спасибо, что как всегда не отказали в помощи)))
Марина.
Мы позвоним Вам в течении часа." Без имени! И на почту тоже не чего не пришло. А сделал я всё во инструкции. Помогите пожалуйста срочно! Кстате вот какой код выходит. $_POST['name'], 2 => $_POST['tel'], ); mail("vlad20032003@yandex.ru", "заказ звонка ".$_SERVER['HTTP_REFERER'], $znach[2]." ".$znach[1]); // письмо на свой электронный ящик, измените на свой email } Header("Refresh: 8; URL=".$_SERVER['HTTP_REFERER']); // спустя 8 секунд человек будет возвращён на предыдущий URL ?>
Ссылка на сайт с этим вот: http://sch597dopobr.ru/p18.html
У меня к вам вопросик.
ЕСТЬ <input type="checkbox" id="mail"/><label for="mail">заказать звонок</label>
Но без самих данных
<div id="popup">
<form method="post" action="mail.php">
<label for="mail" title="Отменить">?</label>
<div data-title="Например, Мария Петровна">Ваше имя: <input type='text' name='name' required /></div>
<div data-title="Например, 89270000000">Моб. телефон: <input type="tel" name='tel' required maxlength="11" value='8' pattern="8\d{10}"/></div>
<input type='submit' value='Заказать'/>
</form>
</div>
У меня ничего не получается. Т Е Я хочу на главную поставить ТОЛЬКО кнопку Заказать звонок ( без самого кода)
Но если убираю код, то окно с формой не проявляется. Сайт в разработке, но если нужно я его для вас открою.
Что я хочу - вставить только кнопку Заказать звонок на главную стр.
Как и куда нужно залить сам код??? Или по другому - как привязать к ссылке Заказать звонок сам код?
Спасибо !!! Марина.
Здравствуйте, Марина. Два варианта: или form иметь в теле страницы или другую страницу с формой вызывать с помощью window.open ( http://shpargalkablog.ru/2014/10/window-open-javascript.html - только начала писать ).
никак нельзя, ну например при помощи id или action или еще как как-то привязать именно ваше окно? Ведь я скрипт добила и все теперь отлично, но вот хочется не window.open
Спасибо!
С последним вопросом так пока ничего вышло. Но уж очень хочется сделать например на отдельной странице ( и в скрытом меню) саму форму ВАШУ))) а выводить ее на страницах только с помощью одной кнопки ( не нагружая страницу). А то у меня сейчас вот на этом сайте http://libostrov.ru на Главной справа наверху красная кнопка. А если посмотреть код страницы, то просто жуть.Вся форма на главной, а там и так много чего))) Сайт еще в яндекс не отдала, поэтому очень жду вашего ответа.
Может кроме iframe что-то придумаете)))))) Посмотрите пожалуйста на сайте. Очень хочется компактнее сделать на главной.Спасибо большое!
Буду использовать как есть. Спасибо большое!
form method="post" action="mail.php"
<select name="spisok">
<option value="здесь значение, которое придёт на почту">раз</option>
<option value="здесь значение, которое придёт на почту">два</option>
</select>
Это в PHP
if($_POST['name']){
$znach = array(
1 => $_POST['name'],
2 => $_POST['tel'],
3 => $_POST['spisok']
);
mail("name@yandex.ru", "заказ звонка ".$_SERVER['HTTP_REFERER'], $znach[2]." ".$znach[1]." ".$znach[3]);
Никак не пойм, что я делаю не так...
Сейчас стоит http://redconnect.ru/ - когда ставила, оказалось всё очень просто, да и специалист их помогал.
Пробую поставить Ваш, постоянно выдаёт какую-то ошибку и не работает. Как исправить?
arinarudakova86@gmail.com
Наиболее частые проблемы вызывает: в action укажите полный адрес, где лежит mail.ru, например, site.ru/papka/mail.ru
<form method="post" action="mail.php">
что сделать?
#mail:checked + label {}
Вроде попап окно должно появиться, а она не появляется. экран сереет а формы заказа звонка нет! Не пойму в чем ошибка.
Все вроде сделала как в статье...
Короче установить заказ звонка получилось. Но есть пару косяков. если не сложно гляньте в чем проблема.
Во первых посл отправки данных отображаются кракозяблили вместо "Ваша заявка...."
Во вторых. Хотелось бы все же сделать кнопкой а не словом с ссылкой.
Но я не совсем понимаю как это сделать. Вы даете ссылку http://jsfiddle.net/NMitra/33fy8nk0/
Но я не пойму как подключить скрипт.
Может где то писали уже об этом. поделитесь.
Спасибо заранее.
1) http://jsfiddle.net/NMitra/da29dmct/
#mail:checked + label {
all: initial;
}
2) http://jsfiddle.net/NMitra/da29dmct/1/
#mail:checked + label {
width: 100%;
height: 100%;
text-shadow: none;
border: none;
border-radius: 0;
box-shadow: none;
}
<label for="mail"><img src="http://4.bp.blogspot.com/-eJraU5lCufs/UFa8PpMUv8I/AAAAAAAADLQ/Y5SGHBd91-Q/s1600/smail-bolshoi-palets-vverh.gif" alt="Смайлик большой палец вверх" height="104" width="147" title="Отлично!"/></label>
И добавьте CSS
#mail:checked + label img {
visibility: hidden;
}
Подскажите пож-та как сделать чтобы форма выскакивала автоматически через заданное время как тут: http://shpargalkablog.ru/2013/06/popup.html
А то попробывала объеденить, не помогает :(
<script>
setTimeout(function() {document.getElementById('mail').checked = 'true'}, 1000);
</script>
Сделайте тот же feedback-form, только уберите лишние поля и смените id. Обратите тут http://css.shpargalkablog.ru/2015/12/httpshpargalkablogru201401feedback.html внимание на
if (array_key_exists('nameFF', $_POST)) {
сделали кнопку. все бы хорошо gamenn.ru НО
в dweaver все отобр хорошо. а по факту глюк...все выводится сразу и вместе?
что-то не подключилось?
подключил)
вопрос другой есть. не меняется цвет текста в кнопке(
#mail:checked + label {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 99;
color: rgba(255,255,255,1.00);
background: rgba(180,180,180,.9);
cursor: pointer;}
белым не становится текст(((
color: red;
}
по напрямую реализовал. к label цвет применил.