Blog
Kako dodati kontakt formu na GitHub Pages
· 3 min čitanja
GitHub Pages služi samo statičke fajlove - bez PHP-a, bez serverskog koda, bez ikakvog načina da primi POST forme. Zato je kontakt formi potreban spoljni endpoint kome će slati podatke. Evo tri realne opcije, i one verzije koja traje minut.
Opcija 1: form backend (preporučeno)
Usmerite action vaše forme na hostovani endpoint za forme:
<form action="https://formhook.app/f/fh_your-key" method="POST">
<label>Email <input type="email" name="email" required></label>
<label>Message <textarea name="message" required></textarea></label>
<button type="submit">Send</button>
</form>Uradite commit, pa push - gotovo. Unosi stižu u kontrolnu tablu i javljaju se na telefon push obaveštenjem. Spam se filtrira honeypot poljem i ograničenjima broja zahteva pre nego što uopšte stigne do vas. Ovo radi identično i za obične HTML repozitorijume i za Jekyll sajtove (nativni generator GitHub Pages-a - pogledajte Jekyll vodič za tematski include, ili vodič za običan HTML).
Prednosti: samo jedan atribut, JavaScript nije potreban, spam je pod kontrolom, unosi se čuvaju.
Mane: ovo je usluga treće strane - proverite ograničenja besplatnog paketa i politiku čuvanja podataka za onu koju izaberete. Besplatni paket Formhooka čuva unose zauvek.
Opcija 2: mailto: link
<a href="mailto:you@example.com">Email me</a>Iskreno, ali slabo rešenje: zavisi od toga da li posetilac ima podešen mejl klijent (na desktopu to sve ređe važi), izlaže vašu adresu skrejperima, ne pruža nikakvu zaštitu od spama i ne govori vam ništa o tome koliko ljudi odustane pre slanja. Sasvim u redu za hobi README stranicu; skupo za sve gde upiti znače novac. (Više o tom kompromisu u mailto naspram kontakt forme.)
Opcija 3: serverless funkcija negde drugde
Sajt možete zadržati na GitHub Pages i primati POST preko Cloudflare Worker-a ili sličnog rešenja. To radi - ali sada sami pišete i održavate prijemnik: validaciju, filtriranje spama, skladištenje, slanje imejlova i CORS. Time ste ponovo uveli tačno onaj backend koji vam je GitHub Pages omogućavao da izbegnete. Razumno ako vam to prija; nepotrebno ako ne.
AJAX nadogradnja (opciono)
Obična HTML forma pri slanju napušta stranicu. Da biste ostali na stranici:
<script>
document.querySelector("form").addEventListener("submit", async (e) => {
e.preventDefault();
const res = await fetch(e.target.action, {
method: "POST",
body: new FormData(e.target),
headers: { Accept: "application/json" },
});
e.target.outerHTML = res.ok
? "<p>Thanks - message sent.</p>"
: "<p>Something went wrong. Please email us directly.</p>";
});
</script>Nema build koraka, nema zavisnosti - radi u običnom GitHub Pages repozitorijumu.
Napomena o prilagođenom domenu
Ako vaš Pages sajt radi na prilagođenom domenu, proverite da li podešavanja vaše form usluge po formi (poput CORS liste dozvoljenih domena) uključuju taj domen, a ne samo username.github.io. U Formhooku je to samo jedno polje u podešavanjima forme.
To je cela priča: GitHub Pages se brine o vašem sajtu, a form endpoint se brine o jedinoj stvari koju on ne može. Počnite besplatno i forma će biti aktivna pre nego što se završi vaš sledeći git push.
Funkcionalna forma u jednoj liniji
Hostovano u EU, unosi se čuvaju zauvek, push obaveštenja na svakom paketu.
Počnite besplatnoBez kreditne kartice · pročitajte dokumentaciju
Nastavite čitanje
- Šta je form backend? (I kada vam je potreban)Form backend prima, čuva i prosleđuje unose sa formi na vašem sajtu, tako da ne morate da održavate server. Evo kako rade i kada vam je jedan potreban.
- Mailto linkovi protiv kontakt formi: ko gubi manje klijenata?Mailto linkovi tiho ne uspevaju bez podešenog mejl klijenta i izlažu adresu spam botovima. Kada je mailto u redu, a kada se isplati kontakt forma.
- Otpremanje fajlova na statičkom sajtu: vaše prave opcijeStatički hosting ne prima fajlove — ali vaše forme mogu. Kako multipart otpremanje radi preko bekenda za forme, uz limite, bezbednost i GDPR skladištenje.