docs: add contact form section to CLAUDE.md
This commit is contained in:
31
CLAUDE.md
31
CLAUDE.md
@@ -52,3 +52,34 @@ XEOF'
|
|||||||
- Static export — API routes не работают; форма идёт на `/api/contact.php` (PHP)
|
- Static export — API routes не работают; форма идёт на `/api/contact.php` (PHP)
|
||||||
- `trailingSlash: true` — все URL заканчиваются на `/`
|
- `trailingSlash: true` — все URL заканчиваются на `/`
|
||||||
- Turnstile SITE_KEY: `0x4AAAAAACrQS-dAb7E9RGPQ`
|
- Turnstile SITE_KEY: `0x4AAAAAACrQS-dAb7E9RGPQ`
|
||||||
|
|
||||||
|
## Контактная форма
|
||||||
|
|
||||||
|
### Архитектура
|
||||||
|
|
||||||
|
- **Frontend:** `src/app/[lang]/kontakty/page.tsx` — поля: имя*, компания, email, телефон, сообщение* + Turnstile widget
|
||||||
|
- **Backend:** `public/api/contact.php` → деплоится в `public_html/api/contact.php`
|
||||||
|
- **Email:** HTML-формат, `noreply@sag24.ru` → `info@sag24.ru` через mx.hhivp.com:587 (raw fsockopen SMTP)
|
||||||
|
- **Telegram:** бот `vg_contact_bot`, чат `-5230603582`, через CF Worker `https://tg-relay.it-resheniya-2018.workers.dev/bot`
|
||||||
|
- **Защита:** rate limit 5 req/min (temp files), Turnstile обязательный, htmlspecialchars()
|
||||||
|
|
||||||
|
### Секреты (НЕ в git!)
|
||||||
|
|
||||||
|
Файл: `/opt/www/sag24.ru/contact-config.php` (вне вебрута, права 640 www-data)
|
||||||
|
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
$BOT_TOKEN = '...';
|
||||||
|
$CHAT_ID = '-5230603582';
|
||||||
|
$TURNSTILE_SECRET = '0x4AAAAAACrQSySNBa2C2FWQq2ty1_UyLhc';
|
||||||
|
$smtp_pass = '...';
|
||||||
|
```
|
||||||
|
|
||||||
|
При пересоздании сервера — воссоздать этот файл вручную через SSH.
|
||||||
|
|
||||||
|
### Изменения
|
||||||
|
|
||||||
|
#### 2026-03-21: Секреты в include-файл, HTML email
|
||||||
|
|
||||||
|
- Хардкоженные секреты вынесены в `/opt/www/sag24.ru/contact-config.php`
|
||||||
|
- Email переведён на HTML формат (text/html)
|
||||||
|
|||||||
Reference in New Issue
Block a user