Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
eterfund-api-email
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
eterfund
eterfund-api-email
Commits
f640390c
Commit
f640390c
authored
Oct 01, 2018
by
Дмитрий Никулин
Committed by
Vitaly Lipatov
Oct 01, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add more detailed README
parent
63246987
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
81 additions
and
7 deletions
+81
-7
README.md
README.md
+81
-7
No files found.
README.md
View file @
f640390c
Using
# Checkemail
=====
Add
## 1. Установка
Для checkemail необходим jQuery. Если его нет на странице, то можете добавить:
```
<script type="text/javascript" src="//eterfund.ru/js/jquery/jquery-latest.min.js"></script>
<script type="text/javascript" src="//eterfund.ru/js/jquery/jquery-latest.min.js"></script>
```
Далее, добавьте сам checkemail (после jQuery):
```
<script type="text/javascript" src="//eterfund.ru/api/email/svcCheckEmail.js"></script>
<script type="text/javascript" src="//eterfund.ru/api/email/svcCheckEmail.js"></script>
```
## 2. Использование
Checkemail, по сути, состоит из трёх частей:
1.
Клиентский скрипт на JavaScript
2.
Серверный код вычисления хэша
3.
Код проверки хэша на сайте
to page with e-mail input field.
### 2.1 Настройка клиента
Mark input e-mail tag with class="svcCheckEmail"
Чтобы связать checkEmail с нужным полем на странице, задайте полю
класс svcCheckEmail:
```
<input type='email' class='svcCheckEmail'>
```
You can also add emailhash input field to form:
И добавьте скрытое поле в форму:
```
<input type="hidden" name="emailhash" value="valuable" />
<input type="hidden" name="emailhash" value="valuable" />
```
После этого checkEmail сам добавит нужные обработчики и всё должно заработать.
Checkemail будет обращаться к серверу и подставлять вычисленный хэш в скрытое поле.
### 2.2 Проверка на сервере
На сервере в обработчике формы вам нужно проверять значение emailhash.
Пример кода на PHP, который проверяет соответствие emailhash:
```
function get_client_ip()
{
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
function get_emailhash($email)
{
$http_referer = $_SERVER['HTTP_REFERER'];
$domain = parse_url($http_referer, PHP_URL_HOST);
$ip = get_client_ip();
# Due strange providers who change IP on every request
$net = preg_replace( '_(\d+)\.(\d+)\.(\d+)\.(\d+)$_', '$1.$2.$3', $ip );
return md5($domain.$net.$email);
}
$expectedEmailhash = get_emailhash($data['email']);
if ($data['emailhash'] != $expectedEmailhash) {
// Проверка не пройдена
}
```
Обратите внимание, что если вы используете обратный прокси (например, nginx), то
необходимо настроить проброс IP-адреса клиента через заголовок X-Forwarded-For.
It will fills with special hash you can check on the server side.
### 2.3 Дополнительные возможности
-
*Отключение стилей.*
Checkemail применяет стили к полю ввода, но иногда это мешает.
Чтобы отключить стили checkemail, добавьте класс svcCheckEmail-nostyle на
`<input>`
.
-
*Вызов checkemail вручную.*
Иногда необходимо вызвать checkemail вручную - например,
если форма отправляется через асинхронный запрос (XHR/fetch). Для этого есть метод
`window.checkEmail(callback)`
, где
`callback`
- функция вида
`function (valid) { ... }`
.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment