Создание простой контактной формы с помощью Angularjs и php. Решение проблемы: Извините, произошла ошибка в Инстаграм Настройте приложение для идентификации
Очень удобно всегда знать какой конкретно версии та или иная сборка проекта. Для этого обычно вводят номер версии, состоящий из нескольких цифр. Я являюсь сторонником структуры состоящей из 4 цифр, вида:
Все вместе это и формирует полное именование версии (Major.Minor.Pathch.Build):
Некоторые используют в качестве build уникальное числовое значение, которое увеличивается каждый раз, например, при ночной сборке. Я считаю, что никакого смысла в этом нет – гораздо удобнее привязать данный номер к ревизии в репозитории. Я использую Subversion и CMake, поэтому продемонстрирую как можно автоматизировать проставлении версии билда с этими инструментами.
Первое – необходимо добавить заголовочный файл в проект (например, version.h):
#include #include namespace Version { const std:: string & AsText() ; boost:: uint64_t AsNumber() ; } |
Здесь находится простой интерфейс, через который из программы можно получить номер полной версии в текстовом виде или в виде уникального целочисленного идентификатора.
Теперь приведу содержимое version.cpp:
#include
#include "../version.h"
namespace
{
const
boost::
uint8_t
MAJOR =
4
;
const
boost::
uint16_t
MINOR =
6
;
const
boost::
uint16_t
PATCH =
12
;
const
boost::
uint32_t
BUILD =
589
;
// Это значение будет изменено автоматически
}
const
std::
string
&
Version::
AsText
()
{
static
const
std::
string
text =
boost::
str
(boost::
format
("%1%.%2%.%3%.%4%"
)
%
static_cast
<
unsigned
>
(MAJOR)
%
MINOR %
PATCH %
BUILD)
;
return
text;
}
boost::
uint64_t
Version::
AsNumber
()
{
BOOST_STATIC_ASSERT(BUILD <
0xFFFFFF
)
;
using
namespace
boost;
const
size_t
size =
sizeof
(uint64_t
)
;
static
const
boost::
uint64_t
number =
(static_cast
<
uint64_t
>
(MAJOR)
(MINOR)
(PATCH)
name;
echo "Email: " . $data->email;
echo "Message: " . $data->message;
// sned an email
$to = $data->email;
$subject = "Тестовое письмо сайт для тестирования angularjs контактной формы";
$message = $data->message;
$headers = "From: " . $data->name .. "\r\n" .. "\r\n" .
"X-Mailer: PHP/" . phpversion();
//функция PHP mail для отправки электронной почты на адрес электронной почты
mail($to, $subject, $message, $headers);
?>
Для любого web-разработчика пока нет более серьезной проблемы, как полная кроссбраузерность его продукта. Наверное, это одна из основных задач хорошего специалиста: добиться того, чтобы его сайт всегда правильно отображался во всех браузерах. Параметр required , который иногда используется для input, не работает в древних IE, что просто нельзя так оставить. Пользователи-пенсионеры, которые до сих пор пользуются IE6 должны одинаково легко работать с вашим сайтом, наряду с пользователями Google Chrome последней версии. Кто, кроме web-разработчиков, о них может позаботиться. О наболевшем, о Internet ExplorerДля нормальных браузеров, к которым можно отнести Firefox, Opera и Google Chrome, эта задача относительно легка. Даже давние версии этих браузеров одинаково хорошо отображают html-код, если в нем конечно же не используются какие-то новые технологии. Но чтобы добиться подобного в браузерах семейства Internet Explorer, требуются просто титанические усилия. Каждая версия браузера Internet Exlorer обладает своей, уникальной тупостью. Что работает в IE6, может как положено не работать в IE7 и наоборот. Этот зоопарк компании Microsoft не удалось побороть даже в самой последней версии своего браузера. Понять почему разработчики браузеров не могут просто взять открыть и почитать стандарты W3C для сайтостроения, я не могу. Поэтому мне, как web-разработчику, приходится выступать некоторой «прослойкой» между капризными браузерами и требующими знаний и зрелищ посетителями сайтов. И замечательно, что web-разработчикам пока это удается. Дак, как же заставить работать required в старых версиях IE?На помощь нам приходит JS. Раньше я терпеть его не мог, а теперь не вижу дальнейшего пути без него на просторе «правильного» WEB . Решение приведенное ниже я выдумал не сам, а взял с буржуйского блога. Так как я жадный, а блог буржуйский, я не стану приводить на него ссылку. За все у нас будет отвечать функция fnCheckFields() . Поместите на вашем сайте JS-код: function fnCheckFields(form_obj){ var error_msg = "Пожалуйста, заполните все обязательные поля."; var is_error = false; for (var i = 0; form_obj_elem = form_obj.elements[i]; i++) if (form_obj_elem.type "input" || form_obj_elem.type "text") if (form_obj_elem.getAttribute("required") && !form_obj_elem.value) is_error = true; if (is_error) alert(error_msg); return !is_error; } Обычно рекомендуют размещать его между html-тегами HEAD в начале страницы, но я бы рекомендовал все же размещать его в самом низу страницы до закрывающегося тега BODY . Таким образом JS меньше влияет на скорость загрузки страницы. Окно ввода, где должен вводиться обязательный параметр, на html-языке должно выглядеть так:
Этот скрипт работает очень просто: после нажатия кнопки Отправить , скрипт проверяет все инпуты на наличие параметра required и если находит его, то соответственно смотрит на введенное значение этого поля. Если в такой инпут ничего не введено, то выводится предупреждающее окно о необходимости ввода. Данные соответственно никуда не отправляются. Замечательно еще и то, что если у Вас нормальный браузер, который уже научился понимать этот параметр как положено, такого предупреждающего окна не всплывет и будут работать стандартные инструменты обработки параметра required для вашего браузера. Рассказать в соц. сетях Почему мне установили эту формуВ настоящий момент на ваш сайт проводится Brute-force атака. Brute-force атака — это атака по подбору паролей. В данном случае происходит подбор пароля к административной панели вашего сайта. Чтобы не допустить взлома вашего сайта и повысить его безопасность, нами была установлена дополнительная защита. Как я теперь могу получить доступ к админ-панели сайтаТеперь при доступе к административной панели вашего сайта (на Joomla или WordPress) будет появляться дополнительное окно ввода логина и пароля с надписью «please use your control panel password». В качестве логина необходимо ввести логин вашей услуги хостинга, он имеет вид «u1234567» . В качестве пароля — текущий пароль к вашей услуге хостинга. После прохождения базовой HTTP-аутентификации перед вами откроется стандартное поле для авторизация в админ-панели вашего сайта. Теперь уже вам нужно будет ввести логин и пароль администратора сайта. Как работает базовая HTTP-аутентификация При вводе логина-пароля в окно базовой аутентификации значение логина и хеша пароля будут сравниваться со значениями в специальном файле ~/etc/users , доступным в панели управления хостингом. Содержимое файла выглядит примерно так: «u1234567:dm48bspxIO3rg» . Где «u1234567» — логин, а «dm48bspxIO3rg» — хеш пароля (обратите внимание: только хеш, а не сам пароль!). Хеш пароля — это результат преобразование пароля по определенному алгоритму. Таким образом, когда вы вводите логин и пароль в окно базовой аутентификации, от введённого пароля берётся хеш и сравнивается со значением хеша в файле ~/etc/users . Если значения совпадают, вы проходите аутентификацию. У меня не получается пройти базовую аутентификацию Вероятно, вы вводите неверный пароль. Установите новый пароль для базовой аутентификации: Если вы прошли базовую аутентификацию но не можете войти непосредственно в админ-панель сайта Joomla или WordPress, воспользуйтесь справкой: Для повышения защиты сайта:
Чтобы убрать форму базовой HTTP-аутентификации: AuthType Basic AuthName "please use your control panel password" AuthUserFile .../users Require valid-user Для комментирования строки поставьте символ решётки («#») в начало строки, вот так. |